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

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

Для однозначной идентификации узла отправителя привлекается дополнитель­ная информация. Если в IP-пакете находятся данные протокола UDP или TCP, то в качестве такой информации выступает номер UDP- или TCP-порта соот­ветственно. Но и это не вносит полной ясности, поскольку из внутренней сети может исходить несколько запросов с совпадающими номерами портов отправи­теля, а значит, опять возникает вопрос об однозначности отображения единст­венного глобального адреса на набор внутренних адресов. Решение состоит в том, что при прохождении пакета из внутренней во внешнюю сеть каждой паре {внутренний частный адрес; номер TCP- или UDP-порта отправителя} ставится в соответствие пара {глобальный IP-адрес внешнего интерфейса; назначенный номер TCP- или UDP-порта}. Назначенный номер порта выбирается произволь­но, однако должно быть выполнено условие его уникальности в пределах всех узлов, получающих выход во внешнюю сеть. Соответствие фиксируется в таб­лице.

Эта модель при наличии единственного зарегистрированного IP-адреса, полу­ченного от поставщика услуг, удовлетворяет требованиям по доступу к внешним сетям большинства сетей средних размеров.

На рис. 20.9 приведен пример, когда в тупиковой сети А используются внутрен­ние адреса из блока 10.0.0.0. Внешнему интерфейсу маршрутизатора этой сети поставщиком услуг назначен адрес 181.230.25.1.

Внутренняя сеть

Сервер telnet

136.56.28.8

 

Частный адрес Порт Глобальный адрес Назначенный порт
10.0.1.4 181.230.25.1
10.0.2.15 "181.230.25.1
10.0.2.3 181.230.25.1
Рис. 20.9. Трансляция сетевых адресов и портов для исходящих TCP- и UDP-сеансов


Когда хост 10.0.1.4 внутренней сети посылает во внешнюю сеть пакет серверу telnet, то он в качестве адреса назначения использует его глобальный адрес 136.56.28.8. Пакет поступает маршрутизатору R1, который знает, что путь к сети 136.56.0.0/16 идет через пограничный маршрутизатор R2. Модуль NAPT маршру­тизатора R2 транслирует адрес 10.0.1.4 и порт TCP 1245 источника в глобально уникальный адрес 181.230.25.1 и уникально назначенный TCP-порт, в приведен­ном примере — 3451. В таком виде пакет отправляется во внешнюю сеть и дости­гает сервера telnet. Когда получатель генерирует ответное сообщение, то он в качестве адреса назначения указывает единственный зарегистрированный гло­бальный адрес внутренней сети, являющийся адресом внешнего интерфейса NAPT- устройства. В качестве номера порта получателя сервер помещает назначенный номер TCP-порта, взятый из поля порта отправителя пришедшего пакета. При поступлении ответного пакета на NAPT-устройство внутренней сети именно по номеру порта в таблице трансляции выбирается нужная строка. По ней опреде­ляется внутренний IP-адрес соответствующего узла и действительный номер порта. Эта процедура трансляции полностью прозрачна для конечных узлов.

ВНИМАНИЕ-----------------------------------------------------------------------------------------------------------------------------------------------

Заметьте, что в таблице имеется еще одна запись с номером порта 1245, такая ситуация вполне возможна: операционные системы на разных компьютерах независимо присваива­ют номера портов клиентским программам. Именно для разрешения такой неоднозначно­сти и привлекаются уникальные назначенные номера портов.

В технологии NAPT разрешаются только исходящие из частной сети TCP- и UDP- сеансы. Однако возникают ситуации, когда нужно обеспечить доступ к некото­рому узлу внутренней сети извне. В простейшем случае, когда служба зарегист­рирована, то есть ей присвоен хорошо известный номер порта (например, WWW или DNS), и, кроме того, эта служба представлена во внутренней сети в единст­венном экземпляре, задача решается достаточно просто. Служба и узел, на котором она работает, однозначно определяются хорошо известным зарегистрированным номером порта службы.

Завершая рассмотрение технологии NAT, заметим, что помимо традиционной технологии NAT существуют и другие ее варианты, например двойной трансля­ции сетевых адресов, при которой модифицируются оба адреса — и источника, и приемника (в отличие от традиционной технологии NAT, когда модифициру­ется только один адрес). Двойная трансляция сетевых адресов необходима, ко­гда частные и внешние адресные пространства имеют коллизии. Наиболее час­то это происходит, когда внутренний домен имеет некорректно назначенные публичные адреса, которые принадлежат другой организации. Подобная ситуа­ция может возникнуть из-за того, что сеть организации была изначально изо­лированной и адреса назначались произвольно, причем из глобального про­странства. Или же такая коллизия может быть следствием смены поставщика услуг, причем организация хотела бы сохранить старые адреса для узлов внут­ренней сети.