Типы NAT объяснены: почему твоё соединение ведёт себя по-другому за роутером

Типы NAT - диаграмма, показывающая, как NAT-маршрутизатор выполняет трансляцию адресов для нескольких устройств

Чтобы разобраться, почему устройства иногда не могут нормально общаться в сети, нужно сначала понять, что такое типы NAT и как они работают. Оборвавшийся видеозвонок, игра, которая не пускает в лобби, или VoIP-приложение, которое отлично работает дома, но капризничает в офисе - всё это может быть связано с трансляцией сетевых адресов. Понимание того, что делает NAT, зачем существуют разные его типы и какие ограничения каждый из них создаёт, поможет сэкономить часы на отладке и принимать более взвешенные решения при настройке сети.

Главное:

  • Трансляция сетевых адресов (NAT) позволяет нескольким устройствам использовать один публичный IP-адрес, но при этом вводит ограничения на соединения, которые зависят от типа NAT.
  • Открытый, умеренный и строгий типы NAT (или Type 1, 2 и 3 в терминологии игровых консолей) напрямую влияют на peer-to-peer соединения, онлайн-игры и коммуникации в реальном времени.
  • Двойной NAT - подключение двух роутеров последовательно - частая причина необъяснимых проблем с подключением в домашних и небольших офисных сетях.
  • Для каждого типа NAT существуют конкретные решения: от включения UPnP до настройки DMZ или запроса статического IP у провайдера.

Что такое трансляция сетевых адресов?

Каждое устройство, подключённое к интернету, нуждается в IP-адресе. Проблема в том, что глобальное пространство адресов IPv4 исчерпано. RFC 1918 частично решил эту проблему, определив диапазоны приватных IP-адресов (например, 192.168.x.x и 10.x.x.x), которые можно повторно использовать внутри любой локальной сети. NAT-роутер находится на границе между твоей частной сетью и интернетом и транслирует приватные адреса в единственный публичный IP, который выдаёт провайдер.

Когда твой ноутбук отправляет запрос к веб-серверу, NAT-роутер заменяет адрес источника: вместо приватного IP (например, 192.168.1.50) в пакет вписывается публичный IP, и только после этого пакет уходит в сеть. Когда приходит ответ, роутер выполняет обратную трансляцию и доставляет данные нужному устройству. С точки зрения интернета все устройства в твоей сети выглядят как одна машина.

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

NAT-роутер транслирует приватные IP-адреса в единственный публичный IP

Типы NAT: подробный разбор

Терминология немного отличается в зависимости от того, идёт ли речь об игровых консолях или сетевой теории, но поведение на практике одинаково. Вот как работают основные типы NAT.

Full Cone NAT (открытый NAT / Type 1)

Как только устройство открывает исходящее соединение, роутер создаёт маппинг, который принимает любой входящий пакет, адресованный этому публичному IP и порту, - вне зависимости от того, кто его отправил. Это самый разрешительный тип. Peer-to-peer соединения, многопользовательские игры и приложения реального времени работают без каких-либо ограничений. Чаще всего встречается, когда устройство подключено напрямую к модему без роутера или когда устройство помещено в DMZ роутера.

Address-Restricted Cone NAT (умеренный NAT / Type 2)

Роутер пропускает входящие пакеты только от тех внешних IP-адресов, с которыми внутреннее устройство уже устанавливало соединение. Номер порта при этом не важен. Это самый распространённый тип NAT в домашних роутерах - он обеспечивает разумный баланс между безопасностью и доступностью. Большинство онлайн-игр и видеозвонков работают нормально, хотя некоторые peer-to-peer сценарии требуют дополнительных переговоров.

Port-Restricted Cone NAT

Входящие пакеты принимаются только в том случае, если они приходят с точного IP-адреса и номера порта, с которыми внутреннее устройство ранее устанавливало соединение. Это более строгий вариант по сравнению с address-restricted NAT. Инструменты для коммуникации в реальном времени могут испытывать трудности, если не используют STUN или TURN relay-серверы для прохождения через NAT.

Symmetric NAT (строгий NAT / Type 3)

Каждому исходящему соединению назначается уникальный внешний порт, и входящие пакеты принимаются только от того конкретного адресата, с которым внутреннее устройство изначально установило соединение. Два устройства, оба находящиеся за symmetric NAT, не могут установить прямое peer-to-peer соединение. Строгий NAT типичен для корпоративных файрволов и некоторого оборудования операторского уровня. Это самый безопасный тип, но и самый проблемный для приложений реального времени.

Тип NAT Термин для консолей Правило для входящих P2P / игры
Full Cone Открытый / Type 1 Любой источник Отлично
Address-Restricted Cone Умеренный / Type 2 Только известный IP Хорошо
Port-Restricted Cone Умеренный / Type 2 Известный IP + порт Удовлетворительно
Symmetric Строгий / Type 3 Только точный адресат Плохо

Трансляция адресов портов и её роль

Трансляция адресов портов (PAT) нередко используется как синоним NAT, но между ними есть важное различие. Базовый NAT сопоставляет один приватный IP одному публичному IP. PAT же отображает множество приватных IP на единственный публичный IP, отслеживая уникальные номера портов для каждой сессии. Когда твой роутер одновременно обслуживает трафик ноутбука, телефона и смарт-телевизора, именно PAT берёт на себя основную нагрузку.

Именно PAT позволяет роутеру различать поток Netflix на телевизоре и браузерную сессию на ноутбуке, даже если оба запроса исходят с одного публичного IP. Каждому исходящему соединению в таблице трансляции назначается уникальный порт источника. Когда приходят ответы, роутер сопоставляет порт назначения с нужным внутренним устройством.

Именно поэтому приложения, зависящие от конкретных номеров портов, могут ломаться за NAT-роутером. Если два устройства одновременно пытаются использовать порт источника 5000, роутер вынужден переназначить один из них. Если принимающее приложение ожидает фиксированный порт, соединение не установится. Это распространённая проблема с SIP-based VoIP и некоторыми старыми peer-to-peer протоколами.

Проблема двойного NAT

Двойной NAT возникает, когда трансляцию адресов последовательно выполняют два роутера. Типичный сценарий: провайдер предоставляет комбо-устройство модем-роутер, которое уже выполняет NAT. Ты подключаешь к нему собственный роутер для лучшего покрытия Wi-Fi или большего контроля над сетью. Теперь каждое устройство в твоей сети проходит через два слоя NAT, прежде чем добраться до интернета.

Симптомы неочевидны, но раздражают. Правила проброса портов, настроенные на внутреннем роутере, не работают, потому что внешний роутер не знает, что нужно перенаправлять трафик к нему. UPnP может работать нестабильно. VPN-клиенты могут не устанавливать туннели. Игровые консоли почти всегда будут показывать строгий или умеренный NAT, даже если внутренний роутер настроен правильно.

Подтвердить наличие двойного NAT можно, сравнив WAN IP-адрес в панели администратора роутера с реальным публичным IP. Если они отличаются, а WAN IP попадает в диапазон приватных адресов (10.x.x.x, 172.16-31.x.x или 192.168.x.x), ты находишься за двойным NAT. Воспользуйся нашим инструментом определения IP , чтобы найти реальный публичный IP и сравнить его с WAN-адресом в настройках роутера.

Самое чистое решение - перевести устройство провайдера в режим моста (bridge mode), отключив его функцию NAT, чтобы трансляцией занимался только твой роутер. Если провайдер не разрешает bridge mode, можно поместить внутренний роутер в DMZ внешнего - это фактически даст ему прямой выход в интернет.

Практический пример: игровая консоль за роутером

Представь, что ты подключил PlayStation 5 к домашнему роутеру. WAN IP роутера - 203.0.113.45 (реальный публичный IP от провайдера). Консоль получает приватный адрес 192.168.1.10.

Когда ты запускаешь многопользовательскую игру, консоль подключается к серверу матчмейкинга по адресу 198.51.100.22 на порту 3478. Роутер создаёт запись PAT: внутренний адрес 192.168.1.10:49152 отображается на внешний 203.0.113.45:49152. Сервер матчмейкинга отвечает, сессия работает. Пока всё хорошо.

Теперь игра пытается установить прямое peer-to-peer голосовое соединение с другим игроком. Консоль этого игрока отправляет пакет напрямую на 203.0.113.45:49153. Если твой роутер работает в режиме address-restricted cone NAT, он проверит, обращалось ли устройство 192.168.1.10 когда-либо к IP этого игрока. Если сервер матчмейкинга их познакомил - да, обращалось, и соединение устанавливается. Если роутер работает в режиме symmetric NAT, для каждого исходящего потока был назначен отдельный внешний порт, поэтому входящий пакет приходит на порт, о котором роутер ничего не знает, и отбрасывает его. Голосовой чат молча перестаёт работать.

В этом случае решение - включить UPnP (чтобы консоль могла запросить постоянный маппинг портов), назначить консоли статический приватный IP и добавить правило проброса портов, или поместить консоль в DMZ. У каждого подхода есть свои компромиссы, о которых рассказано в следующем разделе.

Как улучшить тип NAT: конкретные шаги

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

1. Включи UPnP на роутере

Universal Plug and Play позволяет приложениям автоматически запрашивать маппинг портов у роутера. Большинство потребительских роутеров поддерживают эту функцию. Войди в панель администратора роутера (обычно по адресу 192.168.1.1 или 192.168.0.1), найди настройку UPnP в разделе "Дополнительно" или настройках WAN и включи её. Перезагрузи устройство, для которого хочешь улучшить NAT, и проверь результат. UPnP удобен, но несёт риски безопасности в сетях с ненадёжными устройствами - используй его только в доверенных домашних сетях.

2. Настрой статический проброс портов

Назначь устройству статический приватный IP (через резервирование DHCP в настройках роутера), затем создай правило проброса портов, которое отображает нужный внешний порт на внутренний IP этого устройства. Это безопаснее, чем UPnP, поскольку ты сам контролируешь, какие именно порты открыты. Нужные порты уточни в документации конкретного приложения.

3. Устрани двойной NAT

Как описано выше, переведи устройство провайдера в режим моста или помести свой роутер в DMZ устройства провайдера. Если ты оцениваешь сетевые инструменты для SaaS, двойной NAT - одна из первых вещей, которую стоит исключить, когда продукт ведёт себя непоследовательно в разных офисах. Также можно проверить, не попал ли твой IP-адрес в какие-либо блок-листы из-за некорректной маршрутизации, с помощью нашего инструмента проверки IP в чёрных списках.

4. Запроси статический публичный IP

Если провайдер выдаёт динамический IP, который периодически меняется, постоянный проброс портов может перестать работать. Статический публичный IP стоит небольшой ежемесячной платы у большинства провайдеров, но делает проброс портов надёжным и упрощает настройку удалённого доступа. Для бизнеса, использующего SaaS-инструменты, которым нужны входящие webhook-запросы или API callback-вызовы, это вложение, как правило, оправдано.

5. Рассмотри переход на IPv6

IPv6 полностью устраняет необходимость в NAT, поскольку каждое устройство получает глобально уникальный адрес. IPv6 (RFC 8200) всё активнее поддерживается провайдерами и операционными системами. Если твой провайдер предлагает IPv6, включение его на роутере может решить многие проблемы, связанные с NAT, для приложений, поддерживающих dual-stack сети. Проверь текущую версию IP и параметры подключения с помощью нашего инструмента определения IP-адреса.

6. Используй VPN с поддержкой NAT traversal

Некоторые VPN-протоколы, в том числе WireGuard, хорошо справляются с NAT traversal и могут обеспечить устройствам за строгим NAT более открытый путь для соединения. Это особенно полезно для удалённых сотрудников, подключающихся к корпоративной сети из дома с ограничительным NAT. Имей в виду, что добавление VPN увеличивает задержку, что важно для приложений реального времени. Документация WireGuard подробно описывает поведение NAT traversal.

Быстрый совет по диагностике: Если ты подозреваешь, что проблемы с подключением выходят за рамки NAT, проверь, не попал ли твой IP-адрес в DNS-based блок-листы. Некорректно настроенные роутеры и общие адреса провайдеров иногда оказываются в таких списках. Смотри наше руководство о том, как удалить IP из чёрного списка , - там есть пошаговые инструкции.

Заключение

Типы NAT - это не абстрактная сетевая теория. Они напрямую и измеримо влияют на то, насколько стабильно работают твои приложения, как функционируют peer-to-peer сервисы и работают ли вообще правила проброса портов. Понимание разницы между full cone, address-restricted и symmetric NAT даёт конкретную основу для диагностики проблем с подключением вместо бесконечного перебора настроек. Только ситуация с двойным NAT объясняет удивительно большое количество обращений в поддержку у SaaS-продуктов, зависящих от входящих соединений. Начни с диагностических шагов выше, определи тип NAT и топологию своей сети, а затем применяй точечное решение - вместо того чтобы наугад менять настройки роутера.

Инструмент определения IP-адреса с публичным IP и деталями подключения

Мгновенно узнай свой публичный IP и параметры подключения

Посмотри свой реальный публичный IP-адрес, обнаружь двойной NAT и точно пойми, как твоя сеть выглядит из интернета - всё это в одном бесплатном инструменте.

Попробовать бесплатно →

Базовый NAT сопоставляет один приватный IP одному публичному IP. PAT отображает множество приватных IP на единственный публичный IP, назначая каждой сессии уникальный номер порта. Большинство домашних роутеров используют именно PAT - именно поэтому несколько устройств могут одновременно использовать один публичный IP-адрес без конфликтов.

Сравни WAN IP, отображаемый в панели администратора роутера, с реальным публичным IP (проверь с помощью инструмента определения IP). Если WAN IP роутера попадает в диапазон приватных адресов (10.x.x.x, 172.16-31.x.x или 192.168.x.x), а не совпадает с публичным IP, ты находишься за двойным NAT.

UPnP может перевести тебя со строгого на умеренный или открытый NAT, позволяя приложениям автоматически запрашивать маппинг портов. Однако это работает только при наличии одного слоя NAT. При двойном NAT UPnP на внутреннем роутере не поможет, потому что внешний роутер всё равно будет блокировать нежелательные входящие соединения.

Symmetric NAT назначает уникальный внешний порт для каждого отдельного исходящего соединения. Когда удалённый пир пытается подключиться обратно, используя наблюдаемый порт, роутер не находит соответствующей записи и отбрасывает пакет. Два устройства за symmetric NAT не могут предсказать назначения портов друг друга, что делает прямые peer-to-peer соединения невозможными без relay-сервера.

Для трафика IPv6 - да. IPv6 предоставляет каждому устройству глобально уникальный адрес, устраняя необходимость в трансляции адресов. Однако большинство сетей по-прежнему одновременно используют IPv4 и IPv6, поэтому проблемы с NAT для IPv4-соединений сохраняются до тех пор, пока интернет полностью не перейдёт на новый протокол - а это займёт ещё несколько лет для большинства сред.