Глава 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.

Рисунок 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 — Общий вид процесса трансляции сетевых адресов

- Клиент передает сообщение протокола TCP SYN на веб-сервер. Адрес отправителя 192.168.1.15, номер порта 6732; адрес назначения — 128.15.54.3, номер порта 80.
- Пакет от клиента принимается маршрутизатором NAT на интерфейсе частной сети. К пакету применяется правило исходящего трафика: адрес отправителя (клиента) преобразуется в общедоступный IP-адрес NAT-маршрутизатора 202.15.25.14, а номер исходного порта отправителя (клиента) преобразуется в номер порта TCP 2015 на общедоступном интерфейсе.
- После этого пакет передается через интернет и в конечном итоге достигает хоста-получателя 128.15.54.3. Обратите внимание, что на принимающей стороне, исходя из адреса источника IP-уровня и номера порта TCP-уровня, похоже, что пакет исходит из 202.151.24.14, номер порта 2015. На рисунке 4 показан процесс NAT на обратном пути. Рисунок 4 — Процесс NAT на обратном пути
- В данном сценарии Интернет-хост 128.15.54.3 отправляет ответный пакет с Интернет-адресом NAT-маршрутизатора в качестве пункта назначения.
- Пакет достигает маршрутизатора NAT. Поскольку это входящий пакет, применяются правила входящей трансляции: адрес назначения изменяется обратно на исходный IP-адрес отправителя (клиента): 192.168.1.15, номер порта назначения 6732.
- После этого пакет пересылается клиенту через интерфейс, подключенный к внутренней сети.
Таким образом, сетевой адрес и номер порта отправителя не видны другим хостам в общедоступном Интернете.
Возможности 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
Как правильно проверить на Null\NaT поле фраймворка pandas и записать его в базу postgres?
Последняя колонка содержит «NaT» , в базе данных данное поле update_dt типа timestamp(0).
psycopg2.errors.InvalidDatetimeFormat: ОШИБКА: неверный синтаксис для типа timestamp: «NaT»
Если сделать так df = df.where(pd.notnull(df), ‘Null’).
psycopg2.errors.InvalidDatetimeFormat: ОШИБКА: неверный синтаксис для типа timestamp: «Null»
Как проверить на Null и записать данные timestamp не используя case (if) sql.
- Вопрос задан более года назад
- 651 просмотр
2 комментария
Простой 2 комментария
mayton2019 @mayton2019
Две просьбы.
1) Придумай названия колонкам. Чтоб не мучать форум такими формами как «последняя колонка или пред-последняя»
2) Оформи это в виде таблицы — тогда ясность появляется и все можено порешать.

Модератор @TosterModerator
Фрагменты кода надо размещать в виде текста и оборачивать тэгом code для корректного отображения. Удобно делать кнопкой >
Это обязательно, см.п.3.8 Регламента.
Сюда же относится traceback, ввод и вывод в консоли и другая структурированная текстовая инфа.
Если таблицу обернуть тэгом, тоже будет выглядеть лучше.
Решения вопроса 1

Совершенствуюсь каждый день
В pandas можно использовать функцию isnull для проверки поля на наличие значения NaN (Not a Number) или NaT (Not a Time). Например, чтобы проверить поле update_dt на наличие значения NaT, можно использовать следующий код:
df[‘update_dt’].isnull()
Этот код вернет булевый сериес, где True указывает на то, что в соответствующей ячейке поля update_dt стоит значение NaT, а False — значение присутствует.
Чтобы записать эти данные в базу данных, можно использовать конструкцию INSERT INTO . SELECT . FROM с вложенным запросом. Вот пример такого запроса, который записывает в таблицу table_name все записи из df, где поле update_dt не равно NaT:
INSERT INTO table_name (column1, column2, . update_dt) SELECT column1, column2, . update_dt FROM df WHERE df['update_dt'].isnull() = False
NAT на пальцах: что это?
![]()
2 32 или 4 294 967 296 IPv4 адресов это много? Кажется, что да. Однако с распространением персональных вычислений, мобильных устройств и быстрым ростом интернета вскоре стало очевидно, что 4,3 миллиарда адресов IPv4 будет недостаточно. Долгосрочным решением было IPv6, но требовались более быстрое решение для устранения нехватки адресов. И этим решением стал NAT (Network Address Translation).
Что такое NAT
Сети обычно проектируются с использованием частных IP адресов. Это адреса 10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16. Эти частные адреса используются внутри организации или площадки, чтобы позволить устройствам общаться локально, и они не маршрутизируются в интернете. Чтобы позволить устройству с приватным IPv4-адресом обращаться к устройствам и ресурсам за пределами локальной сети, приватный адрес сначала должен быть переведен на общедоступный публичный адрес.
И вот как раз NAT переводит приватные адреса, в общедоступные. Это позволяет устройству с частным адресом IPv4 обращаться к ресурсам за пределами его частной сети. NAT в сочетании с частными адресами IPv4 оказался полезным методом сохранения общедоступных IPv4-адресов. Один общедоступный IPv4-адрес может быть использован сотнями, даже тысячами устройств, каждый из которых имеет частный IPv4-адрес. NAT имеет дополнительное преимущество, заключающееся в добавлении степени конфиденциальности и безопасности в сеть, поскольку он скрывает внутренние IPv4-адреса из внешних сетей.
Маршрутизаторы с поддержкой NAT могут быть настроены с одним или несколькими действительными общедоступными IPv4-адресами. Эти общедоступные адреса называются пулом NAT. Когда устройство из внутренней сети отправляет трафик из сети наружу, то маршрутизатор с поддержкой NAT переводит внутренний IPv4-адрес устройства на общедоступный адрес из пула NAT. Для внешних устройств весь трафик, входящий и выходящий из сети, выглядит имеющим общедоступный IPv4 адрес.
Маршрутизатор NAT обычно работает на границе Stub-сети. Stub-сеть – это тупиковая сеть, которая имеет одно соединение с соседней сетью, один вход и выход из сети.
Когда устройство внутри Stub-сети хочет связываться с устройством за пределами своей сети, пакет пересылается пограничному маршрутизатору, и он выполняет NAT-процесс, переводя внутренний частный адрес устройства на публичный, внешний, маршрутизируемый адрес.
Терминология NAT
В терминологии NAT внутренняя сеть представляет собой набор сетей, подлежащих переводу. Внешняя сеть относится ко всем другим сетям.
При использовании NAT, адреса IPv4 имеют разные обозначения, основанные на том, находятся ли они в частной сети или в общедоступной сети (в интернете), и является ли трафик входящим или исходящим.
NAT включает в себя четыре типа адресов:
- Внутренний локальный адрес (Inside local address);
- Внутренний глобальный адрес (Inside global address);
- Внешний местный адрес (Outside local address);
- Внешний глобальный адрес (Outside global address);
При определении того, какой тип адреса используется, важно помнить, что терминология NAT всегда применяется с точки зрения устройства с транслированным адресом:
- Внутренний адрес (Inside address) — адрес устройства, которое транслируется NAT;
- Внешний адрес (Outside address) — адрес устройства назначения;
- Локальный адрес (Local address) — это любой адрес, который отображается во внутренней части сети;
- Глобальный адрес (Global address) — это любой адрес, который отображается во внешней части сети;
Рассмотрим это на примере схемы.
На рисунке ПК имеет внутренний локальный (Inside local) адрес 192.168.1.5 и с его точки зрения веб-сервер имеет внешний (outside) адрес 208.141.17.4. Когда с ПК отправляются пакеты на глобальный адрес веб-сервера, внутренний локальный (Inside local) адрес ПК транслируется в 208.141.16.5 (inside global). Адрес внешнего устройства обычно не переводится, поскольку он является общедоступным адресом IPv4.
Стоит заметить, что ПК имеет разные локальные и глобальные адреса, тогда как веб-сервер имеет одинаковый публичный IP адрес. С его точки зрения трафик, исходящий из ПК поступает с внутреннего глобального адреса 208.141.16.5. Маршрутизатор с NAT является точкой демаркации между внутренней и внешней сетями и между локальными и глобальными адресами.
Термины, inside и outside, объединены с терминами local и global, чтобы ссылаться на конкретные адреса. На рисунке маршрутизатор настроен на предоставление NAT и имеет пул общедоступных адресов для назначения внутренним хостам.
На рисунке показано как трафик отправляется с внутреннего ПК на внешний веб-сервер, через маршрутизатор с поддержкой NAT, и высылается и переводится в обратную сторону.
Внутренний локальный адрес (Inside local address) — адрес источника, видимый из внутренней сети. На рисунке адрес 192.168.1.5 присвоен ПК – это и есть его внутренний локальный адрес.
Внутренний глобальный адрес (Inside global address) — адрес источника, видимый из внешней сети. На рисунке, когда трафик с ПК отправляется на веб-сервер по адресу 208.141.17.4, маршрутизатор переводит внутренний локальный адрес (Inside local address) на внутренний глобальный адрес (Inside global address). В этом случае роутер изменяет адрес источника IPv4 с 192.168.1.5 на 208.141.16.5.
Внешний глобальный адрес (Outside global address) — адрес адресата, видимый из внешней сети. Это глобально маршрутизируемый IPv4-адрес, назначенный хосту в Интернете. На схеме веб-сервер доступен по адресу 208.141.17.4. Чаще всего внешние локальные и внешние глобальные адреса одинаковы.
Внешний локальный адрес (Outside local address) — адрес получателя, видимый из внутренней сети. В этом примере ПК отправляет трафик на веб-сервер по адресу 208.141.17.4
Рассмотрим весь путь прохождения пакета. ПК с адресом 192.168.1.5 пытается установить связь с веб-сервером 208.141.17.4. Когда пакет прибывает в маршрутизатор с поддержкой NAT, он считывает IPv4 адрес назначения пакета, чтобы определить, соответствует ли пакет критериям, указанным для перевода. В этом пример исходный адрес соответствует критериям и переводится с 192.168.1.5 (Inside local address) на 208.141.16.5. (Inside global address). Роутер добавляет это сопоставление локального в глобальный адрес в таблицу NAT и отправляет пакет с переведенным адресом источника в пункт назначения. Веб-сервер отвечает пакетом, адресованным внутреннему глобальному адресу ПК (208.141.16.5). Роутер получает пакет с адресом назначения 208.141.16.5 и проверяет таблицу NAT, в которой находит запись для этого сопоставления. Он использует эту информацию и переводит обратно внутренний глобальный адрес (208.141.16.5) на внутренний локальный адрес (192.168.1.5), и пакет перенаправляется в сторону ПК.
Типы NAT
Существует три типа трансляции NAT:
- Статическая адресная трансляция (Static NAT) — сопоставление адресов один к одному между локальными и глобальными адресами;
- Динамическая адресная трансляция (Dynamic NAT) — сопоставление адресов “многие ко многим” между локальными и глобальными адресами;
- Port Address Translation (PAT) — многоадресное сопоставление адресов между локальными и глобальными адресами c использованием портов. Также этот метод известен как NAT Overload;
Static NAT
Статический NAT использует сопоставление локальных и глобальных адресов один к одному. Эти сопоставления настраиваются администратором сети и остаются постоянными. Когда устройства отправляют трафик в Интернет, их внутренние локальные адреса переводятся в настроенные внутренние глобальные адреса. Для внешних сетей эти устройства имеют общедоступные IPv4-адреса. Статический NAT особенно полезен для веб-серверов или устройств, которые должны иметь согласованный адрес, доступный из Интернета, как например веб-сервер компании. Статический NAT требует наличия достаточного количества общедоступных адресов для удовлетворения общего количества одновременных сеансов пользователя.
Статическая NAT таблица выглядит так:
Dynamic NAT
Динамический NAT использует пул публичных адресов и назначает их по принципу «первым пришел, первым обслужен». Когда внутреннее устройство запрашивает доступ к внешней сети, динамический NAT назначает доступный общедоступный IPv4-адрес из пула. Подобно статическому NAT, динамический NAT требует наличия достаточного количества общедоступных адресов для удовлетворения общего количества одновременных сеансов пользователя.
Динамическая NAT таблица выглядит так:
Port Address Translation (PAT)
PAT транслирует несколько частных адресов на один или несколько общедоступных адресов. Это то, что делают большинство домашних маршрутизаторов. Интернет-провайдер назначает один адрес маршрутизатору, но несколько членов семьи могут одновременно получать доступ к Интернету. Это наиболее распространенная форма NAT.
С помощью PAT несколько адресов могут быть сопоставлены с одним или несколькими адресами, поскольку каждый частный адрес также отслеживается номером порта. Когда устройство инициирует сеанс TCP/IP, оно генерирует значение порта источника TCP или UDP для уникальной идентификации сеанса. Когда NAT-маршрутизатор получает пакет от клиента, он использует номер своего исходного порта, чтобы однозначно идентифицировать конкретный перевод NAT. PAT гарантирует, что устройства используют разный номер порта TCP для каждого сеанса. Когда ответ возвращается с сервера, номер порта источника, который становится номером порта назначения в обратном пути, определяет, какое устройство маршрутизатор перенаправляет пакеты.
Картинка иллюстрирует процесс PAT. PAT добавляет уникальные номера портов источника во внутренний глобальный адрес, чтобы различать переводы.
Поскольку маршрутизатор обрабатывает каждый пакет, он использует номер порта (1331 и 1555, в этом примере), чтобы идентифицировать устройство, с которого выслан пакет.
Адрес источника (Source Address) — это внутренний локальный адрес с добавленным номером порта, назначенным TCP/IP. Адрес назначения (Destination Address) — это внешний локальный адрес с добавленным номером служебного порта. В этом примере порт службы 80: HTTP.
Для исходного адреса маршрутизатор переводит внутренний локальный адрес во внутренний глобальный адрес с добавленным номером порта. Адрес назначения не изменяется, но теперь он называется внешним глобальным IP-адресом. Когда веб-сервер отвечает, путь обратный.
В этом примере номера портов клиента 1331 и 1555 не изменялись на маршрутизаторе с NAT. Это не очень вероятный сценарий, потому что есть хорошая вероятность того, что эти номера портов уже были прикреплены к другим активным сеансам. PAT пытается сохранить исходный порт источника. Однако, если исходный порт источника уже используется, PAT назначает первый доступный номер порта, начиная с начала соответствующей группы портов 0-511, 512-1023 или 1024-65535. Когда портов больше нет, и в пуле адресов имеется более одного внешнего адреса, PAT переходит на следующий адрес, чтобы попытаться выделить исходный порт источника. Этот процесс продолжается до тех пор, пока не будет доступных портов или внешних IP-адресов.
То есть если другой хост может выбрать тот же номер порта 1444. Это приемлемо для внутреннего адреса, потому что хосты имеют уникальные частные IP-адреса. Однако на маршрутизаторе NAT номера портов должны быть изменены — в противном случае пакеты из двух разных хостов выйдут из него с тем же адресом источника. Поэтому PAT назначает следующий доступный порт (1445) на второй адрес хоста.
Подведем итоги в сравнении NAT и PAT. Как видно из таблиц, NAT переводит IPv4-адреса на основе 1:1 между частными адресами IPv4 и общедоступными IPv4-адресами. Однако PAT изменяет как сам адрес, так и номер порта. NAT перенаправляет входящие пакеты на их внутренний адрес, ориентируясь на входящий IP адрес источника, заданный хостом в общедоступной сети, а с PAT обычно имеется только один или очень мало публично открытых IPv4-адресов, и входящие пакеты перенаправляются, ориентируясь на NAT таблицу маршрутизатора.
А что относительно пакетов IPv4, содержащих данные, отличные от TCP или UDP? Эти пакеты не содержат номер порта уровня 4. PAT переводит наиболее распространенные протоколы, переносимые IPv4, которые не используют TCP или UDP в качестве протокола транспортного уровня. Наиболее распространенными из них являются ICMPv4. Каждый из этих типов протоколов по-разному обрабатывается PAT. Например, сообщения запроса ICMPv4, эхо-запросы и ответы включают идентификатор запроса Query ID. ICMPv4 использует Query ID. для идентификации эхо-запроса с соответствующим ответом. Идентификатор запроса увеличивается с каждым отправленным эхо-запросом. PAT использует идентификатор запроса вместо номера порта уровня 4.
Преимущества и недостатки NAT
NAT предоставляет множество преимуществ, в том числе:
- NAT сохраняет зарегистрированную схему адресации, разрешая приватизацию интрасетей. При PAT внутренние хосты могут совместно использовать один общедоступный IPv4-адрес для всех внешних коммуникаций. В этом типе конфигурации требуется очень мало внешних адресов для поддержки многих внутренних хостов;
- NAT повышает гибкость соединений с общедоступной сетью. Многочисленные пулы, пулы резервного копирования и пулы балансировки нагрузки могут быть реализованы для обеспечения надежных общедоступных сетевых подключений;
- NAT обеспечивает согласованность для внутренних схем адресации сети. В сети, не использующей частные IPv4-адреса и NAT, изменение общей схемы адресов IPv4 требует переадресации всех хостов в существующей сети. Стоимость переадресации хостов может быть значительной. NAT позволяет существующей частной адресной схеме IPv4 оставаться, позволяя легко изменять новую схему общедоступной адресации. Это означает, что организация может менять провайдеров и не нужно менять ни одного из своих внутренних клиентов;
- NAT обеспечивает сетевую безопасность. Поскольку частные сети не рекламируют свои адреса или внутреннюю топологию, они остаются достаточно надежными при использовании в сочетании с NAT для получения контролируемого внешнего доступа. Однако нужно понимать, что NAT не заменяет фаерволы;
Но у NAT есть некоторые недостатки. Тот факт, что хосты в Интернете, по-видимому, напрямую взаимодействуют с устройством с поддержкой NAT, а не с фактическим хостом внутри частной сети, создает ряд проблем:
- Один из недостатков использования NAT связан с производительностью сети, особенно для протоколов реального времени, таких как VoIP. NAT увеличивает задержки переключения, потому что перевод каждого адреса IPv4 в заголовках пакетов требует времени;
- Другим недостатком использования NAT является то, что сквозная адресация теряется. Многие интернет-протоколы и приложения зависят от сквозной адресации от источника до места назначения. Некоторые приложения не работают с NAT. Приложения, которые используют физические адреса, а не квалифицированное доменное имя, не доходят до адресатов, которые транслируются через NAT-маршрутизатор. Иногда эту проблему можно избежать, реализуя статические сопоставления NAT;
- Также теряется сквозная трассировка IPv4. Сложнее трассировать пакеты, которые подвергаются многочисленным изменениям адресов пакетов в течение нескольких NAT-переходов, что затрудняет поиск и устранение неполадок;
- Использование NAT также затрудняет протоколы туннелирования, такие как IPsec, поскольку NAT изменяет значения в заголовках, которые мешают проверкам целостности, выполняемым IPsec и другими протоколами туннелирования;
- Службы, требующие инициирования TCP-соединений из внешней сети, или stateless протоколы, например, использующие UDP, могут быть нарушены. Если маршрутизатор NAT не настроен для поддержки таких протоколов, входящие пакеты не могут достичь своего адресата;
Мы разобрали основные принципы работы NAT. Хотите больше? Прочитайте нашу статью по настройке NAT на оборудовании Cisco.
Настройка NAT в панели управления

В инструкции описан процесс настройки NAT для преобразования IP-адресов в маршрутизируемых сетях.
Что такое NAT?
NAT (Network Address Translation) — это процесс при котором сетевое устройство, например маршрутизатор, назначает публичный адрес серверу внутри частной сети. Основное использование NAT — это ограничение количества публичных IP-адресов, которые должна использовать организация или компания, в целях экономии IP-адресов и безопасности.
Как добавить NAT правило?
После создания маршрутизируемой сети и подключению к ней виртуальных серверов перейдите на вкладку NAT. Нажмите кнопку Добавить.

Перед вами появится новое окно в котором необходимо выбрать тип правила SNAT или DNAT.
SNAT
SNAT или Source NAT позволяет изменить исходный IP-адрес сетевого пакета на другой IP-адрес.
Использование SNAT позволяет увеличить безопасность и сохранить конфиденциальность, поскольку маскируются и скрываются частные IP-адреса устройств.
Для создания правила такого типа в поле NAT Type выберете SNAT. В поле Description введите удобное описание. В качестве OriginalIp укажите локальный адрес сервера, который нужно преобразовать. TranslatedIp — это белый IP-адрес маршрутизатора в сети, который вводится автоматически и не может быть изменен.
Флаг Enable служит для включения или отключения правила. Если флаг установлен, то правило включено.

DNAT
DNAT или Destination NAT используется для преобразования целевого IP-адреса сетевого пакета в другой IP-адрес. Используя DNAT, можно скрыть внутренний IP-адрес приложения и заменить его другим IP-адресом, что делает его более безопасным.
Для создания правила такого типа в поле NAT Type выберете DNAT.
В поле Description введите удобное описание.
OriginalIp — это белый IP-адрес маршрутизатора в сети, который вводится автоматически, этот адрес будет преобразован.
В качестве TranslatedIp укажите локальный адрес сервера, для которого нужно выполнить преобразование.
В выпадающем списке Protocol выберете нужный протокол.
OriginalPort — это порт маршрутизатора, на который поступают пакеты данных.
В качестве TranslatedPort укажите порт локального сервера, к которому нужно выполнить преобразование.
Флаг Enable служит для включения или отключения правила. Если флаг установлен, то правило включено.
Примечание: если TranslatedPort выбран Any, то и OriginalPort автоматически принимает значение Any. При этом TranslatedPort может может иметь конкретное значение, если OriginalPort выбран Any.

В результате созданные правила отобразятся в списке в панели управления.

Редактирование NAT правил
Для редактирования правила выберете нужное и кликните на его поле NAT type (показано на изображении ниже).

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

Подтвердите свои действия для удаления правила.


P. S. Другие инструкции:
- Создание маршрутизируемой сети
- Настройка VPN в панели управления 1cloud
- Настройка файлового сервера Samba в локальной сети
- Маршрутизация внутри локальной сети на pfSense
- Чек-лист параметров безопасности сервера Windows/Linux
Поделиться в соцсетях:
Средняя оценка: 5,0, всего оценок: 1 Спасибо за Вашу оценку! К сожалению, проголосовать не получилось. Попробуйте позже