NAT — что это, как работает Network Address Translation | Глоссарий FREEHOSTING

NAT

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

Определение простыми словами

NAT работает как секретарь в офисе: внутри компании у каждого сотрудника свой добавочный номер, а наружу звонки идут с одного городского. Маршрутизатор подменяет приватный адрес отправителя (например, 192.168.1.10) на свой внешний и запоминает соответствие в таблице трансляций. Когда приходит ответ — раскладывает его по нужному внутреннему хосту.

Чаще всего на практике используют PAT (Port Address Translation, он же NAPT или masquerading): к подмене адреса добавляется подмена порта, что позволяет уместить тысячи внутренних соединений за одним внешним IP-адресом.

Сравнение

Тип Что подменяет Когда применяют
Static NAT 1 внутренний IP ↔ 1 внешний IP Публикация сервера наружу
Dynamic NAT Пул внутренних в пул внешних Корпоративные сети с пулом адресов
PAT / NAPT IP + порт Домашние роутеры, провайдерский CGNAT
DNAT Адрес назначения Проброс портов, балансировка

Кейсы использования

  • Домашняя сеть за провайдерским роутером — все устройства выходят в сеть через один белый адрес.
  • VPS с двумя интерфейсами публикует внутренние сервисы наружу через DNAT и iptables.
  • Провайдер использует CGNAT, чтобы сэкономить дефицитные IPv4 для абонентов мобильной сети.
  • Негативный сценарий: за NAT ломаются P2P-протоколы, активный FTP, SIP и игровые лобби — приходится прокидывать порты вручную или поднимать STUN/TURN.

Технические детали

# Включить маскарадинг на интерфейсе eth0 (Linux, iptables)
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Проброс порта 2222 снаружи на внутренний хост 192.168.1.10:22
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2222 
  -j DNAT --to-destination 192.168.1.10:22
iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 22 -j ACCEPT

# Посмотреть текущую таблицу трансляций
conntrack -L -j

Частые вопросы

Чем NAT отличается от прокси-сервера?

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

Почему за NAT не работают игры и P2P?

Внешние хосты не могут инициировать соединение к клиенту за NAT — в таблице трансляций нет соответствующей записи. Решается пробросом портов вручную, UPnP, STUN/TURN или переходом на провайдера с белым IP.

Нужен ли NAT при IPv6?

В IPv6 адресов хватает каждому устройству, поэтому NAT почти не используется. Изоляцию обеспечивают межсетевой экран и приватные подсети ULA, а не подмена адресов.