Открыть сервисСервис

NAT-шлюз

NAT-шлюз — это сетевой узел (маршрутизатор или сервер), выполняющий функцию трансляции сетевых адресов (NAT, Network Address Translation) для преобразования IP-адресов и портов в заголовках пакетов при их прохождении между сетями. Основное назначение NAT-шлюза — обеспечение связи между устройствами в частной (локальной) сети и внешними сетями, чаще всего интернетом, при использовании ограниченного количества публичных IP-адресов.

Принцип работы

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

Основные режимы трансляции

  • Static NAT (статический NAT) — однозначное соответствие между частным и публичным IP-адресами. Используется для серверов, которые должны быть доступны извне по фиксированному адресу.
  • Dynamic NAT (динамический NAT) — пул публичных адресов, из которого шлюз выделяет адрес для каждого нового соединения. После завершения сессии адрес возвращается в пул.
  • NAPT (Network Address and Port Translation, также известный как PAT — Port Address Translation) — наиболее распространённый режим, при котором множество устройств в локальной сети используют один публичный IP-адрес, различаясь по номерам портов. Именно этот режим обычно подразумевается под «NAT-шлюзом» в бытовых и офисных маршрутизаторах.

Классификация

NAT-шлюзы можно классифицировать по нескольким признакам.

По месту размещения

  • Пограничные маршрутизаторыустройства на границе сети провайдера или предприятия, выполняющие NAT для всего трафика, выходящего во внешнюю сеть.
  • Программные NAT-шлюзы — реализованы на базе операционных систем (Linux, Windows Server, FreeBSD) с использованием пакетных фильтров (iptables, nftables, PF). Примеры: _Shorewall_, _pfSense_, _OPNsense_.
  • Аппаратные NAT-шлюзы — специализированные устройства (маршрутизаторы, межсетевые экраны), где NAT реализован на уровне аппаратного ускорения.

По типу сети

  • Домашние и малые офисные (SOHO) — встроенные в ADSL/VDSL-модемы, Wi-Fi-роутеры. Обычно поддерживают только PAT.
  • Корпоративные — высокопроизводительные устройства с поддержкой статического NAT, балансировки нагрузки и резервирования.
  • Облачные — виртуальные шлюзы, предоставляемые облачными провайдерами (например, NAT Gateway в AWS, Cloud NAT в Google Cloud, NAT-шлюз в Яндекс.Облаке).

История

Концепция NAT была впервые предложена в 1994 году в документе RFC 1631 «The IP Network Address Translator (NAT)» как временное решение проблемы истощения адресного пространства IPv4. Разработчики из компании Cisco Systems (в частности, Пол Фрэнсис и Кьелл-Ове Баркер) заложили основу для механизма, который впоследствии стал одним из ключевых элементов интернета.

Широкое внедрение NAT началось в конце 1990-х — начале 2000-х годов с ростом числа домашних пользователей и распространением широкополосного доступа. В 2000-е годы NAT стал стандартной функцией в большинстве маршрутизаторов и межсетевых экранов. С переходом на IPv6, где адресное пространство практически неограниченно, необходимость в NAT для обеспечения связности отпадает, однако он продолжает использоваться для совместимости с IPv4-сетями (NAT64, NAT46).

Устройство и характеристики

Составные части

  • Таблица трансляции (NAT-таблица) — хранит записи о текущих сессиях: исходный частный адрес:порт, публичный адрес:порт, адрес назначения, протокол и таймеры.
  • Ядро трансляции — модуль, выполняющий подмену адресов и портов в заголовках пакетов.
  • Модуль фильтрации — часто совмещён с межсетевым экраном, контролирует, какие соединения разрешено транслировать.

Ключевые параметры

  • Пропускная способность — максимальный объём трафика, который шлюз может обработать без потери производительности (измеряется в Гбит/с).
  • Количество одновременных сессий — максимальное число записей в NAT-таблице (для домашних устройств — несколько тысяч, для корпоративных — сотни тысяч или миллионы).
  • Задержка (latency) — время, добавляемое на обработку каждого пакета (обычно микросекунды или единицы миллисекунд).
  • Поддержка протоколовпомимо TCP/UDP, шлюз должен корректно обрабатывать ICMP, а также протоколы, инкапсулирующие IP-адреса (например, FTP в активном режиме, SIP, PPTP).

Применение

Основные сценарии

  • Организация доступа в интернет для локальной сети — самый массовый случай. Позволяет десяткам устройств (компьютеры, смартфоны, IoT) выходить в интернет через один публичный IP-адрес.
  • Сокрытие внутренней топологии — внешний наблюдатель видит только публичный адрес шлюза, что усложняет прямое сканирование внутренних устройств.
  • Виртуализация и облачные вычисления — виртуальные машины в частных подсетях получают доступ к внешним ресурсам через NAT-шлюз облачного провайдера.
  • Тестирование и разработка — эмуляция сетей с ограниченным числом публичных адресов.

Ограничения и проблемы

  • Проблема с протоколами, передающими адреса на прикладном уровне — FTP, SIP, некоторые игры требуют дополнительных модулей (ALG — Application Layer Gateway) для корректной работы через NAT.
  • Невозможность инициировать соединение извне — без настройки проброса портов (port forwarding) или статического NAT внешний узел не может обратиться к устройству внутри локальной сети.
  • Снижение производительности — на высоких нагрузках обработка таблицы трансляции может стать узким местом.
  • Проблемы с IPv6 — при переходе на IPv6 NAT не требуется, но для совместимости с IPv4-ресурсами используются шлюзы NAT64.

Критика

NAT подвергается критике по нескольким причинам. Во-первых, он нарушает принцип сквозного соединения (end-to-end), заложенный в архитектуре TCP/IP — каждый узел должен быть потенциально доступен по своему уникальному адресу. Это затрудняет работу одноранговых сетей (P2P), видеоконференций и онлайн-игр. Во-вторых, NAT усложняет администрирование сетей, особенно при необходимости обеспечить внешний доступ к внутренним серверам. В-третьих, он может создавать ложное ощущение безопасности: хотя NAT скрывает внутренние адреса, он не является полноценным межсетевым экраном и не защищает от атак на прикладном уровне.

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

Интересные факты

  • Термин «NAT» часто путают с «пробросом портов» (port forwarding), хотя последний является лишь одним из способов настройки NAT для обеспечения доступа извне.
  • В операционной системе Linux NAT реализуется через подсистему Netfilter и утилиту iptables (или её современную замену nftables). Команда iptables -t nat -L показывает текущую таблицу трансляции.
  • В некоторых странах провайдеры используют Carrier-Grade NAT (CGNAT, или NAT444), когда домашние маршрутизаторы подключаются к сети провайдера через частный адрес, и провайдер выполняет трансляцию на своём уровне. Это позволяет экономить публичные адреса, но может вызывать проблемы с доступом к некоторым сервисам.
  • Максимальное количество одновременных сессий для одного публичного IP-адреса в режиме PAT теоретически ограничено 65535 портами для UDP и TCP, но на практике ограничивается производительностью оборудования.

Источники

  • RFC 1631 — The IP Network Address Translator (NAT)
  • RFC 2663 — IP Network Address Translator (NAT) Terminology and Considerations
  • RFC 3022 — Traditional IP Network Address Translator (Traditional NAT)
  • Стивенс, У. TCP/IP. Иллюстрированное руководство. Том 1. — М.: Вильямс, 2010.
  • Таненбаум, Э., Уэзеролл, Д. Компьютерные сети. — 5-е изд. — СПб.: Питер, 2012.
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru