Проброс портов без боли: NAT, белый IP, CGNAT и почему порт не открывается

Проброс портов без боли: NAT, белый IP, CGNAT и почему порт не открывается

С пробросом портов многие ссорятся уже на первом шаге. Правило в роутере создано, галочка включена, внешний адрес найден, а сервис снаружи все равно недоступен. В такие моменты кажется, что роутер издевается. На деле схема почти всегда ломается в одном из трех мест. Либо провайдер посадил подключение за CGNAT, либо дома получился двойной NAT, либо сервис внутри сети никто толком не подготовил. 

Логика проброса простая. NAT прячет домашние устройства за одним внешним адресом, поэтому входящий запрос роутер не может отправить наугад. Правило port forwarding как раз говорит роутеру, куда переслать трафик с конкретного внешнего порта. Если правило ведет на нужный локальный IP, приложение слушает нужный порт, а провайдер не мешает входящему трафику, схема работает без всякой мистики. 

Проброс портов на роутере

Первое, что нужно проверить, какой адрес роутер получает на WAN. Для проброса  портов нужен публичный, то есть белый IP. Keenetic прямо пишет, что port forwarding работает только при публичном адресе на интерфейсе выхода в интернет. ASUS говорит то же самое для своих роутеров. Если на WAN висит частный адрес, а наружу провайдер показывает другой, перед вами почти наверняка CGNAT. 

CGNAT выглядит особенно обидно. Веб-интерфейс роутера доступен, правило создать можно, локальный сервер жив, но входящий пакет до квартиры не доходит. Провайдерский NAT стоит выше вашего роутера и не знает, какому абоненту внутри общей группы передать запрос. В такой схеме домашний проброс портов не лечит проблему. Нужен белый IP от провайдера, либо обходной путь через VPN, reverse tunnel или внешний VPS. 

Вторая популярная ловушка, двойной NAT. Сценарий знакомый: провайдерский терминал работает как роутер, а следом подключен еще один домашний роутер. Тогда входящий трафик надо пробрасывать через оба устройства, либо переводить первое устройство в bridge, если провайдер и оборудование позволяют. Иначе внешний запрос упрется в первый NAT и дальше не пойдет. 

Почему порт может оставаться закрытым даже при белом IP

Белый адрес еще не гарантирует победу. TP-Link в своих инструкциях по диагностике первым делом советует проверить, доступен ли сервер внутри локальной сети и совпадают ли IP-адрес и порт с реальными настройками приложения. Если локальный сервис не отвечает по внутреннему адресу, проброс снаружи тем более не заработает. 

Дальше проверьте четыре вещи. Приложение должно слушать нужный порт, а не соседний. Локальный IP сервера не должен меняться после перезагрузки, поэтому лучше закрепить адрес через reservation или статический DHCP lease. Протокол должен совпадать, TCP, UDP или оба сразу. И наконец, firewall на самом компьютере или NAS не должен отбрасывать входящее соединение после того, как роутер честно переслал пакет дальше. 

Еще одна мелкая, но очень частая причина паники, неправильная проверка. Keenetic отдельно напоминает, что тестировать проброс надо из внешней сети. Если проверять внешний IP из той же домашней Wi-Fi-сети, часть роутеров упрется в отсутствие NAT loopback, и пользователь увидит ложный провал. Проще всего тестировать через мобильный интернет.

Короткий порядок проверки

Рабочая последовательность выглядит так. Сначала сравниваете WAN-адрес роутера с внешним IP, который показывает интернет. Потом проверяете, отвечает ли сервис по локальному адресу, например 192.168.1.50:80 или 192.168.1.50:443. После этого сверяете правило проброса, внешний порт, внутренний IP, внутренний порт и протокол. Затем смотрите firewall на самом устройстве. И только потом ругаете роутер. Такой порядок экономит кучу времени и нервов. 

Где искать проброс портов на популярных роутерах

Ниже не магические универсальные кнопки, а нормальная карта по самым популярным интерфейсам. Названия пунктов могут слегка отличаться в зависимости от прошивки, региона и возраста модели, но логика у всех одна и та же: указать входящий порт, локальный IP устройства внутри сети, внутренний порт и протокол. 

TP-Link Archer и похожие модели

На большинстве современных TP-Link путь такой: Advanced → NAT Forwarding → Port Forwarding. На части прошивок и операторских версий раздел может называться Virtual Server или Virtual Servers. Дальше нажимаете Add, задаете имя сервиса, внешний порт, внутренний порт, IP нужного устройства и протокол, затем включаете правило. Если не уверены в портах и протоколе, TP-Link советует сначала проверить требования самого сервиса и не пересекать внешние порты между разными правилами. 

Для популярных домашних моделей вроде Archer C-серии и Archer AX-серии главный практический совет простой: сначала закрепите за сервером постоянный локальный IP, иначе правило останется, а адрес у NAS, камеры или мини-ПК поменяется после перезагрузки. Второй совет не менее приземленный: проверьте доступ к сервису из локальной сети до настройки проброса. Если локально тишина, интернет тут ни при чем. 

Keenetic

У Keenetic проброс настраивается через страницу Port Forwarding или «Перенаправление портов». Компания отдельно предупреждает, что без публичного IP правило не заработает. Для устройства, на которое идет проброс, лучше заранее включить постоянный адрес в списке клиентов. После создания NAT-правила отдельное разрешающее правило firewall обычно не нужно, Keenetic пишет об этом прямо в документации.

Для популярных моделей Keenetic вроде Sprinter, Hopper, Giga и Ultra порядок обычно такой: находите нужное устройство в списке клиентов, закрепляете локальный IP, затем создаете правило проброса с внешним портом, локальным адресом и внутренним портом. Если после настройки ничего не работает, первым делом проверяйте не сам роутер, а наличие белого IP и попытку теста именно из внешней сети. У Keenetic обе причины описаны как базовые и самые частые. 

ASUS RT-AX и другие домашние ASUS

На ASUS нужный раздел обычно лежит по пути WAN → Virtual Server / Port Forwarding. Дальше надо включить Enable Port Forwarding и нажать Add profile. Затем указываются внешний порт, внутренний IP, внутренний порт и протокол. ASUS отдельно напоминает, что функция работает только при публичном WAN IP, а значит при CGNAT настройка внутри роутера сама по себе не поможет. 

На популярных моделях семейства RT-AX логика обычно одинаковая даже при небольших различиях интерфейса. Сначала включаете правило, потом проверяете, не конфликтует ли внешний порт с другим сервисом роутера, и уже после этого тестируете доступ извне. Если нужно открыть веб-сервис, не забудьте проверить, какой порт реально слушает приложение. Очень часто люди пробрасывают 80, хотя сервис давно сидит на 8080 или 8443. 

MikroTik hAP, cAP и другие RouterOS-устройства

MikroTik не маскирует сетевую механику красивыми кнопками. Классический путь такой: IP → Firewall → NAT, затем создается правило с Chain: dstnat. В параметрах указываются входящий интерфейс WAN, протокол, внешний порт, а в действии выбирается dst-nat с адресом внутреннего хоста и, при необходимости, с другим внутренним портом. Официальная документация именно так и описывает port forwarding через destination NAT. 

Для популярных MikroTik вроде hAP ac² и hAP ax² есть один важный практический нюанс. Если конфигурация далеко ушла от заводской и firewall написан вручную, одного NAT-правила может оказаться мало. Тогда надо еще смотреть цепочку forward, чтобы трафик после dstnat не отрезался вашим собственным фильтром. На конфигурациях, близких к дефолтным, проблема встречается реже, но на самосборных правилах всплывает регулярно.

Что делать, если белого IP нет и не предвидится

Самый чистый путь, заказать у провайдера публичный адрес. Если провайдер не дает белый IP даже за деньги, тогда разумнее не мучить проброс наугад, а сразу строить обходную схему. Обычно выбирают WireGuard или другой VPN до VPS с белым IP, а уже на VPS публикуют нужный сервис наружу. Для камер, домашнего сервера, панели умного дома или тестового веб-приложения такой вариант часто надежнее и предсказуемее, чем бесконечные эксперименты с закрытым портом за CGNAT.

Финальный вывод

Если порт «не открывается», не надо сразу перебирать десять чекбоксов в роутере. Сначала выясните, есть ли белый IP. Потом проверьте, не сидите ли вы за двойным NAT. После этого убедитесь, что локальный сервис жив, слушает нужный порт и не заблокирован firewall. И только на последнем шаге разбирайтесь с меню конкретной модели роутера. Такой порядок почти всегда приводит к ответу быстрее, чем хаотичное нажатие кнопок в веб-интерфейсе

Alt text
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.
23
АПРЕЛЯ
11:00
СУИБ
■ ВЕБИНАР · SECURITM
17 МГНОВЕНИЙ БЮРОКРАТИИ
Как ИБшнику выжить в госсекторе и построить работающую СУИБ
Регистрируйтесь →
Реклама. 18+ ООО «Секъюритм» ИНН 7820074059

Николай Нечепуренков

Я – ваш цифровой телохранитель и гид по джунглям интернета. Устал видеть, как хорошие люди попадаются на уловки кибермошенников, поэтому решил действовать. Здесь я делюсь своими секретами безопасности без занудства и сложных терминов. Неважно, считаешь ты себя гуру технологий или только учишься включать компьютер – у меня найдутся советы для каждого. Моя миссия? Сделать цифровой мир безопаснее, а тебя – увереннее в сети.