Трансляция сетевых адресов (NAT) это технология, которая позволяет отображать IP адреса (номера портов) из одной группы в другую, прозрачно для конеченого пользователя. NAT может использоваться для достижения двух основных целей: * использование единственного IP-адреса для доступа в Интернет с нескольких компьютеров;
* сокрытие внутренней структуры корпоративной сети.
Принципы организации сети Интернет требуют, чтобы каждый узел сети имел уникальный IP-адрес. Однако из-за все возрастающего дефецита свободных IP-адресов получение индивидуального IP-адреса для каждого компьютера в организации может быть не всегда оправдано.
Также, для сетей на базе протокола IP, не требующих непосредственного подключения к Интернет выделено три диапазона IP-адресов (IP-сетей):
10.0.0.0 - 10.255.255.255;
172.16.0.0 - 172.31.255.255;
192.168.0.0 - 192.168.255.255;
Данные адреса также иногда называют частными или "серыми" IP-адресами. Таким образом любая организация может назначать узлам внутри своей локальной сети IP-адреса из указанных диапазонов. Однако, непосредственный доступ в Интернет из таких сетей невозможен. Данное ограничение можно обойти за счет технологии NAT.
Достаточно иметь единственный узел с доступом в Интернет и имеющим уникальный ("белый") IP-адрес, выданный провайдером. Такой узел будет называетсяваться шлюзом. Шлюз должен иметь, как минимум два сетевых, адаптера (сетевых карты, модемов и т.д.), один из которых обеспечивает доступ в Интернет. Этому внешнему адаптеру присвоен "белый" IP-адрес. Остальным, внутренним адаптерам могут быть присвоены как "белые", так и "серые" IP-адреса. При прохождении сетевых пакетов через шлюз, с внутреннего адаптера на внешний происходит трансляция сетевых
адресов (NAT), т.е. подмена одних адресов на другие.
В общем виде, существует довольно много схем трансляции сетевых адресов. Большинство из них описаны в RFC-1631, RFC-2663, RFC-2766, RFC-3022. В Linux подобная схема NAT называется "Masquarading".
Трансляция сетевых адресов выполняется в процессе контроля транзитных соединений. Когда пакет IP-соединения с "серым" адресом источника передается драйвером TCP/IP к драйверу внешнего сетевого адаптера, драйвер Lan2net перехватывает пакет и модифицирует в нем IP-адрес источника и номер порта источника для протоколов UDP и TCP. Для пакетов протокола ICMP модифицируется идентификатор запроса. После модификации пакета он передается драйверу
внешнего сетевого адаптера и далее отсылается целевому узлу в Интернет. Для принятых ответных пакетов данного соединения происходит обратная модификация указанных параметров.
В процессе модификации, "серый" IP-адрес источника заменяется на "белый" IP-адрес, назначенный внешнему сетевому адаптеру. При дальнейшей передаче пакет выглядит, как будь-то, он отправлен с "белого" IP-адреса. Тем самым обеспечивается уникальность IP-адреса источника соединения в рамках всей сети Интернет.
Модификация номеров TCP- и UDP- портов источника и идентификатора ICMP-запроса осуществляется таким образом, чтобы значения данных параметров оставались уникальными в рамках всех транзитных и исходящих IP-соединений для данного сетевого адаптера. В Lan2net уникальные номера портов источника и идентификаторов запроса назначаются из диапазона 30000-43000.
Получив ответные пакеты, драйвер внешнего сетевого адаптера передает их драйверу TCP/IP. В этот момент пакеты перехватываются драйвером Lan2net. Драйвер Lan2net опеределяет принадлежность пакетов исходному IP-соединению. Так как при модификации номеров TCP- или UDP-портов или идентификатора ICMP-запроса в исходящих пакетах им были присвоены уникальные значения, то теперь на основе этих значений драйвер может восстановить оригинальный ("серый") IP-адрес источника запроса. Таким образом, в ответных пакетах значение IP-адрес назначения заменяется на IP-адрес источника запроса, а номера TCP- или UDP-портов или идентификатора ICMP-запроса также восстанавливают свои оригинальные значения. После этого ответные пакеты передаются драйверу TCP/IP и далее через внутренний адаптер к узлу, сделавшему запрос.
Как видно, описаный механизм обеспечивает прозрачный доступ в Интернет с узлов с "серыми" IP-адресами. Кроме того, все соединения после шлюза выглядят как, если бы они были установлены с единственного "белого" IP-адреса. Тем самым обеспечивается сокрытие внутренней структуры (топологии) корпоративной или домашней сети.