NAT (Network Address Translation, трансляция сетевых адресов) — функция сетевого оборудования, которая изменяет IP-адреса и/или номера портов в заголовках IP-пакетов при их прохождении через маршрутизатор или файрвол. Разработан как временное решение для экономии пространства IPv4-адресов, но к 2024 году остаётся повсеместным механизмом в корпоративных и домашних сетях.
Как работает
Самый распространённый тип — PAT (Port Address Translation), называемый также NAT Overload или Masquerade. Маршрутизатор отслеживает исходящие соединения в таблице трансляции: когда внутренний хост 192.168.1.10:54321 отправляет пакет на внешний сервер, маршрутизатор подменяет источник на 203.0.113.1:40001 (свой публичный IP + уникальный порт). При получении ответа маршрутизатор по таблице восстанавливает оригинальный адрес и порт и доставляет пакет нужному внутреннему хосту.
Типы NAT:
- Static NAT — постоянное соответствие 1:1 (один внутренний IP → один публичный IP). Используется для серверов, которые должны быть доступны снаружи.
- Dynamic NAT — пул публичных IP назначается внутренним хостам динамически.
- PAT / NAT Overload — многие внутренние хосты → один публичный IP с разными портами. Самый распространённый вариант.
- DNAT (Destination NAT) — подмена адреса назначения. Используется для переадресации портов (port forwarding) и балансировки нагрузки.
В Docker и других контейнерных средах NAT (iptables MASQUERADE) применяется для выхода контейнеров с частными адресами во внешнюю сеть. В KVM-виртуализации — аналогично для виртуальных машин.
История
NAT описан в RFC 1631 (1994) как временное решение кризиса IPv4-адресов. Автор — Paul Francis (тогда — Paul Tsuchiya). Предполагалось, что к 2000 году NAT заменит IPv6. Но NAT оказался настолько удобным и повсеместным, что сосуществует с IPv6 по сей день. RFC 1918 (1996) определил диапазоны приватных адресов (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16), используемых за NAT.
NAT в хостинге
В контексте хостинга NAT применяется в нескольких сценариях. VPS-провайдеры, испытывающие нехватку IPv4-адресов, предлагают «NAT-VPS» — виртуальные серверы с приватным IP и проброшенными портами. Такие VPS дешевле, но имеют ограничения: нельзя получить входящее соединение на произвольный порт, усложнена работа почтового сервера и VPN. Балансировщики нагрузки используют DNAT для распределения входящих соединений между бэкенд-серверами.
На что обращать внимание
При работе за NAT возникают проблемы с протоколами, передающими IP-адреса в теле пакета (FTP в активном режиме, SIP, H.323). Для них требуются ALG (Application Layer Gateway) — специальные обработчики в маршрутизаторе. NAT нарушает принцип end-to-end connectivity: входящие соединения невозможны без явного port forwarding. Для серверных задач (хостинг сайтов, почта, SSH) NAT создаёт ограничения — нужен выделенный публичный IP.
История NAT
NAT (Network Address Translation) появился в RFC 1631 (1994) как временное решение для борьбы с исчерпанием адресного пространства IPv4. RFC 3022 (2001) обновил стандарт. CGNAT (Carrier-grade NAT, RFC 6598) появился в 2012 году для ISP-уровня. По данным IANA, свободные IPv4-блоки исчерпаны в 2011 году, что сделало NAT обязательным инструментом для большинства провайдеров. IPv6 устраняет необходимость в NAT благодаря огромному адресному пространству.