Что такое NAT и как работает перенаправление портов?
NAT (Network Address Translation) меняет адреса в пакетах при прохождении границы сети. В домашних сетях роутер чаще всего позволяет нескольким устройствам с частными IPv4-адресами выходить через один внешний IPv4-адрес. Часто он также меняет номера портов, чтобы различать одновременные соединения.
Что происходит с исходящим запросом
Допустим, ноутбук 192.168.1.20 открывает веб-сайт через домашний роутер. Роутер записывает в таблицу соответствие между внутренним адресом и портом ноутбука и своим внешним адресом и выбранным портом. Сервер видит внешний адрес роутера и отвечает ему. По таблице роутер направляет ответ исходному ноутбуку, даже если другой телефон одновременно обращался к тому же сайту. Это упрощённый пример распространённой трансляции адресов и портов; точное поведение зависит от оборудования. Базовые принципы описаны в RFC 3022.
Почему входящее соединение не всегда проходит
Неожиданный запрос снаружи не содержит готового соответствия в таблице исходящих соединений. Для домашнего сервера администратор может создать правило перенаправления внешнего порта на внутренний адрес и порт. Например, внешний TCP-порт 8443 можно направить на конкретный веб-сервис внутри сети. Правило должно указывать правильный протокол: TCP и UDP — разные пространства портов. Но прежде нужно убедиться, что сервер защищён, обновлён и действительно должен быть доступен извне. Открытый порт не равен работающему приложению.
NAT не заменяет межсетевой экран
Трансляция определяет, как изменить адреса и соотнести ответы с соединениями. Политика межсетевого экрана решает, какой трафик разрешить. На практике функции часто объединены в одном роутере, из-за чего их легко перепутать. Не полагайтесь на NAT как на единственный механизм безопасности: отдельное правило, автоматическое открытие порта или ошибка настройки могут изменить доступность. После настройки проверяйте конечное приложение, а не только номер порта. Проверка порта на 2ip полезна как внешний сигнал, но не подтверждает корректную аутентификацию сервиса.
Что проверить при неудачном перенаправлении
Сначала проверьте внутренний адрес сервера и доступ к нему из той же сети. Затем убедитесь, что правило роутера указывает верный порт и протокол, а локальный межсетевой экран разрешает нужное соединение. Сравните внешний адрес роутера с адресом, видимым в Интернете. Если они различаются из-за второго роутера или CGNAT у провайдера, домашнее правило может быть недостаточным. Не отключайте весь межсетевой экран для диагностики; проверяйте отдельное правило и журнал сервиса.
Запись трансляции обычно существует только ограниченное время. После завершения соединения или периода бездействия роутер может удалить её, поэтому старый внешний порт нельзя считать постоянным адресом устройства. При проверке входящего доступа используйте отдельную внешнюю сеть и смотрите журнал приложения: локальная проверка через собственный роутер может зависеть от поддержки NAT loopback.
