Трансляция Сетевых Адресов Network Address Translation подробное описание технологии

Трансляция сетевых адресов по английский Network Address Translation (NAT) это технология замены ip адресов и портов в заголовке ip пакета. Чаще всего nat используется, чтобы заменить ip адрес внутренней сети на ip адрес из внешней сети. Это делается, чтобы преодолеть нехватку адресов IPv4. 

Внутренние и внешние IP адреса

Внешние ip адреса это обычные адреса, которые можно применять в интернет. Они должны быть уникальными во всём мире, их нельзя использовать просто так. Нужно получать разрешение у корпорации ICANN, у одного из ее региональных регистраторов. 

Проблема с внешними адресами в протоколе ipv4 в том, что их не хватает для современного масштаба интернет.  Адресов ipv4 примерно 4 млрд., а сейчас устройств в интернете гораздо больше.  

Внутренние IP адреса это три специальных, диапазонов ip адресов, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 которые можно использовать для создания внутренних или частных сетей. Диапазоны определены в документе RFC 1918. Эти адреса не могут использоваться в интернет, зато их можно применять в своей сети без обращения в ICANN. Разные частные сети, могут использовать одни и те же диапазоны внутренних ip адресов.

Пример использования NAT

Как работает технология NAT для преобразования внутренних адресов во внешние? Предположим, у нас есть сеть организации в которой используются внутренние адреса из диапазона 192.168.1.0. Есть Интернет в котором такие адреса использовать нельзя и внутренняя сеть подключаемая к интернет через устройство NAT.  

Устройство NAT имеет один внешний ipv4 адрес 184.86.48.128 и когда компьютеры из внутренней сети хотят подключиться к интернету, устройство NAT преобразует ip адреса из внутренней сети в ip адрес внешней сети. 

Типы NAT

Есть достаточно много разных вариантов технологии NAT. Мы рассмотрим 3 типа, которые используются чаще всего. Однако, кроме них есть и другие возможные варианты. 

Первый тип это статическое отображение ip адресов один к одному. В этом случае, нам нужно иметь столько же внешних адресов, сколько и компьютеров во внутренней сети. т.е. 4 компьютера и 4 ip адреса в нашем случае. И у нас фиксированное отображение внутренних адресов во внешние ip адреса. 

Такая схеме используетя редко и она возможна, когда Вы подключаете сеть организации не к интернет, а к какой-то другой организации, где тоже используются внутренние ip адреса и возможен конфликт ip адресов. 

Второй вариант это динамическое преобразование, когда набор внутренних ip адресов отображается на группу внешних ip адресов. В случае динамического NAT у нас есть несколько внешних ip адресов, которые поочередно используются разными компьютерами из внутренней сети. Например сначала компьютер 1 использует первый адрес, а компьютер 3 второй адрес. 

Через некоторое время, второй компьютер может использовать второй адрес, а третий компьютер первый адрес. Таким образом, преобразование выполняется динамически. 

Третий вариант, который используется чаще всего это, когда все адреса из внутренней сети, отображаются на один внешний ip адрес. 

Рассмотрим, как работает вариант NAT one-to-many, потому что с его помощью, можно подключать к интернет большие сети организаций, используя один внешний ip адрес (184.86.48.128). Именно это позволяет частично смягчить проблему нехватки адресов ipv4. 

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

Работа NAT

Как работает nat в режиме masquerading? Предположим, что первый компьютер решил зайти на сайт. Он отправляет пакет, в ip адресе указывается ip адрес компьютера из внутренней сети (192.168.1.2), в поле порт указывается динамический порт, выданный браузеру операционной системой (57160). И пакет предназначен для 80 порта адреса Веб-сайта. 

Но, так как адреса из внутренней сети не могут использоваться в интернет, то устройству nat нужно заменить ip адрес из внутренней сети в заголовке пакета в адресе отправителя (192.168.1.1), на ip адрес из внешней сети (184.86.48.128). 

Как это делает устройство nat? После того, как устройство nat получило пакет, оно записывает внутренний ip адрес и внутренний порт в таблицу и генерирует пару внешний адрес и внешний порт для замены в пакете. Так как у нас всего лишь один внешний адрес, то именно он записывается в поле внешний ip. Внешний порт генерируется случайным образом. Устройство нат сгенерировало адрес пота 48202. 

На следующем этапе происходит трансляция, т.е. замена ip адреса и порта. IP адрес и порт отправителя удаляются из пакета и на их место записываются новые данные из таблицы nat. Внешний ip адрес устройства nat и внешний порт, которое устройство nat сгенерировало случайным образом. 

В таком виде пакет передается на веб сервер. Когда приходит ответ от веб-сервера, там в качестве получателя, указывается ip адрес устройства nat и порт на этом устройстве. 

Но в реальности эти данные предназначены не для устройства nat, а для компьютера внутренней сети. Поэтому устройство нат должно понять к какому компьютеру во внутренней сети предназначены данные. Затем изменить ip адрес и порт, передать данные нужному компьютеру. Это делается, с помощью таблицы nat. 

В таблице nat ищется запись в которой внешний ip адрес и внешний порт, такие же как в поступившем пакете. Пока у нас в таблице одна запись, поэтому устройство nat берет из этой записи внутренний ip адрес интересующего нас компьютера и его порт. Устройство nat сново производит замену ip адреса и порта в пакете и в в таком виде передает пакет во внутреннюю сеть. 

Что происходит если в интернет захочет зайти какой-нибудь другой компьютер, предположим, что компьютер 4 тоже хочет зайти на веб-сайт rocksmith.ru. Устройство nat работает аналогично, извлекает ip адрес и порт, записывает их в таблицу nat. В качестве внешнего ip адреса указывается единственный внешний ip адрес устройства nat и номер внешнего порта снова генерируется случайным образом. 

Адрес и порт из внутренней сети меняются на адрес и порт из внешней сети. И в таком виде пакет передается в интернет. 

Когда приходит ответ от веб-сервера, снова выполняется поиск пары внешний ip адрес и внешний порт. В таблице nat ищется соответствующие им внутренний ip адрес и внутренний порт. Производится замена в заголовке пакета и пакет передается во внутреннюю сеть. Можете посмотреть видео, если что-то было не ясно. 

Преимущества NAT

Эта технология долго позволяла справляться с нехваткой адресов ipv4. Вы можете подключить к интернет сеть крупной организации, где много компьютеров, с помощью всего лишь одного внешнего адреса ipv4. 

Эту технологию легко развернуть и использовать, Вам нужно всего лишь одно устройство nat и адреса для внутренней сети. Вы можете свободно использовать из диапазона частных адресов не обращаясь в ICANN. 

Дополнительное преимущество в безопасности, технология nat скрывает внутреннюю структуру сети от внешнего мира. Для внешнего мира есть всего один адрес ipv4, а что установлено внутри сети, с внутренними адресами, никто не видит. 

Недостатки NAT

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

Следствие этого теоретического недостатка, является ряд практических. Например нет возможности подключиться из внешнего мира к компьютерам во внутренней сети. Из внешнего мира виден всего лишь один ip адрес и невозможно понять, что в реальности за этим ip адресом находится большое количество других устройств. 

Некоторые протоколы, которые разрабатывались в ранние годы создания интернет, и рассчитаны на то, что каждое устройство может соединиться с каждым, в случае с nat работают плохо. Например, плохо работает протокол FTP, который использует два соединения, одно для управления,  другое для передачи данных. Соединение для передачи данных обычно устанавливается сервером, если клиент находится за устройством nat, то сервер FTP не может установить с ним соединение для передачи данных. 

Плохо работают протоколы, которые не устанавливают соединения. Для которых нет возможности сохранить запись в таблице nat на всё время жизни соединения. 

Дополнительный недостаток в том, что нет единого стандарта nat, а есть много разных вариантов, которые поддерживаются разными производителями оборудования и их ПО, все это вносит путаницу и приводит к несовместимости. 

Решение проблем с NAT

Как можно решить проблемы с nat? Если Вы хотите иметь возможность попасть из внешнего мира во внутреннюю сеть, то для этого можно использовать статическое отображение, которое мы уже рассматривали выше. 

Можно использовать отображение один к одному, но для этого нужно иметь несколько внешних ip адресов. 

Также можно использовать статическое отображение для портов. Например, порт 80 на устройстве nat отображается во внутренний адрес сервера и порт 80. Порт 25, который используется для электронной почты отображается во внутренний адрес почтового сервера и порт 25. В этом случае у нас есть один ip адрес, но разные его порты отображаются в разные пары, ip адрес и порт, во внутренней сети. 

Есть технология NAT Traversal, которая позволяет устанавливать соединения с компьютерами во внутренней сети без интернет. Она определена в стандарте RFC 3489. Есть и другие варианты такой технологии. Такая технология часто используется в приложениях для передачи видео и голоса, например Skype. 

Итоги

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

Оцените статью
Все о технологиях, мобильных приложениях и тарифах на связь