Files
SecondBrain/90 Library/Networking/NAT.md
T
2026-06-05 13:24:10 +03:00

111 lines
12 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
status: processing
type: concept
tags:
- network
- networking
- nat
created: 2025-12-17
updated: 2026-06-05
aliases:
- NAT
---
# NAT
При использовании IPv4 в какой-то момент возникла глобальная проблема нехватки IP-адресов, ведь количество устройств росло семимильными темпами, поэтому долгосрочным решением стал ввод IPv6, но это оказалось очень долго и дорого, поэтому спасением стала технология NAT - Network Assress Translation.
Сети, обычно, проектируются с учетом приватной адресации, например:
- `10.0.0.0/8`
- `172.16.0.0/12`
- `192.168.0.0/16`
Эти адреса позволяют устройствам внутри сети общаться друг с другом, при этом не выводя каждое устройство в сеть на всеобщее обозрение. Чтобы локальному устройству "выйти" в сеть и связаться с внешними устройствами, нужно его внутренний приватный адрес "перевести" во внешний "белый" IP.
Как раз для этого и нужна технология _NAT_, она позволяет переводить частный адреса в публичные. Это не только позволило, в связке с частными IPv4, экономить адреса, но и добавляет конфиденциальность, т.к. за одним публичным IP могут скрываться десятки, сотни, а то и тысячи устройств.
Маршрутизаторы с поддержкой NAT могут быть настроены на один или несколько "белых" IP-адресов. Этот список называется **пулом NAT**. Когда устройство из внутренней сети отправляет трафик во внешнюю сеть, маршрутизатор переводит внутренний IP во внешний из пула. Для внешних устройств весь входящий и исходящий трафик выглядит, как имеющий общедоступный IP-адрес.
Маршрутизатор с NAT, обычно, работает на границе со **Stub-сетью**.
> _Stub-сеть_ — это тупиковая сеть, в которой весь трафик к другим сетям проходит через один-единственный маршрут, обычно через один маршрутизатор или шлюз. Такая сеть не используется для транзита чужих данных между сетями, а только для подключения собственных устройств к внешнему миру, часто по маршруту по умолчанию.
![](4_NAT_image.png)
В терминах NAT внутренней сетью является набор сетей, подлежащий переводу. Внешняя сеть относится ко всем остальным сетям.
NAT включает 4 типа адресов:
1. Внутренний локальный адрес (Inside Local Address)
2. Внутренний глобальный адрес (Inside Global Address)
3. Внешний местный адрес (Outside local address)
4. Внешний глобальный адрес (Outside global address)
При определении того, какой тип адреса используется, важно помнить, что терминология NAT всегда _применяется с точки зрения устройства с транслированным адресом_:
- **Внутренний адрес (Inside address)** - адрес устройства, которое транслируется NAT
- **Внешний адрес (Outside address)** - адрес устройства назначения
- **Локальный адрес (Local address)** - это любой адрес, который отображается во внутренней части сети
- **Глобальный адрес (Global address)** - это любой адрес, который отображается во внешней части сети
![](2_NAT_image.png)
## Типы NAT
1. Статическая адресная трансляция (Static NAT) - сопоставление один к одному между локальными и глобальными адресами.
2. Динамическая адресная трансляция (Dynamic NAT) - сопоставление многих ко многим между локальными и глобальными адресами.
3. Post Address Translation (PAT) - многоадресное сопоставление локальных и глобальных адресов с использованием портов. Также известен, как **NAT Overload**.
### Static NAT
Статический NAT использует сопоставление локальных и глобальных адресов один к одному. Настраиваются администратором сети и остаются постоянными. При отправке пакетов на внешний адрес, он транслируется на внутренний, при этом для внешних устройств, они имеют внешний ip-адрес. Используются, например, для веб-серверов и иных устройств, которые должны иметь согласованный адрес, доступный в интернете. Статический NAT требует достаточное количество общедоступных адресов для обеспечения всех устройств.
![](NAT_image.png)
Таблица статического NAT
### Dynamic NAT
Динамический, обратно статическому, автоматически назначает и освобождает внешние адреса. Занимаются они по принципу "кто первый пришел, то и занял". Аналогично статике, требует достаточного количества адресов для удовлетворения общего количества одновременного использования всеми устройствами.
![](1_NAT_image.png)
Таблица динамического NAT
### Port Address Translation (PAT)
PAT - это совершенно иная по сути работы система. Тут происходит параллельная трансляция многих внутренних адресов на один или несколько внешних адресов. Такая схема чаще всего используется в домашних маршрутизаторах. Хитрость заключается в том, что адресация идет не только по адресам, но и для каждого внутреннего адреса, сопоставляется номер порта. Когда устройство инициирует сеанс **TCP/IP**, оно генерирует значение порта источника **TCP** или **UDP** для уникальной идентификации сеанса. Когда NAT-маршрутизатор получает пакет от клиента, он использует номер своего исходного порта, чтобы однозначно идентифицировать конкретный перевод NAT. PAT гарантирует, что устройства используют разный номер порта TCP для каждого сеанса. Когда ответ возвращается с сервера, номер порта источника, который становится номером порта назначения в обратном пути, определяет, какое устройство маршрутизатор перенаправляет пакеты.
![](3_NAT_image.png)
Таблица PAT
**А что относительно пакетов IPv4, содержащих данные, отличные от TCP или UDP?**
Эти пакеты не содержат номер порта уровня 4. PAT переводит наиболее распространенные протоколы, переносимые IPv4, которые не используют TCP или UDP в качестве протокола транспортного уровня. Наиболее распространенными из них являются **ICMPv4**. Каждый из этих типов протоколов по-разному обрабатывается PAT. Например, сообщения запроса ICMPv4, эхо-запросы и ответы включают идентификатор запроса Query ID. ICMPv4 использует Query ID. для идентификации эхо-запроса с соответствующим ответом. Идентификатор запроса увеличивается с каждым отправленным эхо-запросом. PAT использует идентификатор запроса вместо номера порта уровня 4.
|Преимущества NAT|Недостатки NAT|
|---|---|
|Поддержка приватных адресов, экономия публичных IPv4|Увеличение задержек, особенно для VoIP|
|Возможность нескольких пулов (резерв, балансировка нагрузки)|Потеря сквозной адресации, проблемы с некоторыми приложениями|
|Независимость внутренней адресации от провайдера|Потеря сквозной трассировки, сложнее диагностика|
|Повышение безопасности за счёт скрытия внутренней топологии|Сложности с туннелированием (IPsec и др.)|
|Лёгкая смена публичной схемы адресации без перенастройки хостов|Нарушение работы сервисов, требующих входящих соединений или UDP|
## Простыми словами для экзамена
NAT нужен, чтобы частные адреса локальной сети могли ходить в интернет через один или несколько публичных адресов.
Домашний пример:
- ноутбук имеет `192.168.1.10`;
- телефон имеет `192.168.1.11`;
- роутер имеет публичный адрес провайдера;
- сайты видят запросы как пришедшие от публичного адреса роутера.
PAT — самый частый вариант NAT. Он различает внутренние устройства по портам. Поэтому один публичный IP может обслуживать много внутренних клиентов одновременно.
Главная идея: IP меняется на границе сети, а таблица NAT запоминает, кому вернуть ответ.
## Связанные заметки
- [[Terraform]] — NAT-шлюзы и пулы IP-адресов — типовые сетевые ресурсы, которые Terraform декларативно управляет в облачной инфраструктуре (VPC, subnets)