NAT — технология преобразования сетевых адресов¶
NAT (Network Address Translation, трансляция сетевых адресов) — технология трансляции IP-адресов и номеров портов в сетях на основе протокола IP, применяемая для преобразования адресов в пакетах при их прохождении через сетевой шлюз (маршрутизатор). NAT позволяет устройствам с частными (внутренними) IP-адресами выходить в сеть общего пользования (Интернет), используя один или несколько публичных адресов, что стало основным решением проблемы исчерпания адресного пространства IPv4.
¶Историческая справка
Технология появилась в начале 1990-х годов на фоне быстрого роста числа устройств в сетях и истощения свободных публичных IPv4-адресов. В 1994 году Инженерный совет Интернета (IETF) опубликовал документ RFC 1631, описавший концепцию NAT. Основной автор — Кит Мур (Keith Moore). Стандарт получил развитие в серии документов RFC 2663, RFC 3022 и других. В России и СНГ технология массово применялась провайдерами связи с конца 1990-х годов, когда домашние сети и корпоративные сегменты стали подключаться к Интернету через единый выходной канал.
¶Принцип работы
NAT-устройство (обычно маршрутизатор или межсетевой экран) размещается на границе между двумя сетями — внутренней (частной) и внешней. При прохождении пакета NAT заменяет исходный IP-адрес отправителя (и, при необходимости, номер порта) на свой собственный публичный адрес. Для ответных пакетов выполняется обратное преобразование по таблице трансляции, которая хранит соответствия между внутренними и внешними адресами.
Таблица NAT содержит записи вида «внутренний IP:порт → внешний IP:порт». Когда внешний хост отправляет ответ, устройство сопоставляет его с нужной внутренней записью и перенаправляет пакет соответствующему получателю.
¶Виды NAT
¶Статический NAT (Static NAT)
Устанавливает постоянное один-к-одному соответствие между одним частным и одним публичным IP-адресом. Используется, когда внутреннему серверу (например, веб-серверу или почтовому узлу) нужен постоянный внешний адрес.
¶Динамический NAT (Dynamic NAT)
Пул публичных адресов сопоставляется с частными по мере обращения. Если пул исчерпан, новые соединения не могут быть установлены до освобождения записей. В настоящее время применяется редко.
¶PAT / NAT Overload (Port Address Translation)
Наиболее распространённый вариант. Один публичный IP-адрес используется множеством внутренних хостов одновременно — различие обеспечивается за счёт номеров портов. Именно этот режим позволяет десяткам устройств в домашней сети выходить в Интернет через один адрес провайдера. В таблице хранятся записи «внутренний IP:порт → внешний IP:уникальный порт».
¶Типы трансляции
| Тип | Направление | Описание |
|---|---|---|
| SNAT (Source NAT) | Исходящие | Замена исходного адреса отправителя |
| DNAT (Destination NAT) | Входящие | Замена адреса получателя (используется для проброса портов) |
| Full Cone NAT | — | Внешний адрес и порт доступны любому внешнему хосту |
| Restricted Cone NAT | — | Доступ только с адресов, с которыми внутренний хост уже общался |
| Port-Restricted Cone NAT | — | Доступ только с адресов и портов, с которыми уже был обмен |
| Symmetric NAT | — | Для каждого внешнего адреса создаётся отдельная трансляция |
Последние четыре категории описаны в документе RFC 4787 и важны для работы приложений, использующих одноранговые соединения (P2P), VoIP и видеосвязь.
¶Проблемы и ограничения
NAT нарушает принцип сквозной адресации IP, из-за чего ряд протоколов, предполагающих прямое соединение хостов, работает с трудностями. Для решения проблем применяются дополнительные механизмы:
- STUN (RFC 5389) — определение внешнего адреса и типа NAT;
- TURN (RFC 5766) — ретрансляция трафика через промежуточный сервер;
- ICE (RFC 5245) — поиск наилучшего пути для однорангового соединения;
- UPnP IGD и NAT-PMP/PCP — автоматическая проброска портов из внутренней сети.
Дополнительно NAT затрудняет диагностику сетей и логирование, так как реальные адреса отправителей скрыты за общим публичным адресом.
¶NAT и IPv6
С переходом на IPv6, где адресное пространство практически не ограничено, необходимость в NAT отпадает — каждый узел может получить глобальный адрес. Однако на практике NAT66 (трансляция в сетях IPv6) и NAT64 (преобразование между IPv4 и IPv6) продолжают применяться, в частности для совместимости протоколов и маскировки внутренней топологии.
¶Применение
NAT является стандартным компонентом домашних роутеров, корпоративных межсетевых экранов и операторских маршрутизаторов. В России технология широко используется провайдерами доступа: большинство абонентских подключений реализовано через PAT с использованием адресов из частных диапазонов (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, определённых RFC 1918).
¶Источники
- 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)
- RFC 4787 — Network Address Translation (NAT) Behavioral Requirements for Unicast UDP
- RFC 5389 — STUN: Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators
- Таненбаум Э., Уэзеролл Д. — «Компьютерные сети», гл. 5
