Хостинг серверов Minecraft playvds.com
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Туториал Всё о "Failed to bind to port" и не только

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем Dymeth, 30 апр 2019.

  1. Автор темы
    Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    Dymeth
    Предисловие
    Так бывает, что вы хотите запустить игровой сервер для друзей со своего домашнего компьютера, но сталкиваетесь со столь популярной ошибкой - Failed to bind to port.
    Казалось бы, материалов на эту тему полно, но ни один из них не помог решить проблему.
    Что же, перед вами моя статья, и она поможет разобраться в вопросе.
    Однако в этот раз придётся думать чуть больше, чем тогда, когда вы пытались открыть порт при помощи скайпа.
    На самом деле, этот материал не только об ошибке из заголовка.
    Следующая информация даст вам базовые представления о том, что и как работает в вашем же компьютере, в вашей же квартире и в нашем интернете.
    Кому-то, уверен, статья поможет запустить игровой сервер.
    А кому-то, возможно, откроет глаза на что-то более интересное и важное.
    В любом случае, надеюсь, я смогу сэкономить время многим людям.

    Я не претендую на звание мудрого старца, а предоставленная мной информация не является истиной в последней инстанции.
    Я не имею специального технического образования в сфере. И, как и любой другой человек, могу ошибаться.
    Если вы уверены, что я не прав в чём-либо - просто напишите об этом с необходимыми пояснениями. Я всегда готов разобраться в ситуации и признать свои ошибки.
    Также я буду рад предложениям дополнить статью вашими материалами.

    В далёком 2013-м я захотел запустить игровой сервер "для друзей".
    Сколько я не пытался следовать различным гайдам - результат был неутешительный.
    Тогда я был полностью уверен, что делаю что-то не так.
    К сожалению, тогда я так и не наткнулся ни на один сайт, который объяснил бы, что я бьюсь головой в железную дверь.
    Проще говоря, в моей ситуации не было нормальной возможности запустить сервер во внешней сети, но об этом позже.
    Если бы у меня тогда была эта статья - я бы разобрался со всем буквально за час, а не тратил бы недели на тщетные попытки поиграть с друзьями.
    Конечно, уже тогда был любимый Хамачи, но его 3 или даже 5 слотов нам явно не хватало.
    Впрочем, обо всё по порядку.

    Что же, начнём с того, что определимся, на какому порту будет работать наш сервер.
    По большому счёту это не имеет никакого значения.
    Поэтому предлагаю стандартный для Java версии - 25565.
    Именно он будет использоваться мной во всех объяснениях и примерах.

    Поехали дальше.
    Давайте сразу разберёмся с тем, имеется ли у нас в принципе возможность сделать сервер доступным во внешней сети.
    Для этого нужно понять, имеется ли у нас выделенный IP-адрес.
    Выделенный - значит наш персональный.
    Выделенный IP выдаётся только одному лицу - только для нашей квартиры, например.
    Дело в том, что уже сейчас IPv4-адресов на всех не хватает, из-за этого за одним реальным адресом может находиться несколько лиц.
    Под одним IP-адресом в сеть могут попадать сразу целые дома, улицы или даже небольшие города.
    Представьте, что один из таких "коммунальных квартирантов" запустит сервер.
    Как мы по одному лишь IP-адресу поймём, что нужно попасть именно к нему?
    Напомню, что за этим же IP могут скрываться ещё десятки, а то и сотни других квартир.

    Чисто технически можно реализовать сервер даже в таких условиях - потребуется некий "проброс порта" (об этом ниже).
    Но ни один провайдер не пойдёт на подобные ухищрения - если только за хорошую оплату.
    Однако обычно провайдеры за дополнительные деньги предлагают услугу выделенного айпи-адреса.
    Поэтому в 99% случаев для поднятия сервера наш вариант - выделенный адрес.
    Такие адреса зачастую называют белыми или прямыми, хотя мне такие названия не по душе из-за несодержательности.

    Обязательно к прочтению:
    Очень прошу не путать "Выделенный/белый IP" и "Статический IP".
    Это совершенно разные понятия.
    Судя названию, выделенный - это персональный.
    А статический - тот, который не меняется со временам.
    Даже если ваш адрес является статическим, и никогда не меняется - это не означает, что он является выделенным.
    И, соответственно, не означает, что вы можете запускать свой сервер в глобальную сеть.
    Опять же, целый дом из сотен и тысяч квартир может годами пользоваться одним и тем же единственным IPv4-адресом.
    И ни один из жильцов при этом не сможет сделать доступным свой сервер из внешней сети.

    Собственно, как конкретно проверить, является ли ваш IP выделенным?
    Всё довольно просто - нужно сравнить тот адрес, что выдал нам провайдер с тем адресом, который используется при выходе во внешнюю сеть.

    Наш внешний адрес мы можем посмотреть, например, тут: 2ip.ru
    Именно под внешним адресом нас видят все сайты, другие сервера и сервисы.
    Именно по этому адресу к нам будут подключаться люди на наш сервер.

    Адрес, выданный провайдером, нужно смотреть на том устройстве, куда, собственно, втыкается провод от провайдера.

    Думаю, у большинства людей сейчас этим устройством является роутер.
    Собственно, заходим туда и находим раздел IP или DHCP.
    Для всех роутеров это будет выглядеть по-разному, но лично у меня вот так:
    upload_2019-4-30_5-14-8.png
    Иногда IP-адрес загружается не автоматически, а настраивается вами вручную при подключении интернета - это не столь важно.

    Видел и такое, что провод от провайдера втыкается сразу в компьютер.
    Тут разобраться можно быстрее, потому что всё универсально.
    Ну, по крайней мере для Windows...
    Открываем cmd, прописываем команду ipconfig и видим список сетевых интерфейсов своего компьютера.
    Нас интересует "Адаптер Ethernet", если мы подключены по проводу и "Адаптер WiFi/беспроводный сети", если подключены без лапши.
    Названия могут отличаться, но суть везде одна. Главное с Bluetooth не спутайте.
    Теперь нужна строка "IPv4-адрес" - это и будет адрес, выданный провайдером (или вашем же оборудованием, если подключены через него).
    Выглядеть будет примерно так:
    upload_2019-4-30_5-14-18.png

    Про свитчи, патчи и прочие приблуды спрашивать не нужно. Думаю, вы и сами всё понимаете.

    Собственно, теперь у нас есть адрес от провайдера и наш внешний адрес.
    Теперь, как я писал выше, их нужно просто сравнить.
    Поздравляю, у вас выделенный адрес и вы можете без проблем организовать свой сервер во внешней сети.
    Вы можете продолжать читать материал, следующая информация для вас.
    Что же, у меня плохие новости.
    Видимо, вам придется заказывать у провайдера услугу выделенного айпи.
    Вероятно, адрес, выданный вам провайдером, попадает в один из этих диапазонов:
    10.0.0.0 — 10.255.255.255
    100.64.0.0 — 100.127.255.255
    172.16.0.0 — 172.31.255.255
    192.168.0.0 — 192.168.255.255
    Не исключено, что прямо сейчас ваш сосед - Вася из 5Б - оскорбляет админа на вашем любимом сервере майнкрафта.
    И если его отправят в бан по IP - вы тоже не сможете построить свою коробку возле спауна.
    Какая жалость.
    Впрочем, вы знаете, что делать.
    Васю, конечно, искать не стоит, а вот заказать выделенный IP - вполне можно.
    Заодно и свой сервер удастся запустить.
    А пока такой возможности нет - боюсь, эта статья не для вас.

    В 2013-м я как раз оказался в ситуации, когда провайдер пожадничал моей семье выделенный IP-адрес.
    С вероятностью 100% два адреса не совпали бы, если бы тогда их нашёл и сравнил.
    К сожалению, я не так быстро осознал всю плачевность своей ситуации.
    Можно было бы поставить Хамачи и успокоиться.
    Но я продолжил искать варианты решения своего вопроса, пропустив самый важный шаг - проверка наличия выделенного IP.
    К сожалению, тогда я потратил ещё какое-то время на разборки с пробросом портов на роутере, открытием портов при помощи скайпа и юторрента.
    Тогда я не понимал, что все эти действия не имеют ни малейшего смысла.
    Поэтому поздравляю, у вас есть эта статья, а значит есть возможность не тупить из-за нехватки знаний.

    Теперь, когда вы уверены, что у вас выделенный адрес, вы готовы запустить сервер во внешнюю сеть "здесь и сейчас".
    Но не всё так просто, если вы пользуетесь, например, своим роутером.
    Проецируем ситуацию с кучей жильцов дома на вашу квартиру.
    Теперь уже за вашим роутером могут скрываться несколько устройств.
    Телефоны ваших родственников, ваш компьютер или ноутбук, планшет рыбки и всё остальное, что подключено к домашнему интернету.

    Тут на помощь приходит проброс портов.
    Условно говоря, необходимо настроить роутер таким образом, чтобы при получении сигнала на 25565 порт он чётко понимал, что этот сигнал нужно перенаправить на конкретное устройство.
    Например, на ваш ноутбук.
    Теперь все, кто "стучится" на роутер по 25565 порту - отправляется на наш ноутбук, потому что роутер отправил "гостей" туда.
    Надеюсь, суть вы уловили.
    Конкретную инструкцию по пробросу не даю, т.к. всё, опять же, зависит от модели вашего устройства.
    Информации в интернете полно, думаю, справитесь.

    Теперь, казалось бы, все запросы должны приходить на наш компьютер и прямиком на наш сервер.
    Но нет... Осталась последняя преграда - фаервол (он же сетевой фильтр и брандмауэр на ОС Windows).
    Это специальная программа, которая защищает компьютер от внешнего воздействия.
    Это крайне важно, если компьютер подключён непосредственно ко внешней сети, а не через защищённый доверенный роутер, например.
    Условно говоря, фаервол - это сторожевая собака на страже вашего компьютера.
    Назначение фаервола в том, чтобы пропускать лишь тот интернет-трафик, который не сможет принести вреда.
    Зачастую фаерволы запрещают абсолютно всю входящую информацию на домашних компьютерах, т.к. обычно такие компьютеры не используются в качестве серверов.
    Что же, наша задача - разрешить входящие подключения на порт 25565.
    Обращаю внимание, что фаервол может находиться как на уровне роутера, так и на уровне компьютера (обычно и там, и там).
    Подробнее о том, как конкретно настроить разрешение порта - можно почитать в интернете.
    Опять же, существует огромное множество роутеров, операционных систем и антивирусных программ (которые тоже зачастую фильтруют сетевой трафик).
    Ищите то, что подходит именно вам.

    Вы, наверно, уже успели подумать, что сообщение "Failed to bind to port" из заголовка темы - это кликбейт?
    Не тут-то было!
    Решение конкретно этой проблемы можно описать одним предложением:
    "Уберите из server.properties значение параметра server-ip= - оставьте его пустым"
    Собственно, это всё.
    Скорее всего, вы не разобрались в вопросе, поэтому вписали туда неверное значение - свой адрес с 2ip.ru, например.
    Самым корректным значением параметра является то, что было там изначально - это отсутствие значения.
    Ещё раз - айпи в server.properties указывать не нужно.
    В 99% процентах случаев это не требуется, если вы обычный пользователь обычного домашнего интернета.
    Удивлены?
    Возможно, когда-нибудь я расскажу о том, почему это работает именно так.
    А так же о том, что туда всё же можно вписать, если уж прям хочется.

    Ну и, справедливости ради, стоит упомянуть ещё о том, что порт действительно может быть занят другой программой.
    Но, как правило, этого не происходит, если вы не суёте свои руки в настройки программ по типу скайпа и юторрента.
    Честно откровенно, я ещё ни разу за 20 лет своей жизни не видел, чтобы на стандартном 25565 порту работало что-то кроме сервера майнкрафта.
    В целом, оно и не должно.
    Порт занят другим приложением?
    Меняете в этом приложении порт или вовсе завершаете приложение.
    Думаю, больше разжёвывать этот момент не имеет смысла.
    В интернете полно однообразных статей про "Failed to bind to port", в которых вам всё подробно об этом расскажут.

    По итогу имеем 5 основных причин проблем неработоспособности сервера:
    1) Отсутствие выделенного IP-адреса
    2) Неправильная маршрутизация внутри сети - отсутствие проброса или других настроек
    3) Фильтрация трафика на любом из этапов - роутер/ос/антивирус
    4) Неверное заполнение server-ip в server.properties
    5) Занятость порта другой программой

    Собственно, на этом всё.

    Статью подготовил ваш покорный слуга Dymeth специально для русскоязычного сообщества RuBukkit.org

    Есть ли вопросы по прочитанному материалу?
    Стоит ли мне продолжать писать?
    Если так - о чём ещё стоит рассказать?

    В будущем, если будет время и желание, я займусь (или не займусь) следующими статьями:
    1) Какой IP нужно указывать в server.properties? (разница 0.0.0.0, 127.0.0.1 и localhost, пара слов об интерфейсах)
    2) Принципы работы Хамачи, Ngrok и подобных сервисов (+пара слов о VPN и хостингах и серверах)
    3) Как найти роутер и попасть в него, пара советов по настройке
    4) Зачем вообще указывать IP в server.properties? (+пара слов о нескольких адресах на одном сервере)
    5) Несколько слов о DynDNS и подобных сервисах (+возможно поговорим о доменах)
    6) Ещё чуть-чуть о ситуации с IPv6
     
    Последнее редактирование: 30 апр 2019
  2. Mr Hosting
  3. Автор темы
    Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    Dymeth
    Резерв
     
  4. Flajakay

    Flajakay Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    Flajakay
    Побольше бы таких крутых гайдов))
     
  5. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Опоздал лет на 5. Уже никто дома не хостит.
     
  6. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    imDaniX
    Недавно здесь был паренек с такой проблемой. Пусть будет, в конце концов - может кому и пригодится.
     
  7. Автор темы
    Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    Dymeth
    Почему бы и не похостить сервер для друзей на своём компе?
    Более того, на форуме регулярно всплывают вопросы о том, почему же сервер не запускается или недоступен. Правда модер их быстро чистит.
    Да и сама статья немного шире, чем просто о майнкрафте
     
  8. GoodCoder

    GoodCoder Активный участник Пользователь

    Баллы:
    76
    Никогда не сталкивался. Но рукожопы, которым не терпится IP сервера прописать в конфиге, чего делать НЕ нужно, сталкиваются.
    Проблема число локального характера и решается за 5 мин. с помощью программы Proccess Hacker. Он поможет узнать, какая программа заняла порт.
     

Поделиться этой страницей