Открыть сервис

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

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

История

Концепция трансляции адресов возникла в начале 1990-х годов как временное решение проблемы нехватки IPv4-адресов. С ростом числа подключённых к Интернету устройств стало очевидно, что 32-битное адресное пространство IPv4 (около 4,3 миллиарда адресов) исчерпаемо. В 1994 году инженеры Cisco Systems, в частности Пол Фрэнсис (Paul Francis), предложили механизм NAT, который позволял использовать частные адреса (RFC 1918) внутри локальных сетей и преобразовывать их в публичные при выходе во внешнюю сеть.

Первоначально NAT рассматривался как временная мера до внедрения IPv6, однако его широкое распространение привело к тому, что технология стала неотъемлемой частью сетевой инфраструктуры. В 1996 году был опубликован RFC 1631 «The IP Network Address Translator (NAT)», заложивший базовые принципы работы. Впоследствии стандарт развивался: появились RFC 2663 (NAT Terminology and Considerations), RFC 3022 (Traditional NAT), RFC 4787 (Network Address Translation (NAT) Behavioral Requirements for Unicast UDP) и другие.

Принцип работы

NAT работает на сетевом уровне (уровень 3) модели OSI, но может затрагивать и транспортный уровень (уровень 4) при трансляции портов. Устройство, выполняющее NAT (обычно маршрутизатор или межсетевой экран), ведёт таблицу трансляции, в которой записываются соответствия между внутренними (частными) и внешними (публичными) адресами и портами.

При отправке пакета из внутренней сети во внешнюю:

  1. Маршрутизатор получает пакет с частным IP-адресом источника (например, 192.168.1.10) и портом (например, 12345).
  2. Он заменяет адрес источника на свой внешний публичный IP-адрес (например, 203.0.113.1) и, при необходимости, изменяет порт источника на уникальный в рамках сессии (например, 54321).
  3. Запись о соответствии (192.168.1.10:12345 ↔ 203.0.113.1:54321) сохраняется в таблице NAT.
  4. Пакет отправляется во внешнюю сеть.
  5. Когда приходит ответный пакет, маршрутизатор по таблице NAT определяет, какому внутреннему устройству он предназначен, и заменяет адрес и порт назначения обратно на частные.

Классификация

По типу трансляции

Статический NAT (Static NAT, SNAT) — устанавливает постоянное однозначное соответствие между одним частным и одним публичным IP-адресом. Используется для обеспечения доступа извне к внутренним серверам (например, веб-серверу). При этом каждый внутренний адрес требует отдельного публичного.

Динамический NAT (Dynamic NAT) — пул публичных адресов распределяется между внутренними устройствами по мере необходимости. Когда устройство инициирует соединение, ему выделяется свободный публичный адрес из пула. После завершения сессии адрес возвращается в пул.

Маскарадинг (NAPT, PAT, NAT Overload) — наиболее распространённый вид, при котором множество внутренних адресов транслируются в один внешний IP-адрес, но с разными портами. Это позволяет десяткам и сотням устройств выходить в Интернет через один публичный адрес. Используется в домашних и офисных маршрутизаторах.

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

Source NAT (SNAT) — изменяется адрес источника пакета. Применяется для исходящих соединений из внутренней сети во внешнюю.

Destination NAT (DNAT) — изменяется адрес назначения пакета. Используется для перенаправления входящих соединений на внутренние серверы (например, при порт-форвардинге).

Виды реализации

Традиционный NAT (Traditional NAT) — базовая реализация, описанная в RFC 3022. Включает как статический, так и динамический NAT.

Двунаправленный NAT (Bi-directional NAT) — позволяет устанавливать соединения как из внутренней сети во внешнюю, так и из внешней во внутреннюю, при условии наличия соответствующих правил трансляции.

Порт-форвардинг (Port Forwarding) — частный случай DNAT, при котором входящие пакеты на определённый порт внешнего адреса перенаправляются на конкретный внутренний адрес и порт. Широко используется для доступа к веб-камерам, игровым серверам или системам удалённого доступа.

NAT64 — механизм, позволяющий узлам с IPv6-адресами взаимодействовать с узлами, использующими IPv4. Включает трансляцию адресов между двумя протоколами.

NAT44 — классическая трансляция между IPv4-адресами, наиболее распространённая в настоящее время.

Применение

Экономия адресного пространства

Основное применение NAT — решение проблемы дефицита IPv4-адресов. Провайдеры и организации используют частные адреса (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) для внутренних сетей, а выход в Интернет обеспечивают через один или несколько публичных адресов.

Безопасность

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

Организация доступа к внутренним ресурсам

С помощью DNAT и порт-форвардинга можно публиковать внутренние сервисы (веб-серверы, FTP-серверы, игровые серверы) в Интернете, используя один внешний IP-адрес.

Поддержка мультимедиа и P2P-протоколов

Некоторые протоколы (например, SIP, FTP в активном режиме, BitTorrent) требуют установки прямых соединений между узлами, что затруднено при наличии NAT. Для их работы используются такие технологии, как STUN (Session Traversal Utilities for NAT), TURN (Traversal Using Relays around NAT) и ICE (Interactive Connectivity Establishment), а также UPnP (Universal Plug and Play) и NAT-PMP (NAT Port Mapping Protocol).

Проблемы и ограничения

Несовместимость с некоторыми протоколами — протоколы, которые встраивают IP-адреса в тело пакета (например, FTP в активном режиме, SIP, IPsec), могут работать некорректно без дополнительной настройки (ALG — Application Level Gateway).

Проблемы с P2P-соединениями — для установления прямого соединения между двумя узлами за NAT требуется обходной механизм (STUN, TURN, ICE).

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

Сложность отслеживания соединений — при большом количестве одновременных сессий таблица NAT может переполняться, что приводит к сбросу новых соединений.

Нарушение принципа end-to-end — NAT нарушает сквозную модель TCP/IP, где каждый узел должен быть адресуем напрямую. Это усложняет работу некоторых сервисов и требует дополнительных механизмов для обеспечения связности.

Сравнение с IPv6

Разработка IPv6 (протокол с 128-битным адресным пространством) изначально предполагала отказ от необходимости NAT, так как каждый узел может получить уникальный глобальный адрес. Однако на практике IPv6 внедряется медленно, и NAT продолжает широко использоваться в IPv4-сетях. В IPv6 существуют аналогичные механизмы (NAT66, NPTv6), но они применяются реже, в основном для смены префикса или обеспечения приватности.

Интересные факты

  • Термин «NAT» часто путают с «маскарадингом» (IP masquerade), хотя последний является лишь одной из реализаций динамического NAT с перегрузкой портов.
  • В операционных системах семейства Linux для настройки NAT используется подсистема netfilter (iptables, nftables), а в Windows — служба маршрутизации и удалённого доступа (RRAS).
  • Некоторые интернет-провайдеры применяют Carrier-Grade NAT (CGNAT, NAT444), при котором трансляция осуществляется на уровне оператора связи, чтобы экономить публичные адреса. Это может вызывать дополнительные проблемы с доступом к сервисам и игровыми соединениями.
  • Технология NAT была запатентована компанией Cisco Systems в 1994 году, но патент истёк в 2014 году.

Источники

  • RFC 1631 «The IP Network Address Translator (NAT)» (1996)
  • RFC 3022 «Traditional IP Network Address Translator (Traditional NAT)» (2001)
  • RFC 2663 «IP Network Address Translator (NAT) Terminology and Considerations» (1999)
  • RFC 4787 «Network Address Translation (NAT) Behavioral Requirements for Unicast UDP» (2007)
  • RFC 5382 «NAT Behavioral Requirements for TCP» (2008)
  • RFC 5508 «NAT Behavioral Requirements for ICMP» (2009)
  • Cisco Systems, «Network Address Translation (NAT) FAQ»
  • Таненбаум Э., Уэзеролл Д. «Компьютерные сети» (5-е издание, 2012) — глава 5.6 «Трансляция сетевых адресов»
  • Олифер В. Г., Олифер Н. А. «Компьютерные сети. Принципы, технологии, протоколы» (5-е издание, 2016) — глава 10 «Трансляция сетевых адресов»

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →