Я ИТ специалист или Жизнь ИТшника Это блог о моей работе, жизни и увлечениях! Решим ИТ проблемы вместе!

18Фев/110

Что такое NAT?

Последнее время мне с завидной частотой пришлось вспоминать подзабытую терминологию и технологии и я решил сохранить для себя и для "потомков" небольшое разъяснение - что такое NAT?

Сначала небольшой экскурс в современные новости:
3 Февраля 2011 года Аминистрация адресного пространства Интернет (IANA) распределила два блока адресов IPv4, выделенных Региональному интернет-регистратору (RIR) по Азиатско-тихоокеанскому региону. С этого момента можно считать что больше свободных диапазонов ip адресов более не осталось.

Давным давно, в далеком 1994 г Network Working Group приняли решение о сегментировани ip сети. Что это значит? Для тех кто не знает что такое ip адрес, я делаю отсыл на соответствующую статью.

Для того момента времени,  существующая схема распределения всего адресного пула IPv4 хоть и была прогрессивной и используемой, уже было понятно что на всех пользователей сети никогда не хватит адресов. И тогда было принято разделить ip адресацию на "глобальную" и "локальную". Ведь и в самом деле, зачем каждому компьютеру в локальной сети свой уникальный ip адрес. Гораздо практичней сделать его уникальным лишь в одном сегменте сети.

Остался только один вопрос, а как сделать так чтобы пакет данных дошел от этого "несовсем уникального" ip, например до сервера Google, и затем еще нашел дорогу обратно? Для этого в срочном порядке и как временное решение, был придуман NAT.

Что такое NAT?

NAT (Network Address Translation - преобразование сетевых адресов) представляет собой стандарт IETF (Internet Engineering Task Force - рабочая группа разработки технологий интернета) в котором описано как компьютеры из локальной сети с локальным диапазоном ip (10.0.x.x, 192.168.x.x, 172.x.x.x) используют для выхода глобальную сеть один IPv4 адрес.

Общие принципы работы NAT
Компьютеру локальной сети или внутренней сети провайдера выдается частный адрес через DHCP (Dynamic Host Configuration Protocol - протокол динамической настройки узлов) или через назначение статического адреса.

Некая программа намеревается установить связь с сервером A, открывает сокет указывая IP-адрес и порт  источника, а также  IP-адрес сервера A и порт на сервере.  Пакет данных отправляется адресату по пути маршрута и в нем содержится несколько полей где определены  частный IP-адрес клиента (IP-адрес источника) и клиентский порт (порт источника).

По пути следования пакет достигает маршрутизатора  который имеет выход в Интернет и имеет один глобальный ip и настроенный  NAT. Маршрутизатор с NAT перехватывает этот пакет и производит трансляцию (сопоставление) порта, используя адрес и порт сервера A, полученный из пакета, и указывая вместо локального адреса  внешний IP-адрес маршрутизатора NAT.

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

Вот в общем-то и весь принцип работы NAT.

Недостатки NAT
Основной недостаток Nat состоит в том что он поддерживается не всеми приложениями, но на практике таких все же немного, но они есть.
Из-за возможного большого количества клиентов с внутренней стороны, может возникнуть проблема когда какой-либо сервис будет отказывать в обслуживани т.к. будет считать что с этого адреса уже производится работа.  Так бывает с icq которая может неразрешать вход из-за многочисленных ошибок, или с сервисами хостинга файлов которые могут уверять что с вашего ip адреса уже идет скачивание.
Т.к. для работы NAT нужна трансляция адресов, нет возможности начать соединение с внешней стороны. Для такого запроса не будет трансляции и соответственно пакет будет отброшен. А это важно для многих приложений.

P.S. NAT это классическая иллюстрация того как временное становится постоянным, однако это не то чего следует добиваться. Постоянное лучше создавать таким изначально.

Комментарии (0) Пинги (0)

Пока нет комментариев.


Leave a comment

Нет обратных ссылок на эту запись.