
УМК Комп. сети ч.2 / ответы к вопросам / Трансляторы сетевых адресовNAT
.docТрансляторы сетевых адресов
Трансляция сетевых адресов (Network Address Translation, NAT) - часто применяемая функция proxy-сервера. Одна из важных задач, которую выполняет межсетевой экран - сокрытие информации о внутренней сети от посторонних. Эта информация включает в себя данные о настройке и адресации TCP/IP для серверов и рабочих станций сети. Чтобы скрыть информацию об узлах сети, программа NAT при выполнении запросов от имени клиентов локальной сети применяет собственный IP-адрес (или диапазон IP-адресов). Внутри сети клиенты взаимодействуют при помощи реальных IP-адресов. Когда же запрос посылается через межсетевой экран, NAT подставляет в поле источника собственный адрес. При возврате ответа эта программа заменяет свой адрес в поле получателя на адрес отправившего исходный запрос клиента.
Важно отметить, что существует несколько методов реализации NAT. Некоторые трансляторы адресов осуществляют это посредством статического присваивания адресов (static address assignment), адрес клиента в локальной сети привязывается к фиксированному IP-адресу, который служит программе NAT во внешнем мире. Трансляторы, действующие по принципу динамического присваивания адресов (dynamic address assignment), выделяют IP-адрес для использования во внешней сети, если клиент делает запрос, проходящий через proxy-сервер. По завершении сеанса связи с клиентом или после истечения заданного интервала времени адрес возвращается в список свободных адресов и может быть предоставлен другому компьютеру.
Если трансляторы сетевых адресов работают в одном направлении, то адреса присваиваются клиентам локальной сети в момент инициации внешнего соединения. Они также бывают двунаправленными, при этом входящие IP-адреса получателя изменяются так, чтобы пакет пересылался серверу локальной сети с другим адресом
Концепция трансляции сетевых адресов, о которой шла речь до сих пор, обычно называется базовой трансляцией адресов (basic NAT). Ее реализация требует наличия одного или нескольких Internet-адресов, с помощью которых сервер NAT создает соединения для ряда клиентов в локальной сети. Это означает, что число IP-адресов сервера должно быть равно максимально возможному числу активных исходящих соединений. Если в распоряжении сервера NAT 10 IP-адресов, только
10 клиентов локальной сети смогут одновременно устанавливать исходящие соединения.
На рис. 7.3 показан пример подобной ситуации. Здесь сетевому адаптеру рабочей станции А присвоен адрес 10.10.10.1. Когда с этой станции поступает запрос на установку Internet-соединения, сервер NAT берет для формирования соединения адрес 140.176.123.1 из блока своих адресов.
Затем рабочие станции В и С также направляют серверу запросы на установку соединения, и он отдает два следующих адреса. Когда же к Internet попытается подключиться рабочая станция D, свободных адресов больше не останется, и запрос завершится неудачей. При использовании статической трансляции адресов, запрос на установку Internet-соединения с рабочей станции D никогда не увенчается успехом. В случае динамической трансляции адресов рабочая станция D сможет повторить попытку после того, как другая рабочая станция освободит адрес и вернет его в блок адресов.
Если число исходящих соединений в вашей сети ограничено, базовая трансляция адресов станет идеальным решением. Но этот метод не будет работать, если вам нужно обеспечить одновременную установку соединений для многочисленных клиентов при условии, что вы не располагаете достаточно большим количеством IP-адресов
ТTрансляция адресов портов
В главе 2 мы обсуждали концепцию сонетов, представляющих собой комбинацию " из IP-адреса и номера порта, которая применяется для однозначной идентификации конечных точек TCP- или UDP-соединения. Порты 0-1023 обычно (но не ( всегда) зарезервированы для серверов, а с портами от 1024-го и последующими могут работать клиенты. Например, в процессе TCP-соединения клиент посылает серверу запрос, включая в его заголовок IP-адрес и номер порта получателя, а также собственный адрес и номер порта. При этом порты отправителя и получателя не обязательно должны совпадать. Они предназначены лишь для однозначной идентификации соединения, чтобы компьютер мог определить, какое приложение взаимодействует с другим приложением на другом узле.
Номер порта получателя пакета обычно задает используемую службу. Так, серверы Telnet, как правило, ожидают установки соединения на 23-м порту. Но порт отправителя может быть любым. Нужно лишь, чтобы сервер Telnet знал его и указывал при ответе на запрос клиента.
Чтобы расширить число возможных исходящих соединений и при этом не увеличивать количество отведенных серверу NAT адресов, в новой форме NAT, которая называется трансляцией адре сов сетевых портов (Network Address Port Translation, NAPT), допустимо в клиентских запросах заменять и IP-адреса, и номера портов отправителя. С помощью этого метода один IP-адрес можно распределить между множеством клиентов локальной сети просто за счет изменения номера порта отправителя. Сервер NAT поддерживает таблицу, в которой каждому соединению клиента с внешним миром сопоставляется уникальная комбинация IP-адреса и номера порта.
Иногда для обозначения NAPT употребляются термины трансляция адресов портов (Port Address Translation, PAT) и перегрузка NAT (NAT Overloading).
Благодаря NAPT единственный IP-адрес может одновременно служить большому числу клиентов локальной сети.
Отметим, что кроме IP-адреса и, возможно, номера порта отправителя должны изменяться и другие поля-контрольные суммы заголовков пакетов. Если при этих изменениях не изменить и котрольную сумму заголовка, то пакет на другом конце соединения будет отброшен, т.к. соответствующий стек ТСР/IP определит, что пакет был модифицирован или поврежден при передаче. Поэтому серверы NAT записывают в заголовок новую контрольную сумму.