Лев Корольков
Руководитель IT-департамента EFSOL Oblako
Время чтения: 18 мин

NAT

Трансляция сетевых адресов

NAT, или Network Address Translation, — технология преобразования сетевых адресов при прохождении трафика через маршрутизатор, Firewall или другой сетевой шлюз. Чаще всего NAT используется для того, чтобы множество устройств с частными IPv4-адресами могли выходить в интернет через один или несколько публичных IP.

Например, ноутбук внутри офиса имеет адрес 192.168.1.25. Этот адрес не маршрутизируется в публичном интернете. Когда пользователь открывает сайт, корпоративный Router заменяет внутренний Source IP на свой Public IPv4, сохраняет информацию о соединении и затем выполняет обратное преобразование для ответного трафика.

NAT позволяет отделить внутреннюю адресацию сети от внешней и преобразовывать IP-адреса и, при необходимости, порты на границе между сетями.

Что такое NAT простыми словами

NAT можно представить как посредника между локальной сетью и интернетом.

Внутри сети работают устройства:

192.168.1.10
192.168.1.11
192.168.1.12

А внешние сайты видят, например:

203.0.113.25

Router запоминает, какому внутреннему устройству принадлежит конкретное соединение, и возвращает ответ правильному клиенту.

Расшифровка NAT

NAT расшифровывается как Network Address Translation — трансляция сетевых адресов.

Под трансляцией понимается изменение Source IP, Destination IP или обоих адресов в IP Packet при прохождении через специальное сетевое устройство.

Зачем нужен NAT

NAT применяется для нескольких задач:

  • выход устройств с Private IPv4 в интернет;
  • экономия Public IPv4 Addresses;
  • публикация внутренних сервисов;
  • связывание сетей с разной адресацией;
  • изоляция внутренней структуры адресов;
  • организация облачных и корпоративных сетей;
  • работа домашних Routers.

NAT и IPv4

NAT особенно тесно связан с IPv4, поскольку количество публичных IPv4-адресов ограничено.

Организация может использовать внутри тысячи Private Addresses, но для выхода в интернет ей не обязательно иметь отдельный Public IPv4 для каждого устройства.

На внешнем шлюзе выполняется трансляция.

Private IPv4

Для внутренних сетей используются специальные диапазоны:

ДиапазонНазначение
10.0.0.0/8Частные сети
172.16.0.0/12Частные сети
192.168.0.0/16Частные сети

Эти адреса не предназначены для обычной глобальной маршрутизации в интернете.

Public IPv4

Public IPv4 — адрес, используемый в глобальной маршрутизации интернета при наличии соответствующей сетевой инфраструктуры.

NAT Gateway может преобразовывать множество Private Addresses в один Public Address.

Как работает NAT

Представим компьютер:

192.168.1.25

Он подключается к веб-серверу:

198.51.100.20:443

Пакет сначала выглядит условно так:

Source: 192.168.1.25
Destination: 198.51.100.20

NAT Gateway заменяет Source:

Source: 203.0.113.25
Destination: 198.51.100.20

Когда ответ возвращается на 203.0.113.25, Gateway понимает, какому внутреннему устройству его передать.

NAT Table

Чтобы правильно возвращать ответы, NAT Gateway хранит таблицу трансляций.

Она может содержать внутренний IP, внешний IP, Protocol и Ports.

InternalExternal
192.168.1.25:51001203.0.113.25:62001
192.168.1.26:51002203.0.113.25:62002

Благодаря Ports один Public IPv4 может обслуживать множество одновременных соединений.

SNAT

SNAT, или Source NAT, изменяет Source Address пакета.

Это типичный сценарий выхода внутренних клиентов в интернет.

10.0.1.25 → 203.0.113.25

Внешний сервер видит Public IP NAT Gateway, а не реальный Private IP клиента.

DNAT

DNAT, или Destination NAT, изменяет Destination Address.

Он используется, когда внешнее соединение нужно перенаправить на внутренний сервер.

203.0.113.25:443 → 10.0.2.15:443

Так Web Server с Private IP становится доступен через Public Address шлюза.

SNAT и DNAT

SNATDNAT
Изменяет Source IPИзменяет Destination IP
Часто используется для исходящего трафикаЧасто используется для входящего трафика
Скрывает Private IP клиентаПеренаправляет запрос на внутренний сервис

PAT

PAT, или Port Address Translation, — вариант трансляции, при котором кроме IP используются TCP или UDP Ports.

Именно PAT позволяет множеству устройств одновременно использовать один внешний IPv4.

192.168.1.10:50001 → 203.0.113.25:61001
192.168.1.11:50001 → 203.0.113.25:61002

Даже если исходные Ports совпадают, внешний Gateway может назначить разные значения.

NAT Overload

Термин NAT Overload часто используется для сценария, в котором множество внутренних адресов преобразуются в один Public Address с использованием Ports.

По сути это один из распространенных вариантов PAT.

Static NAT

Static NAT задает постоянное соответствие одного адреса другому.

10.0.2.20 ↔ 203.0.113.30

Такой подход может использоваться для серверов, которым требуется стабильное внешнее отображение.

Dynamic NAT

Dynamic NAT использует Pool доступных внешних адресов.

Внутреннему клиенту временно назначается один из Public IP при создании трансляции.

Такой вариант отличается от PAT, где множество клиентов могут одновременно использовать один внешний адрес.

Static NAT, Dynamic NAT и PAT

ТипПринцип
Static NATПостоянное соответствие адресов
Dynamic NATВнешний IP выбирается из Pool
PATМного клиентов используют один или несколько IP через разные Ports

Port Forwarding

Port Forwarding — распространенный вариант DNAT, когда определенный внешний Port перенаправляется на внутренний Host и Port.

Например:

203.0.113.25:8443 → 192.168.1.50:443

Пользователь подключается к внешнему адресу, а Gateway передает Connection внутреннему серверу.

Пример Port Forwarding

Компания имеет внутренний Web Server:

192.168.10.20:443

Router имеет Public IPv4:

203.0.113.100

Правило:

203.0.113.100:443 → 192.168.10.20:443

позволяет внешнему клиенту открыть сервер через Public IP.

NAT и Firewall

NAT и Firewall часто находятся на одном сетевом устройстве, но это разные функции.

NAT изменяет адреса и Ports, а Firewall принимает решение, разрешен ли Traffic.

NAT не следует считать полноценной заменой Firewall. Отсутствие прямой маршрутизации к Private IP само по себе не является достаточной политикой безопасности.

NAT не равен Firewall

В домашнем Router пользователю может казаться, что устройства защищены именно NAT, поскольку случайное входящее соединение не имеет подходящей трансляции.

Но реальную сетевую политику лучше строить через Stateful Firewall Rules.

Stateful NAT

Большинство распространенных NAT Gateways отслеживает состояние соединений.

Если внутренний Client создал исходящее TCP Connection, Gateway знает, куда вернуть Response.

После завершения или Timeout запись трансляции удаляется.

NAT и TCP

При TCP NAT отслеживает Source и Destination Addresses, Ports и состояние соединения.

Например:

10.0.0.25:51321 → 198.51.100.10:443

после трансляции становится:

203.0.113.25:62001 → 198.51.100.10:443

NAT и UDP

NAT работает и с UDP, хотя UDP не имеет состояния соединения в том же смысле, что TCP.

Gateway создает временное отображение на основании адресов и Ports и удаляет его после определенного периода неактивности.

NAT и ICMP

NAT-устройства также должны корректно обрабатывать часть ICMP Traffic, поскольку он используется для диагностики и передачи информации о сетевых ошибках.

Некорректная фильтрация ICMP может приводить к трудно диагностируемым проблемам.

NAT и DNS

DNS может указывать публичное имя на Public IP NAT Gateway.

app.example.com → 203.0.113.25

DNAT затем отправляет HTTPS Traffic внутреннему серверу.

Внутри корпоративной сети тот же Host может разрешаться иначе, если используется Split DNS.

Split DNS

Split DNS позволяет одному имени возвращать разные IP в зависимости от источника DNS-запроса.

Например:

External: app.example.com → 203.0.113.25
Internal: app.example.com → 10.0.2.15

Так внутренним клиентам не обязательно проходить через внешний NAT.

NAT Loopback

NAT Loopback, или Hairpin NAT, позволяет внутреннему Client обращаться к внутреннему сервису через его внешний Public Address.

Например, сотрудник внутри офиса открывает app.example.com, который разрешается в Public IP компании, после чего Router возвращает Traffic обратно во внутреннюю сеть.

Не каждое устройство реализует такой сценарий одинаково.

Hairpin NAT

Hairpin NAT полезен, когда внутренние и внешние пользователи используют один DNS Name.

Альтернативой является Split DNS, при котором внутренним клиентам сразу выдается Private Address.

NAT и HTTP

Для HTTP Application NAT обычно прозрачен.

Browser устанавливает Connection на IP и Port, а Router выполняет трансляцию на сетевом уровне.

Web Server может видеть Source IP NAT Gateway вместо реального Private IP клиента.

NAT и HTTPS

NAT может изменять сетевые Addresses и Ports, не расшифровывая обычный HTTPS Payload.

TLS работает между соответствующими конечными точками защищенного соединения.

Сам факт NAT не означает TLS Termination.

NAT и Reverse Proxy

NAT и Reverse Proxy решают разные задачи.

NATReverse Proxy
Работает преимущественно на сетевом и транспортном уровнеРаботает на уровне приложения или транспортного проксирования
Изменяет IP и PortsСоздает отдельное соединение к Backend
Не обязан понимать HTTPМожет анализировать HTTP Host и Path

Для публикации веб-приложения часто используют одновременно Public NAT, Load Balancer и Reverse Proxy.

NAT и Load Balancer

Load Balancer может использовать механизмы трансляции трафика для распределения Connections между Backend Servers.

Но балансировка нагрузки является более широкой задачей и может работать на Layer 4 или Layer 7.

NAT и маршрутизация

Routing определяет, куда передать пакет, а NAT изменяет его адреса.

Обычно Gateway сначала применяет определенную комбинацию Routing и NAT Rules согласно собственной сетевой реализации.

Для администратора важно понимать обе части: правильная трансляция бесполезна, если нет маршрута до Destination.

Source Route после NAT

При публикации внутреннего сервера важно, чтобы его ответный Traffic возвращался через тот NAT Gateway, который создал трансляцию.

Иначе может возникнуть асимметричная маршрутизация и Connection перестанет работать корректно.

Asymmetric Routing

Asymmetric Routing означает, что запрос и ответ проходят разными сетевыми путями.

Для Stateful Firewall и NAT это может стать проблемой, если обратный Traffic не проходит через устройство, хранящее состояние трансляции.

NAT и VPN

NAT часто используется вместе с VPN.

Например, две компании имеют пересекающиеся внутренние Subnets:

Company A: 10.0.0.0/24
Company B: 10.0.0.0/24

Такое пересечение мешает Routing. В некоторых случаях NAT используется для представления одной сети под другим диапазоном внутри VPN.

NAT при пересечении сетей

Можно преобразовать одну сторону:

Real: 10.0.0.0/24
Translated: 10.100.0.0/24

Тогда удаленная сеть работает с уникальным диапазоном.

Однако это усложняет диагностику и документацию, поэтому лучше заранее проектировать непересекающиеся IP Plans.

NAT и Site-to-Site VPN

При обычном Site-to-Site VPN NAT часто отключают для Traffic между внутренними корпоративными сетями, чтобы сохранить реальные Private Addresses.

Правила исключения из NAT должны соответствовать VPN Routing.

NAT и IPsec

NAT может создавать дополнительные сложности для некоторых VPN-протоколов, поскольку изменяет сетевые Headers.

Для работы через NAT существуют специальные механизмы совместимости, используемые современными VPN-решениями.

NAT Gateway

NAT Gateway — специализированный компонент, через который Private Subnet получает исходящий доступ во внешнюю сеть.

Он особенно часто встречается в Cloud Architecture.

Private VM
↓
NAT Gateway
↓
Internet

Внешние узлы не могут автоматически начать произвольное соединение к Private VM только потому, что она использует NAT для исходящего Traffic.

NAT в облаке

В Cloud часто создают Public и Private Subnets.

Load Balancer находится во внешнем сегменте, а Backend и Database — во внутренних.

Backend может обращаться к внешним API через NAT Gateway, не получая собственный Public IPv4.

Пример облачной архитектуры

Internet
 ↓
Public Load Balancer
 ↓
Private Backend
 ↓
NAT Gateway → Internet API

Backend принимает входящие Requests через Load Balancer, а NAT используется только для исходящих соединений.

Зачем NAT Gateway приватному серверу

Private Server может нуждаться в доступе к Package Repository, внешнему API или другому интернет-ресурсу.

Выдавать ему отдельный Public IP необязательно.

NAT Gateway позволяет сохранить приватную адресацию и предоставить исходящий доступ.

NAT и Public Subnet

Public Subnet обычно имеет маршрут через Internet Gateway, а отдельные ресурсы могут иметь Public Addresses.

Private Subnet не принимает прямую интернет-маршрутизацию и использует NAT Gateway для нужного исходящего Traffic.

NAT и Security Groups

Security Groups и Firewall Rules должны контролировать, кому разрешено устанавливать Connections.

NAT решает адресную задачу, а Security Policy — задачу разрешения доступа.

NAT в домашнем Router

Домашние устройства получают Private Addresses от DHCP:

192.168.1.10
192.168.1.11
192.168.1.12

Router имеет внешний IPv4 от провайдера и выполняет NAT/PAT для исходящих Connections.

Именно поэтому десятки домашних устройств могут использовать одно интернет-подключение.

NAT и DHCP

DHCP и NAT выполняют разные задачи.

DHCP выдает внутреннему устройству IP Address и сетевые параметры, а NAT преобразует этот адрес при выходе в другую сеть.

Домашний Router часто выполняет обе функции, из-за чего их иногда ошибочно смешивают.

NAT и VLAN

Разные VLAN могут использовать отдельные Private Subnets, но все выходить в интернет через общий NAT Gateway.

VLAN 10: 10.10.10.0/24
VLAN 20: 10.10.20.0/24
 ↓
NAT Gateway
 ↓
Internet

Firewall при этом может применять разные политики к каждому VLAN.

Carrier-grade NAT

CGNAT, или Carrier-grade NAT, используется интернет-провайдерами, когда множество абонентов используют общий пул Public IPv4.

В этом случае NAT существует не только на домашнем Router, но и в сети провайдера.

Двойной NAT

Double NAT возникает, когда Traffic проходит через два уровня трансляции.

Например:

PC
↓
Home Router NAT
↓
Provider CGNAT
↓
Internet

Обычный Web Browsing работает, но входящие Connections, некоторые VPN и Peer-to-peer приложения становятся сложнее.

Почему CGNAT мешает Port Forwarding

Пользователь не контролирует внешний NAT провайдера.

Даже если домашний Router перенаправляет Port на внутренний Server, интернет-запрос сначала должен пройти через CGNAT.

Если провайдер не предоставляет отдельный Public IP или специальный механизм публикации, обычный Port Forwarding может не работать.

Как понять, используется ли CGNAT

Один из признаков — внешний адрес WAN-интерфейса Router отличается от Public IPv4, который видят интернет-сервисы.

Также провайдер может прямо указывать использование CGNAT.

NAT Traversal

NAT Traversal — набор методов, помогающих двум устройствам за NAT устанавливать прямое или опосредованное взаимодействие.

Такие механизмы особенно важны для VoIP, WebRTC, видеосвязи, игр и Peer-to-peer приложений.

STUN

STUN помогает клиенту определить, как его локальный Address представлен во внешней сети через NAT.

Эта информация используется real-time приложениями при установлении соединений.

TURN

Если прямое соединение между клиентами создать не удается, TURN Server может ретранслировать Traffic через промежуточный узел.

Это увеличивает инфраструктурную стоимость и Latency, но повышает вероятность успешного соединения.

ICE

ICE координирует поиск подходящего пути между участниками real-time соединения и может использовать разные варианты прямой связности, STUN и TURN.

NAT Traversal является одной из причин сложности WebRTC-инфраструктуры.

NAT и VoIP

VoIP-протоколы могут передавать IP Addresses и Ports не только в сетевых Headers, но и внутри прикладных сообщений.

NAT изменяет внешний Address, поэтому некоторым системам требуются специальные механизмы для корректного установления медиапотоков.

NAT и FTP-подобные протоколы

Протоколы, которые передают сетевые адреса внутри Payload или открывают дополнительные Connections, исторически создавали сложности для NAT.

Некоторые сетевые устройства использовали Application Layer Gateway для анализа таких протоколов.

Application Layer Gateway

ALG — функция сетевого устройства, которая понимает определенный прикладной Protocol и может корректировать дополнительные данные при NAT.

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

NAT и Docker

Docker часто использует NAT, чтобы Containers с внутренними IP могли обращаться во внешнюю сеть через Host.

При публикации Port также создается правило, позволяющее направить Traffic с Host на Container.

Host:8080 → Container:80

Docker Port Mapping и DNAT

Пользователь обращается к Host Port, а сетевой стек контейнерной платформы перенаправляет соединение на внутренний Container IP и Port.

Это концептуально близко к DNAT.

NAT и Kubernetes

Kubernetes Networking может использовать различные формы SNAT и DNAT в зависимости от CNI, Service и внешней инфраструктуры.

Например, обращение к Service может приводить к перенаправлению Traffic на один из Pods.

Конкретная реализация зависит от сетевого стека кластера.

Source NAT в Kubernetes

При выходе Pod Traffic за пределы кластера Source IP иногда преобразуется в Address Node или другого Gateway.

Это влияет на то, какой Client IP увидит внешний сервис.

NAT и Microservices

Внутри Microservices Architecture лучше использовать DNS и Service Discovery, а не строить взаимодействие вокруг ручного NAT между каждым сервисом.

NAT чаще используется на границах сетей: Cluster-Internet, Data Center-Internet или между отдельными инфраструктурными зонами.

NAT и логирование

Если тысячи клиентов работают через один NAT Gateway, внешний сервис видит один или небольшой набор Public IP.

Для расследования инцидентов одного IP может быть недостаточно — важны Timestamp и Source Port.

Почему NAT усложняет аудит

Public IP перестает однозначно соответствовать одному устройству.

Чтобы определить внутреннего клиента, администратору нужны NAT Logs с точным временем и Mapping Ports.

При большом Traffic такие Logs могут быть объемными.

NAT и Rate Limiting

Если API ограничивает Requests только по Source IP, NAT создает проблему.

Сотни сотрудников одной компании могут выходить через один Public Address и выглядеть для API как один клиент.

Поэтому Rate Limiting лучше дополнять User ID, API Key или другими идентификаторами.

NAT и геолокация IP

Public IP после NAT относится к Gateway или провайдеру, а не обязательно к точному местоположению конкретного пользователя.

При CGNAT один Address вообще может представлять множество абонентов.

Поэтому IP Geolocation всегда является приблизительной характеристикой.

NAT и безопасность

NAT уменьшает прямую видимость внутренней адресной схемы и не создает автоматического Mapping для произвольного входящего Traffic.

Но безопасность должна строиться отдельно.

  • используйте Stateful Firewall;
  • не публикуйте ненужные Ports;
  • ограничивайте DNAT Rules;
  • защищайте Management-интерфейсы;
  • мониторьте NAT Table;
  • логируйте критичные трансляции;
  • проверяйте Routing.

Опасность широкого Port Forwarding

Если Router перенаправляет внешний Port непосредственно на RDP, Database или административный интерфейс, сервис становится доступен из интернета.

Лучше использовать VPN, Bastion Host, Zero Trust Access или другой контролируемый механизм, если прямой Public Access не требуется.

DMZ и NAT

Публичные сервисы можно размещать в отдельном DMZ-сегменте.

DNAT публикует Web Server, а Firewall ограничивает его доступ к внутренней корпоративной сети.

Так компрометация внешнего сервиса не должна автоматически открывать всю LAN.

NAT и IPv6

IPv6 имеет настолько большое адресное пространство, что использовать NAT исключительно ради экономии адресов обычно не требуется.

Устройства могут иметь глобально уникальные IPv6 Addresses, а доступ контролируется Firewall.

NAT66

Трансляция адресов возможна и в IPv6-средах, но она не является базовой необходимостью, как массовый PAT в IPv4.

Перед использованием NAT между IPv6-сетями следует понимать, какую конкретную архитектурную проблему он решает.

NAT64

NAT64 — механизм взаимодействия IPv6 Clients с IPv4 Servers.

Gateway преобразует Traffic между двумя протоколами.

IPv6 Client
↓
NAT64
↓
IPv4 Server

Это один из инструментов постепенного перехода к IPv6.

DNS64

DNS64 часто используется вместе с NAT64.

Он помогает IPv6 Client получить синтезированный IPv6 Address для ресурса, который реально доступен только по IPv4.

NAT и принцип End-to-End

Классическая IP-модель предполагает возможность адресовать конечные устройства напрямую при наличии Routing и Security Policy.

NAT добавляет промежуточное состояние трансляции и усложняет прямые входящие соединения.

Это одна из причин, почему Peer-to-peer и real-time приложения вынуждены использовать NAT Traversal.

Преимущества NAT

  • экономия Public IPv4;
  • использование Private Address Space;
  • централизация выхода в интернет;
  • возможность публикации внутренних сервисов;
  • удобство облачных Private Subnets;
  • сокрытие внутренней адресной структуры от внешней сети.

Недостатки NAT

  • усложняет прямые входящие Connections;
  • добавляет состояние на Gateway;
  • усложняет Troubleshooting;
  • мешает части Peer-to-peer сценариев;
  • может создавать Port Exhaustion;
  • затрудняет идентификацию Client по Public IP;
  • усложняет некоторые VPN и real-time протоколы.

Port Exhaustion

PAT использует конечное пространство транспортных Ports.

Если огромное количество Connections проходит через один Public IP, Gateway может столкнуться с нехваткой доступных комбинаций трансляции.

Это особенно актуально для крупных NAT Gateways с большим числом клиентов.

Как уменьшить риск Port Exhaustion

Можно использовать несколько Public Addresses, увеличивать Pool, контролировать Connection Timeouts и анализировать приложения, создающие чрезмерное количество коротких соединений.

Решение зависит от конкретного NAT Gateway.

NAT Table Exhaustion

Gateway также имеет ограничение по количеству одновременно отслеживаемых Sessions.

Если таблица заполнена, новые Connections могут перестать создаваться.

Поэтому NAT является компонентом, который необходимо масштабировать и мониторить.

Мониторинг NAT

Для крупной инфраструктуры полезно контролировать:

МетрикаЧто показывает
Active TranslationsКоличество активных NAT mappings
Port UsageИспользование доступных Ports
Session RateСкорость создания Connections
Dropped ConnectionsОшибки из-за нехватки ресурсов или политики
Traffic VolumeОбъем данных через Gateway

NAT Gateway как точка отказа

Если вся Private Network выходит в интернет через один NAT Gateway, его отказ может одновременно нарушить работу множества сервисов.

Для критичной инфраструктуры необходимо продумать High Availability.

NAT и High Availability

Отказоустойчивая архитектура может использовать несколько Gateways или Managed NAT Service.

При переключении важно учитывать, как будут обрабатываться уже существующие Stateful Connections.

Часть из них может разорваться и потребовать Reconnect.

Типичные проблемы NAT

  • неправильное SNAT Rule;
  • ошибочный DNAT;
  • не открыт Port на Firewall;
  • нет обратного маршрута;
  • асимметричная маршрутизация;
  • исчерпаны Ports;
  • CGNAT мешает входящему Connection;
  • не работает Hairpin NAT;
  • VPN Traffic случайно попадает под NAT.

Как диагностировать NAT

  1. Проверить Source и Destination Addresses до трансляции.
  2. Проверить NAT Rule.
  3. Проверить Routing.
  4. Проверить Firewall.
  5. Проверить наличие записи в NAT Table.
  6. Проверить обратный Traffic.
  7. Проверить Port и Protocol.
  8. Проверить наличие второго NAT или CGNAT.

Почему сервис доступен изнутри, но не из интернета

Если Web Server открывается по Private IP, но не по Public Address, необходимо проверить DNAT или Port Forwarding, Firewall, внешний IP и маршрут ответа.

Также причиной может быть CGNAT провайдера.

Почему интернет работает, но входящие соединения нет

Исходящий SNAT/PAT не создает постоянного правила для новых входящих Connections.

Чтобы внешний пользователь подключился к внутреннему серверу, обычно нужен DNAT, Port Forwarding или другой опубликованный Endpoint.

Практический пример

Компания размещает приложение в облаке. Web Backend и Database работают в Private Subnets и не имеют собственных Public IPv4.

Внешние пользователи подключаются к Public Load Balancer по HTTPS.

Load Balancer передает Requests Backend Servers по Private IP.

Backend периодически обращается к внешнему платежному API. Для этого Default Route Private Subnet направляет исходящий Traffic через NAT Gateway.

NAT Gateway заменяет Source Private IP Backend на Public IPv4 компании.

Платежный сервис может добавить этот Public IP в Allowlist.

Database не имеет маршрута для прямого входящего Traffic из интернета.

Monitoring отслеживает количество NAT Sessions и использование Ports. При росте нагрузки команда может масштабировать NAT-инфраструктуру до появления отказов.

Таким образом, NAT позволяет внутренним серверам инициировать интернет-соединения, не выдавая каждому из них отдельный Public Address.

NAT для бизнеса

NAT остается фундаментальной частью IPv4-инфраструктуры бизнеса. Он используется в офисах, дата-центрах, VPN, облаках и интернет-подключениях.

Для компании NAT позволяет использовать крупные Private Networks при ограниченном количестве Public IPv4 и централизованно контролировать точки выхода в интернет.

Однако слишком сложная цепочка NAT ухудшает диагностику и может создавать ограничения для real-time приложений и входящих интеграций.

Поэтому NAT стоит использовать там, где он решает конкретную адресную задачу, а безопасность, маршрутизацию и Authentication проектировать отдельно.

Когда NAT особенно полезен

  • Private IPv4 Clients выходят в интернет;
  • публичных IPv4 меньше, чем внутренних устройств;
  • нужно опубликовать внутренний сервис;
  • используются Private Cloud Subnets;
  • нужно связать пересекающиеся Address Spaces;
  • провайдер использует CGNAT;
  • требуется NAT64 при переходе между IPv6 и IPv4.

Когда NAT не нужен

Если между двумя Private Networks существует нормальная маршрутизация с уникальными Address Spaces, выполнять NAT между ними часто нет необходимости.

В IPv6 NAT также обычно не требуется только ради экономии адресов.

Лишняя трансляция усложняет Logs, Troubleshooting и End-to-End Connectivity.

Типичные ошибки при проектировании NAT

  1. Считать NAT заменой Firewall.
  2. Публиковать административные Ports напрямую в интернет.
  3. Не учитывать Port Exhaustion.
  4. Использовать несколько NAT без документации.
  5. Забывать об обратном маршруте.
  6. Применять SNAT к VPN Traffic без необходимости.
  7. Использовать Public IP как уникальный идентификатор пользователя.
  8. Не логировать критичные NAT mappings.
  9. Не учитывать CGNAT при Port Forwarding.
  10. Не мониторить NAT Gateway как критичный компонент.

Как правильно проектировать NAT

Шаг 1. Определить направление Traffic

Нужно понять, требуется исходящий SNAT, входящий DNAT или оба механизма.

Шаг 2. Создать IP Address Plan

Private Networks должны иметь понятные и желательно непересекающиеся диапазоны.

Шаг 3. Определить Public IP Pool

Оцените количество Connections и потребность в Ports.

Шаг 4. Настроить Firewall

Разрешайте только необходимые Protocols и Ports.

Шаг 5. Проверить Routing

Ответный Traffic должен возвращаться через корректный Gateway.

Шаг 6. Настроить Logging

Для критичной инфраструктуры нужно сохранять информацию о трансляциях.

Шаг 7. Добавить Monitoring

Следите за Sessions, Port Usage и Drops.

Шаг 8. Проверить High Availability

Отказ NAT Gateway не должен неожиданно остановить всю Private Network.

Связанные термины

ТерминСвязь с NAT
IPv4NAT широко используется из-за ограниченного Public Address Space
Private IPЧасто преобразуется в Public IP при выходе в интернет
SNATИзменяет Source Address
DNATИзменяет Destination Address
PATИспользует Ports для множества Connections через один IP
Port ForwardingПеренаправляет внешний Port на внутренний сервис
FirewallОпределяет, какой Traffic разрешен
RouterЧасто выполняет NAT на границе сети
CGNATNAT на стороне интернет-провайдера
NAT64Связывает IPv6 Clients и IPv4 Services
VPNМожет работать совместно с NAT
VLANНесколько сегментов могут использовать общий NAT Gateway

Краткий итог

NAT — технология трансляции сетевых адресов, позволяющая изменять Source IP, Destination IP и при необходимости транспортные Ports при прохождении Traffic между сетями.

Самый распространенный сценарий — преобразование множества Private IPv4 Addresses в один или несколько Public IPv4 с помощью SNAT и PAT. Для публикации внутренних сервисов используются DNAT и Port Forwarding.

NAT помогает экономить публичные IPv4 и удобно строить Private Networks, но добавляет состояние и усложняет прямую End-to-End Connectivity. Он не заменяет Firewall, Authentication и правильную Network Segmentation. В крупной инфраструктуре NAT Gateway необходимо мониторить, масштабировать и учитывать как потенциальную точку отказа.

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

6 вопросов
Что такое NAT?

NAT, или Network Address Translation, — технология изменения IP-адресов и иногда портов при прохождении трафика через сетевой шлюз. Она широко используется для выхода устройств с Private IPv4 в интернет через общий Public IP.

Чем SNAT отличается от DNAT?

SNAT изменяет Source Address и обычно используется для исходящего трафика из внутренней сети. DNAT изменяет Destination Address и часто применяется для перенаправления входящих запросов на внутренний сервер.

Что такое PAT?

PAT, или Port Address Translation, — разновидность NAT, использующая TCP или UDP Ports. Благодаря PAT множество внутренних устройств могут одновременно выходить в интернет через один Public IPv4.

Чем NAT отличается от Firewall?

NAT изменяет сетевые адреса и порты, а Firewall разрешает или запрещает трафик по правилам безопасности. Эти функции часто работают на одном устройстве, но NAT не является полноценной заменой Firewall.

Почему Port Forwarding может не работать при CGNAT?

При CGNAT внешний Public IPv4 находится под управлением интернет-провайдера. Домашний Router контролирует только внутренний уровень NAT, поэтому входящий запрос из интернета не сможет дойти до него без дополнительной поддержки со стороны провайдера.

Нужен ли NAT в IPv6?

Для экономии адресов NAT в IPv6 обычно не требуется, поскольку адресное пространство очень велико. Доступ между IPv6-узлами следует контролировать Firewall. Отдельные виды трансляции, например NAT64, применяются для решения конкретных задач совместимости с IPv4.

Была ли статья полезна?
Документ обновляется командой EFSOL. Свяжитесь с нами, если нашли неточность.
Нужна консультация?

Поможем спроектировать, развернуть и сопроводить облачную или гибридную инфраструктуру под задачи вашего бизнеса.

Ответим в течение часа в рабочее время
Заказать звонок

Оставьте свои данные для того, чтобы специалист с вами связался.

Заказать звонок

Оставьте свои данные для того, чтобы специалист с вами связался.