Определение простыми словами
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, а не подмена адресов.