Порты Killing Floor и NAT (port forwarding)
Если сервер работает у вас, но друзья не могут зайти, почти всегда это сеть: NAT, firewall или port forwarding.
Эта страница не про "магические цифры", а про правильную логику и чек-лист, который решает большинство кейсов.
Простая модель (что должно быть правдой)
Чтобы друг из интернета смог зайти на ваш сервер:
- Сервер должен слушать фиксированный порт (не случайный).
- Роутер должен пробросить этот порт на ПК-хост (если хостите дома).
- Firewall должен разрешать входящий трафик на этот порт.
- У вас должен быть доступный публичный IP (иногда у провайдера CGNAT).
Чек-лист по шагам
1) Выберите фиксированный порт сервера
Не оставляйте порт "как получится". Используйте фиксированный game port в конфиге сервера.
Если не уверены, где это настраивается, начните с гайда:
2) Разрешите в firewall (на ПК-хосте)
В Windows при первом запуске часто появляется запрос firewall. Если вы его пропустили:
- Разрешите серверный процесс в Windows Firewall (Private/Public по ситуации).
- Если у вас сторонний firewall, добавьте правило для входящего трафика по порту сервера (обычно UDP, зависит от настроек).
3) Настройте port forwarding на роутере (если хостите дома)
Создайте правило проброса порта:
- Внешний порт: выбранный порт сервера
- Внутренний IP: LAN IP ПК-хоста
- Внутренний порт: тот же порт
- Протокол: обычно UDP (зависит от конфига)
Важно:
- Закрепите LAN IP за ПК (DHCP reservation), иначе после перезагрузки роутера все может "сломаться".
MikroTik RouterOS. В теме «Помогите открыть порты» на форуме killingfloor.ru порты на MikroTik RouterOS v5.12 не открывались через Firewall. Ответ Flack: нужен именно проброс (port-forwarding). В общих настройках: цепь DST_NAT, Dst Addr. - внешний адрес, Port - 7707, протокол - UDP; в Action: dst NAT, адрес - локальный IP сервера, dst port - 7707.
4) Проверьте публичную доступность (CGNAT)
Если firewall и forwarding настроены, но никто не может зайти, провайдер может использовать CGNAT.
Признаки:
- На роутере нет реального публичного IPv4.
- Проброс портов не дает результата.
Тогда варианты:
- хостить на VPS с публичным IP
- запросить у провайдера услугу публичного IP
- использовать готовые community сервера
- пусть хостит друг, у которого провайдер даёт публичный IP, или играйте через виртуальную сеть — см. Hamachi (по теме «Как обойти NAT?» с форума killingfloor.ru)
Если IP меняется, а игрокам нужен постоянный адрес, привяжите к нему доменное имя: купленный домен на статическом IP или бесплатный динамический DNS вроде No-IP, который обновляет запись сам.
Порты KF и правило в брандмауэре Windows
По теме «Проверяем/Открываем порты на Windows XP/7» на форуме killingfloor.ru (Винни, 2011–2013).
Порты, которые в теме предлагается открыть для KF:
7707;7709 - UDP (Game).
7708;7710 - UDP (Query).
7717;7719 - UDP (GameSpy).
8075; 8077 - TCP (WebAdmin).
20560; 20562 - UDP & TCP (Steam).
28852; 28854 - UDP & TCP (Master Server Browser).
Порт указывайте тот, что выставлен в игре; стандартный — 7707.
Windows 7:
- Панель управления → Брандмауэр Windows (если он выключен, включите его).
- «Дополнительные параметры» → «Правила для входящих подключений» → «Создать правило».
- Выберите «Для порта», затем протокол TCP или UDP (лучше создать правило для обоих по очереди) и «Определенные локальные порты», впишите порты из списка выше.
- «Разрешить подключение», отметьте все профили, дайте правилу имя и нажмите «Готово».
Windows XP: Пуск → Панель управления → Сеть и подключения к Интернету → Брандмауэр Windows → Исключения → Добавить порт. Назовите исключение, например, KillingFloorServer, укажите порт и добавьте его двумя отдельными исключениями — одно для TCP, другое для UDP. Сохраните и перезагрузите компьютер.
Если порты всё равно закрыты:
- Их может блокировать антивирус. Для Eset NOD32 в теме советуют временно отключить защиту и файервол.
- Если не помог и антивирус, дело, скорее всего, в провайдере.
- В некоторых роутерах есть функция DMZ: она открывает в роутере все порты, но для одного компьютера.
- Если перевести модем в режим моста, все порты будут открыты автоматически; результат можно проверить онлайн-сканером портов.
Быстрая диагностика
Симптом: по LAN заходит, а из интернета нет
Почти всегда port forwarding или CGNAT.
Симптом: один друг заходит, другой нет
Это может быть ограничение на их стороне (их сеть/firewall). Быстрый тест:
- пусть попробуют зайти с другой сети (например, мобильная точка доступа).
Симптом: сервер виден в браузере, но войти нельзя
Видимость не всегда означает корректный доступ. Проверьте firewall и убедитесь, что сервер реально слушает порт.
Пинг до IP:7707 не проходит
Это ничего не значит. Из темы «Висит подключение» (форум killingfloor.ru): порт 7707 работает по UDP, а ping использует ICMP, поэтому порты им не проверяются. По пингу можно узнать максимум то, отвечает ли на него роутер.
Два сервера за одним NAT, в списке «Интернет» виден только один
Из темы «Проблема с серверами Killing Floor в одном NATе» (форум killingfloor.ru): два сервера на разных машинах (виртуалках) за одним роутером и одним внешним IP.
- Одинаковых портов у таких серверов быть не может: один порт открывается только на один внутренний IP. Каждому серверу нужны свои порты, и все их нужно пробросить; первые три (игровой, query, WebAdmin) прописываются в
killingfloor.iniкаждого сервера. - Автор темы выяснил, что общий порт Steam (
20560) может быть одним на всех, а порт мастер-сервера у каждого сервера должен быть свой. - Пробрасывайте порт на тот же номер, что слушает сервер. У автора внешний 7707 был переназначен на внутренний 7607: приём шёл через 7607, а отправка по-прежнему по 7707, и из-за этого сервер не появлялся в списке.
Мини-сценарий (типично)
Хост пробросил порт, но не закрепил LAN IP за ПК. День работает, потом после перезагрузки роутера ПК получает новый IP и проброс перестает совпадать. DHCP reservation решает проблему навсегда.