Определение

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

Любой экономист знает, что, когда возникает дефицит товаров массового спроса, сразу начинают расти цены, вводятся карточки и люди пытаются найти замену этим продуктам. Уникальные в глобальном пространстве Internet адреса, обычно называемые IP-адресами, в этом смысле не исключение.

Internet Engineering Task Force вот уже почти десять лет предупреждает о грядущем дефиците адресов в существующем сейчас адресном пространстве, формируемом IPv4. И хотя, по-видимому, новая версия протокола IPv6 будет способна достаточно долгое время удовлетворять требованиям постоянно растущего Internet, предложенные за последние несколько лет меры уже получили законный статус.

Одно из подобных предложений описывает опубликованный в 1994 году стандарт RFC 1631, «Транслятор сетевых IP-адресов» (The IP Network Address Translator). В период становления Internet потребители были вынуждены использовать уникальные в глобальном масштабе сетевые адреса вне зависимости от того, планировали они подключаться к глобальному пространству Internet или нет. Идея состояла в том, чтобы избежать потенциальных конфликтов в том случае, если бывшая ранее частной сеть в конце концов присоединялась к общедоступной Internet.

В условиях продолжающего экспоненциально расширяться Internet присваивание «хороших», то есть уникальных в глобальном смысле сетевых адресов частным сетям стало считаться непроизводительной тратой ценных виртуальных ресурсов. В соответствии со стандартом Network Address Translation определенные IP-адреса выделены для параллельного использования в частных сетях и в общедоступной сети. Как указано в спецификации RFC 1597 «Резервирование адресов для частных Internet» (Address Allocation for Private Internets), разрешено использовать адреса в следующих диапазонах: от 10.0.0.0 до 10.255.255.255; от 172.16.0.0 до 172.31.255.255; от 192.168.0.0 до 192.168.255.255. В соответствии с условиями этого соглашения не предполагается, что по этим адресам маршрутизаторы передают какие-либо пакеты в Internet.

Простейшее устройство NAT имеет два сетевых соединения: одно с Internet и одно с частной сетью. Хосты в частной сети, использующие частные IP-адреса (иногда также называемые адресами Network 10, которые начинаются с 10.0.0.0 в диапазоне, выделенном для частного использования), связываются с Internet, передавая пакеты непосредственно на устройство NAT. В отличие от обычных маршрутизаторов, которые просто считывают адреса отправителя и получателя каждого пакета, прежде чем передать их по назначению, устройства NAT модифицируют заголовки пакетов, заменяя адрес отправителя в частной сети на свой собственный Internet-адрес.

Недостатки NAT

При использовании NAT хосты Internet взаимодействуют напрямую с NAT-устройством, а не с реальным хостом в частной сети. Входящие пакеты передаются по IP-адресу устройства NAT, а устройство меняет адрес назначения в заголовке пакета со своего собственного Internet-адреса на адрес частной сети реального хоста назначения.

В результате — теоретически — единый уникальный в глобальном масштабе IP-адрес может скрывать за собой сотни, тысячи или даже миллионы хостов, чьи адреса определены в частной сети. На практике, однако, такой подход имеет ряд недостатков. Например, многие Internet-протоколы и приложения существенно опираются на тот факт, что сеть в действительности поддерживает соединение из конца в конец, когда пакеты передаются без каких-либо изменений от отправителя получателю. Архитектура IP-защиты, к примеру, не может поддерживать работу через устройство NAT, поскольку оригинальные заголовки, в которых указаны исходные IP-адреса отправителей, защищены с помощью цифровой подписи. Измените исходный адрес — и цифровая подпись потеряет свою целостность.

Использование NAT к тому же усложняет работу администраторов. Конечно, NAT — превосходное решение для организации, филиала или даже подразделения, которые не могут получить достаточное количество уникальных Internet-адресов. Однако при реорганизации, объединении или покупке другой компанией, когда требуется объединение двух или нескольких частных сетей, возникают большие сложности. Даже если структура организации остается достаточно стабильной, системы NAT могут случайно оказаться вложенными структурами, превращая маршрутизацию в настоящий кошмар.

За границей частной сети

Хосты внутри частной сети обычно без труда связываются с серверами за пределами организации, однако хосты в Internet не всегда могут легко получать доступ к серверам частной сети. Если внешним хостам требуется такой доступ, они взаимодействуют напрямую с одним хостом — самим устройством NAT. Частная сеть, по существу, не видна внешнему миру, и считается, что весь трафик из этой сети — это трафик, отправляемый и присылаемый на устройство NAT.

Network Address Port Translation (NAPT) помогает до некоторой степени решить эту проблему за счет преобразования не только самого IP-адреса, но и порта транспортного уровня. Таким образом, входящий пакет, адресованный на порт Port 80 (как правило, используемый для HTTP-пакетов) на устройстве NAPT, может быть преобразован и передан на Web-сервер частной сети. Без преобразования порта устройство NAT не может «узнать», на какой хост частной сети передавать эти пакеты.

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

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


NAT в действии

Представленный на этой диаграмме маршрутизатор, поддерживающий NAT, имеет IP-адрес 10.25.1.1 во внутренней сети и адрес 126.22.99.144 — во внешней. Каждый раз, когда хост внутренней сети (10.25.1.x) делает запрос к Internet, устройство NAT преобразует 10.25.1.x в 126.22.99.144. Внутренняя машина может напрямую обратиться к любому хосту внешней сети, при том что «снаружи» будет казаться, что весь исходящий трафик отправляется с единого IP-адреса маршрутизатора.