Что такое NAT и зачем он нужен?
Модели OSI и TCP/IP
NAT подменяет адреса в заголовках пакетов на границе сети: множество устройств с приватными IP выходят в интернет под одним публичным адресом. Это ответ на нехватку IPv4.
Как работает
- Приватные диапазоны (RFC 1918): 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 — в интернете не маршрутизируются.
- Самый частый вид — NAPT: роутер меняет «IP:порт источника» на «публичный IP:свободный порт» и запоминает пару в таблице трансляции.
- Ответ приходит на этот порт — роутер находит запись и пересылает пакет нужному устройству.
- Записи живут по таймауту, для UDP часто 30–120 с, поэтому долгим соединениям нужны keep-alive.
Разновидности
- SNAT — меняется источник, типичный выход в интернет.
- DNAT, или проброс портов, — входящие на публичный порт уходят на внутренний сервер.
- CGNAT — NAT на стороне провайдера (диапазон 100.64.0.0/10), у абонента нет даже своего публичного IP.
Побочные эффекты
- Входящее соединение к устройству за NAT без проброса невозможно — проблема для P2P, решается через STUN и TURN.
- Ломает протоколы, передающие IP внутри данных, например активный режим FTP.
- Скрывает внутреннюю адресацию, но файрволом не является.
Коротко для собеседования
NAT позволяет целой сети выходить в интернет через один публичный IPv4, запоминая соответствие портов в таблице трансляции. Цена — невозможность входящих соединений без проброса, поэтому P2P нужны STUN и TURN; в IPv6 NAT не нужен, его роль играет файрвол.