Главная » Сетевые технологии » Общие принципы функционирования NAT

📑 Общие принципы функционирования NAT

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

Реализацией протокола NAT является NAT-сервер, который может функционировать как сервис операционной системы выделенного компьютера или поднят на аппаратном маршрутизаторе или некоторых коммутаторах с поддержкой L3.

Все компьютеры внутренней локальной сети извне видятся как один интерфейс с одним IP-адресом, то-есть практически становятся невидимыми извне, но для каждого из них внешняя сеть является доступной. Что очень важно — протокол NAT пропускает в сеть только те данные из Интернета (точнее — из внешней сети), которые поступили в результате запроса от компьютера из локальной сети.

Клиентам сети, находящимся с внутренней стороны NAT, назначаются частные IP-адреса; обычно это делается через службу DHCP (Dynamic Host Configuration Protocol — протокол динамической настройки узлов) или путем статической настройки, выполняемой администратором. Обычно это адреса из диапазона зарезервированных локальных адресов:

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16

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

На стороне клиента

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

Исходящий пакет на сервере NAT

Сервер NAT получает исходящий пакет и сохраняет IP-адрес и порт источника в своей внутренней NAT-таблице. Вместо них он подставляет IP-адрес своего внешнего интерфейса, а вместо номера порта источника подставляет индекс записи в своей таблице. Внешние IP-адрес и порт — это общие IP-адрес и порт, которые будут использоваться в текущем сеансе передачи данных вместо внутренних IP-адреса и порта клиента. Преобразованный пакет пересылается по внешней сети и в итоге попадает на заданный сервер.

На стороне внешнего сервера

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

Входящий пакет на сервере NAT

NAT принимает ответные пакеты от внешнего сервера и анализирует их содержимое на основе своей таблицы сопоставления портов. Если в таблице будет найдено сопоставление порта, для которого IP-адрес источника, порт источника, порт назначения и сетевой протокол из входящего пакета совпадают с IP-адресом удаленного узла, удаленным портом и сетевым протоколом, указанным в сопоставлении портов, NAT выполнит обратное преобразование. NAT заменяет внешний IP-адрес и внешний порт в полях назначения пакета на частный IP-адрес и внутренний порт клиента.Затем NAT отправляет пакет клиенту по внутренней сети. Однако если NAT не находит подходящего сопоставления портов, входящий пакет отвергается и соединение разрывается.

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

Таким образом протокол NAT решает две главные задачи:

  • помогает справиться с дефицитом IP-адресов, который становится все более острым по мере роста количества компьютеров;
  • обеспечивает безопасность внутренней сети — компьютеры локальной сети, защищенные маршрутизатором с активированным NAT-протоколом (устройством NAT), становятся недоступными из внешней сети.

Хотя протокол NAT не заменяет брандмауэр, он все же является важным элементом безопасности.

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

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

Сервер, устанавливаемый во внутренней сети и являющийся прозрачным для протокола NAT, называют виртуальным сервером (Virtual Server). Прозрачным для протокола NAT может быть не весь сервер, а лишь определенные сервисы, запускаемые на нем. Для того чтобы реализовать виртуальный сервер во внутренней сети, на маршрутизаторе используется технология перенаправления портов.

 

При перепечатке просьба вставлять активные ссылки на oslogic.ru
Copyright oslogic.ru © 2024 . All Rights Reserved.