Глава 1 — Введение в преобразование сетевых адресов

Глава 1 — Введение в преобразование сетевых адресов

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

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

Базовая трансляция портов NAT и сетевых адресов

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

В базовой реализации NAT маршрутизатор NAT «владеет» одним или несколькими глобально зарегистрированными IP-адресами, отличными от его собственного IP-адреса. Данные глобальные адреса доступны для назначения хостам в частной сети статически или динамически. NAPT, или преобразование сетевых адресов и портов, представляет собой разновидность базового NAT, в котором преобразование сетевых адресов расширено за счет включения идентификатора «транспорта». Чаще всего это номер порта для пакетов TCP и UDP и идентификатор запроса для пакетов ICMP.

Соединения через границу NAT обычно инициируются узлами частной сети, отправляющими исходящие пакеты на внешний узел. Как правило, данным хостам назначаются динамические (временные) IP-адреса для этой цели. Однако также возможно инициировать соединения в обратном направлении, если в частной сети есть «серверы», например HTTP- или FTP-серверы, которые будут принимать запросы клиентов из внешней сети. Как правило, NAT назначает этим локальным хостам статический (постоянный) IP-адрес: порт.

Читать статью  Доменная печь и ее использование при производстве чугуна

Принцип работы преобразования сетевых адресов

Типичная настройка сети с маршрутизатором с поддержкой NAT показана на рисунке 1.

Типичная настройка сети с маршрутизатором с поддержкой NAT

Рисунок 1. Типичная настройка сети с маршрутизатором с поддержкой NAT

Как правило, маршрутизатор с поддержкой NAT имеет два сетевых интерфейса. Один интерфейс подключен к общедоступной сети Интернет; другой подключен к частной сети. Типичный маршрутизатор в контексте данной настройки отвечает за маршрутизацию IP-дейтаграмм между частной сетью и общедоступной сетью на основе IP-адреса назначения. Маршрутизатор с поддержкой NAT выполняет преобразование адресов перед маршрутизацией дейтаграммы IPv4 между общедоступным и частным интерфейсами. Трансляция устанавливается для каждого сеанса TCP или UDP на основе внутреннего адреса источника, номера порта источника и внешнего адреса назначения и номера порта назначения. Для датаграммы эхо-запроса и ответа ICMP вместо номера порта используется идентификатор запроса ICMP.

Чтобы проиллюстрировать типичную реализацию преобразования сетевых адресов, давайте рассмотрим конфигурацию сети, показанную на рисунке 2.

Типичная реализация преобразования сетевых адресов

Рисунок 2 — Типичная реализация преобразования сетевых адресов

В данном сценарии маршрутизатор NAT соединяет частную сеть слева, а общедоступную сеть — справа. Предположим, что на стороне общедоступной сети IP-адрес интерфейса NAT-маршрутизатора — 202.151.25.14; на интерфейсе частной сети NAT-маршрутизатор использует IP-адрес 192.168.1.254. Узел в частной сети инициирует TCP-соединение с веб-сервером в Интернете.

На рисунке 3 показано высокоуровневое представление процесса трансляции сетевых адресов.

Общее представление о процессе преобразовании сетевых адресов

Рисунок 3 — Общий вид процесса трансляции сетевых адресов

Процесс NAT на обратном пути

  1. Клиент передает сообщение протокола TCP SYN на веб-сервер. Адрес отправителя 192.168.1.15, номер порта 6732; адрес назначения — 128.15.54.3, номер порта 80.
  2. Пакет от клиента принимается маршрутизатором NAT на интерфейсе частной сети. К пакету применяется правило исходящего трафика: адрес отправителя (клиента) преобразуется в общедоступный IP-адрес NAT-маршрутизатора 202.15.25.14, а номер исходного порта отправителя (клиента) преобразуется в номер порта TCP 2015 на общедоступном интерфейсе.
  3. После этого пакет передается через интернет и в конечном итоге достигает хоста-получателя 128.15.54.3. Обратите внимание, что на принимающей стороне, исходя из адреса источника IP-уровня и номера порта TCP-уровня, похоже, что пакет исходит из 202.151.24.14, номер порта 2015. На рисунке 4 показан процесс NAT на обратном пути. Рисунок 4 — Процесс NAT на обратном пути
  4. В данном сценарии Интернет-хост 128.15.54.3 отправляет ответный пакет с Интернет-адресом NAT-маршрутизатора в качестве пункта назначения.
  5. Пакет достигает маршрутизатора NAT. Поскольку это входящий пакет, применяются правила входящей трансляции: адрес назначения изменяется обратно на исходный IP-адрес отправителя (клиента): 192.168.1.15, номер порта назначения 6732.
  6. После этого пакет пересылается клиенту через интерфейс, подключенный к внутренней сети.
Читать статью  Описание доменного процесса: как получают чугун

Таким образом, сетевой адрес и номер порта отправителя не видны другим хостам в общедоступном Интернете.

Возможности NetX Duo NAT

Когда экземпляр NAT создается с помощью вызова nx_nat_create, создается таблица преобразования NAT.

UINT nx_nat_create(NX_NAT_DEVICE *nat_ptr, NX_IP *ip_ptr, UINT global_interface_index, VOID *dynamic_cache_memory, UINT dynamic_cache_size); 

Чтобы отслеживать преобразования сетевых адресов для всех активных соединений между локальной и внешней сетями, маршрутизатор NetX Duo с поддержкой NAT поддерживает таблицу трансляции с информацией о каждом частном подключении к хосту, которая включает исходный и целевой IP-адрес и номер порта.

Местоположение этой таблицы преобразования («кеш») устанавливается указателем dynamic_cache_memory. Данная область должна представлять собой 4-байтовое выровненное буферное пространство. Размер таблицы (или количество записей) определяется делением размера кэша dynamic_cache_size на размер записи таблицы NAT. Таблица должна быть достаточно большой для минимального количества записей, заданного параметром NX_NAT_MIN_ENTRY_COUNT, который определен в nx_nat.h. Значение по умолчанию — 3.

Время ожидания для всех динамических записей в таблице преобразования NetX Duo NAT инициализируется значением NX_NAT_ENTRY_RESPONSE_TIMEOUT, которое определено в nx_nat.h. Значение по умолчанию составляет 4 минуты (или 240 системных тиков для процессора 100 МГц) в соответствии с рекомендациями RFC 2663. Каждый раз, когда NetX Duo NAT получает или отправляет пакет, соответствующий динамической записи в таблице, он сбрасывает время ожидания этой записи на NX_NAT_ENTRY_RESPONSE_TIMEOUT. При поиске в таблице NetX Duo NAT также проверяет таблицу на наличие просроченных записей и удаляет их.

Чтобы создать входящие записи как статические в таблице, например для серверов в локальной сети NetX Duo NAT предоставляет службу nx_nat_inbound_entry_create. Если запись в таблице определяет подключение к локальному хосту как статическое, срок его действия никогда не истекает.

UINT nx_nat_inbound_entry_create(NX_NAT_DEVICE *nat_ptr, NX_NAT_TRANSLATION_ENTRY *entry_ptr, ULONG local_ip_address, USHORT external_port, USHORT local_port, UCHAR protocol); 

Данная служба более подробно описана в Главе 4 — Описание служб

Во время выполнения, если таблица преобразования заполнена и большее количество записей не может быть добавлено, NetX Duo NAT уведомит приложение NAT с помощью обратного вызова о полном кэше, если оно зарегистрировано в экземпляре NAT. Это делается посредством службы nx_nat_cache_notify_set:

UINT nx_nat_cache_notify_set(NX_NAT_DEVICE *nat_ptr, VOID (*cache_full_notify_cb)(NX_NAT_DEVICE *nat_ptr)); 

См. Главу 4 — Описание служб для получения дополнительных сведений о данной службе.

Обработка пакетов NAT в NetX Duo

NetX Duo NAT предназначен для использования на маршрутизаторе IPv4. Для работы NAT необходимо настроить NetX Duo для пересылки пакетов на сервер NAT. См. Главу 2 об установке NetX Duo NAT, чтобы узнать, как это сделать. После этого сервер NAT указывает, будет ли он «потреблять» (пытаться пересылать) пакет на хост в любой из своих сетей. Если пакет не используется, он «возвращается» в NetX Duo для обработки пакета, как обычно.

Читать статью  О вопросе десульфурации чугуна в горне доменной печи

Когда сервер NAT получает пакет для пересылки от NetX Duo, он определяет, является ли пакет входящим или исходящим.

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

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

NetX Duo NAT использует ряд портов трансляции TCP, UDP и ICMP для создания уникального локального адреса: соединения портов для локальных хостов, соединяющихся с внешними хостами. Следующие настраиваемые пользователем параметры, определенные в nx_nat.h, , определяют диапазон для каждого протокола:

NX_NAT_START_TCP_PORT NX_NAT_END_TCP_PORT NX_NAT_START_UDP_PORT NX_NAT_END_UDP_PORT NX_NAT_START_ICMP_QUERY_ID NX_NAT_END_ICMP_QUERY_ID 

Требования и ограничения NAT

NetX Duo NAT требует наличия NetX Duo 5.8 или более поздней версии. Приложение NAT требует создания одного экземпляра IP и интерфейса для внутренней и внешней физической сети.

  • NetX Duo NAT поддерживает TCP, UDP и ICMP. Протокол IGMP не поддерживается.
  • NetX Duo NAT не поддерживает адресацию IPv6.
  • NetX Duo NAT не включает службы DNS или DHCP, хотя NetX Duo NAT может интегрировать данные службы со своими операциями NAT.

Стандарты RFC, поддерживаемые NetX Duo NAT

Реализация NetX Duo NAT основана на информации, представленной в следующих стандартах RFC:

  • RFC 2663: Терминология и соображения преобразователя сетевых адресов IP (NAT)
  • RFC 3022: Традиционное преобразование сетевых IP-адресов (традиционный NAT)
  • RFC 4787: Требования к поведению при преобразовании сетевых адресов (NAT) для одноадресного UDP

Источник https://learn.microsoft.com/ru-ru/azure/rtos/netx-duo/netx-duo-nat/chapter1

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *