Трансляция сетевых адресов - Network address translation

Трансляция сетевых адресов между частной сетью и Интернетом

Трансляция сетевых адресов (NAT) - это метод переназначения IP адресное пространство в другой, изменив сетевой адрес информация в Заголовок IP пакетов, пока они проходят через трафик устройство маршрутизации.[1] Изначально этот метод использовался, чтобы избежать необходимости назначать новый адрес каждому хосту при перемещении сети или при перемещении восходящего потока. интернет-провайдер был заменен, но не смог маршрутизировать адресное пространство сети. Он стал популярным и важным инструментом для сохранения глобального адресного пространства перед лицом Исчерпание адреса IPv4. Один Интернет-маршрутизируемый айпи адрес шлюза NAT можно использовать для всего частная сеть.

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

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

Базовый NAT

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

NAT "один ко многим"

Отображение сетевых адресов

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

Все IP-пакеты имеют IP-адрес источника и IP-адрес назначения. Обычно для пакетов, проходящих из частной сети в общедоступную, будет изменен адрес источника, в то время как для пакетов, проходящих из общественной сети обратно в частную сеть, будет изменен адрес назначения. Чтобы избежать двусмысленности в том, как транслируются ответы, требуются дальнейшие модификации пакетов. Подавляющая часть интернет-трафика использует Протокол управления передачей (TCP) или Протокол пользовательских датаграмм (UDP). Для этих протоколов номера портов изменяются так, чтобы комбинация IP-адреса и информации о порте в возвращенном пакете могла быть однозначно сопоставлена ​​с соответствующим адресатом частной сети. RFC 2663 использует термин сетевой адрес и преобразование порта (NAPT) для этого типа NAT. Другие имена включают преобразование адреса порта (PAT), Маскировка IP, Перегрузка NAT и много-к-одному NAT. Это наиболее распространенный тип NAT, который стал синонимом широко используемого термина «NAT».

Этот метод обеспечивает связь через маршрутизатор только тогда, когда разговор происходит в частной сети, поскольку исходная передача - это то, что устанавливает требуемую информацию в таблицах трансляции. А веб-браузер в замаскированной сети может, например, просматривать веб-сайт снаружи, но внешний веб-браузер не может просматривать веб-сайт, размещенный в замаскированной сети.[а] Протоколы, не основанные на TCP и UDP, требуют других методов трансляции.

Одним из дополнительных преимуществ NAT «один ко многим» является то, что это практическое решение Исчерпание адреса IPv4. Даже большие сети могут быть подключены к Интернету с помощью одного общедоступного IP-адреса.[b]

Способы перевода

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

Для этого RFC 3489 указал протокол под названием Простой обход UDP через NAT (СТУН ) в 2003 году. Реализации NAT классифицировались как полноконусный NAT, (адрес) NAT с ограниченным конусом, Конус с ограничением портов NAT или симметричный NAT, и предложил методику тестирования устройства соответственно. Однако с тех пор эти процедуры были исключены из статуса стандартов, поскольку методы неадекватны для правильной оценки многих устройств. RFC 5389 стандартизированные новые методы в 2008 году и акроним СТУН теперь представляет новое название спецификации: Утилиты обхода сеанса для NAT.

Классификация реализации NAT
Полный конус NAT, также известен как однозначный NAT
  • После того как внутренний адрес (iAddr: iPort) сопоставлен с внешним адресом (eAddr: ePort), любые пакеты из iAddr: iPort отправляются через eAddr: ePort.
  • Любой внешний хост может отправлять пакеты в iAddr: iPort, отправляя пакеты в eAddr: ePort.
Полный конус NAT.svg
(Адрес) -restricted-cone NAT
  • После того как внутренний адрес (iAddr: iPort) сопоставлен с внешним адресом (eAddr: ePort), любые пакеты из iAddr: iPort отправляются через eAddr: ePort.
  • Внешний хост (hAddr: любой) может отправлять пакеты в iAddr: iPort, отправляя пакеты в eAddr: ePort, только если iAddr: iPort ранее отправлял пакет в hAddr:Любые. «Любой» означает, что номер порта не имеет значения.
Ограниченный конус NAT.svg
Конусный NAT с ограничением портов Подобно конусному NAT с ограничением адресов, но ограничение включает номера портов.
  • После того как внутренний адрес (iAddr: iPort) сопоставлен с внешним адресом (eAddr: ePort), любые пакеты из iAddr: iPort отправляются через eAddr: ePort.
  • Внешний хост (hAddr: hPort) может отправлять пакеты в iAddr: iPort, отправляя пакеты в eAddr: ePort, только если iAddr: iPort ранее отправлял пакет в hAddr: hPort.
Конус с ограничением портов NAT.svg
Симметричный NAT
  • Каждый запрос с одного и того же внутреннего IP-адреса и порта на определенный IP-адрес и порт назначения сопоставляется с уникальным внешним IP-адресом и портом источника; если один и тот же внутренний хост отправляет пакет даже с тем же исходным адресом и портом, но в другое место назначения, используется другое сопоставление.
  • Только внешний хост, который получает пакет от внутреннего хоста, может отправить пакет обратно.
Симметричный NAT.svg

Многие реализации NAT сочетают эти типы, и поэтому лучше ссылаться на конкретное индивидуальное поведение NAT вместо использования терминологии конус / симметричный. RFC 4787 пытается уменьшить путаницу, вводя стандартизированную терминологию для наблюдаемого поведения. Для первого маркера в каждой строке приведенной выше таблицы RFC охарактеризовал бы конусные NAT с полным конусом, конусным ограничением и конусом с ограничением портов как имеющие Отображение, независимое от конечных точек, тогда как это характеризует симметричный NAT как имеющий Отображение, зависящее от адреса и порта. Для второго маркера в каждой строке приведенной выше таблицы RFC 4787 также обозначил бы Full-Cone NAT как имеющий Независимая от конечной точки фильтрация, NAT с ограниченным конусом как имеющий Адресно-зависимая фильтрация, Конусный NAT с ограничением портов как имеющий Фильтрация, зависящая от адреса и порта, и симметричный NAT, имеющий либо Адресно-зависимая фильтрация или Фильтрация, зависящая от адреса и порта. Другие классификации поведения NAT, упомянутые в RFC, включают: сохраняют ли они порты, когда и как обновляются сопоставления, могут ли внешние сопоставления использоваться внутренними узлами (т.е. шпилька поведение), а также уровень детерминизма, который проявляют NAT при применении всех этих правил.[2] В частности, большинство NAT объединяют симметричный NAT для исходящих соединений с статическое сопоставление портов, где входящие пакеты, адресованные на внешний адрес и порт, перенаправляются на определенный внутренний адрес и порт.

Тип прохождения NAT и NAT, роль сохранения порта для TCP

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

Пробивка отверстий TCP требует, чтобы NAT следовал сохранение порта дизайн для ПТС. Для данной исходящей TCP-связи одни и те же номера портов используются на обеих сторонах NAT. Сохранение порта NAT для исходящих TCP-соединений имеет решающее значение для обхода TCP NAT, потому что в TCP один порт может использоваться только для одной связи за раз; Программы связывают отдельные сокеты TCP с эфемерные порты для каждого соединения TCP, что делает невозможным предсказание порта NAT для TCP.[2]

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

Кроме того, сохранение порта в NAT для TCP позволяет протоколам P2P предлагать меньшую сложность и меньшую задержку, поскольку нет необходимости использовать третью сторону (например, STUN) для обнаружения порта NAT, поскольку само приложение уже знает порт NAT.[2][3]

Однако, если два внутренних хоста пытаются связаться с одним и тем же внешним хостом, используя один и тот же номер порта, NAT может попытаться использовать другой внешний IP-адрес для второго подключения или может потребоваться отказаться от сохранения порта и переназначить порт.[2]:9

По состоянию на 2006 г., примерно 70% клиентов в P2P сети использовали некоторую форму NAT.[4]

Реализация

Установление двусторонней связи

В двунаправленном NAT сеанс может быть установлен как изнутри, так и из внешней области.

Каждый пакет TCP и UDP содержит номер порта источника и номер порта назначения. Каждый из этих пакетов инкапсулируется в IP-пакет, чей Заголовок IP содержит исходный IP-адрес и целевой IP-адрес. Тройка IP-адрес / протокол / номер порта определяет связь с сетевой разъем.

Для общедоступных служб, таких как веб-серверы и почтовые серверы, важен номер порта. Например, порт 80 подключается через сокет к веб сервер программное обеспечение и порт 25 на почтовый сервер SMTP демон. IP-адрес общедоступного сервера также важен, поскольку его глобальная уникальность аналогична почтовому адресу или номеру телефона. И IP-адрес, и номер порта должны быть правильно известны всем хостам, желающим успешно взаимодействовать.

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

Аналогия расширения телефонного номера

Устройство NAT похоже на телефонную систему в офисе, у которой есть один общий телефонный номер и несколько добавочных номеров. Все исходящие телефонные звонки из офиса поступают с одного и того же номера телефона. Однако входящий вызов, для которого не указан добавочный номер, не может быть автоматически переведен на человека в офисе. В этом сценарии офис представляет собой частную локальную сеть, основной номер телефона - это общедоступный IP-адрес, а отдельные добавочные номера - это уникальные номера портов.[5]

Перевод конечной точки

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

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

NAT транслирует только IP-адреса и порты своих внутренних хостов, скрывая истинную конечную точку внутреннего хоста в частной сети.

Видимость работы

Работа NAT обычно прозрачна как для внутренних, так и для внешних хостов.

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

Приложения

Маршрутизация
Трансляция сетевых адресов используется для предотвращения наложения IP-адресов.[6][7] Перекрытие адресов происходит, когда узлы в разных сетях с одним и тем же пространством IP-адресов пытаются достичь одного и того же узла назначения. Чаще всего это неправильная конфигурация и может возникнуть в результате слияния двух сетей или подсетей, особенно при использовании сетевого пространства RFC1918. На хост-адресат поступает трафик, очевидно, из той же сети, а промежуточные маршрутизаторы не имеют возможности определить, куда следует отправлять ответный трафик. Решение состоит в изменении нумерации или реализации транслятора сетевых адресов.
Балансировки нагрузки
В клиент-сервер Приложения, балансировщики нагрузки перенаправлять клиентские запросы на набор серверных компьютеров для управления рабочей нагрузкой каждого сервера. Преобразование сетевых адресов может использоваться для сопоставления репрезентативного IP-адреса кластера серверов с конкретными хостами, которые обслуживают запрос.[8][9][10][11]

Связанные методы

IEEE Обратное преобразование адресов и портов (RAPT или RAT) позволяет хосту, чей реальный айпи адрес время от времени меняется, чтобы оставаться доступным в качестве сервера через фиксированный домашний IP-адрес.[12] В принципе, это должно позволить настраивать серверы в сетях с DHCP. Хотя RAPT не является идеальным мобильным решением, он вместе с новыми протоколами, такими как DHCP -DDNS, он может стать еще одним полезным инструментом в арсенале сетевого администратора.

Cisco Реализация RAPT представляет собой перегрузку PAT или NAT и отображает несколько частных IP-адресов на один общедоступный IP-адрес. Несколько адресов могут быть сопоставлены одному адресу, поскольку каждый частный адрес отслеживается по номеру порта. PAT использует уникальные номера портов источника на внутреннем глобальном IP-адресе, чтобы различать переводы. Номера портов представляют собой 16-битные целые числа. Общее количество внутренних адресов, которые могут быть преобразованы в один внешний адрес, теоретически может достигать 65 536 на IP-адрес. На самом деле количество портов, которым может быть назначен один IP-адрес, составляет около 4000. PAT пытается сохранить исходный исходный порт. Если этот исходный порт уже используется, PAT назначает первый доступный номер порта, начиная с начала соответствующей группы портов 0–511, 512–1023 или 1024–65535. Когда доступных портов больше нет и настроено более одного внешнего IP-адреса, PAT переходит к следующему IP-адресу, чтобы попытаться снова выделить исходный порт источника. Этот процесс продолжается до тех пор, пока не закончатся доступные порты и внешние IP-адреса.

Сопоставление адреса и порта предложение Cisco, сочетающее Адрес плюс порт трансляция с туннелированием пакетов IPv4 через внутренний интернет-провайдер IPv6 сеть. По сути, это (почти) без гражданства Альтернативой NAT операторского уровня и DS-Lite это подталкивает IPv4-адрес / порт трансляции (и, следовательно, поддержание состояния NAT) полностью в существующий Абонентское оборудование Реализация NAT. Таким образом, избегая NAT444 и проблемы с отслеживанием состояния NAT операторского уровня, а также обеспечивает механизм перехода для развертывания собственного IPv6 одновременно с очень небольшой дополнительной сложностью.

Проблемы и ограничения

Хосты за маршрутизаторами с поддержкой NAT не имеют сквозное соединение и не может участвовать в некоторых интернет-протоколах. Услуги, требующие запуска TCP подключения из внешней сети или протоколы без сохранения состояния, например, использующие UDP, может быть нарушен. Если маршрутизатор NAT не приложит особых усилий для поддержки таких протоколов, входящие пакеты не смогут достичь места назначения. Некоторые протоколы могут использовать один экземпляр NAT между участвующими узлами («пассивный режим» FTP, например), иногда с помощью шлюз уровня приложения (см. ниже), но не работают, когда обе системы отделены от Интернета посредством NAT. Использование NAT также усложняет протоколы туннелирования такие как IPsec потому что NAT изменяет значения в заголовках, которые мешают проверкам целостности, выполняемым IPsec и другие протоколы туннелирования.

Сквозная связь была основным принципом Интернета, поддерживаемым, например, Совет по архитектуре Интернета. В текущих архитектурных документах Интернета отмечается, что NAT является нарушением сквозной принцип, но этот NAT действительно играет важную роль при тщательном проектировании.[13] Значительно больше проблем вызывает использование IPv6 NAT, и многие архитекторы IPv6 считают, что IPv6 был предназначен для устранения необходимости в NAT.[14]

Реализация, которая отслеживает только порты, может быть быстро исчерпана внутренними приложениями, которые используют несколько одновременных подключений (например, HTTP запрос на веб-страницу со множеством встроенных объектов). Эту проблему можно смягчить, отслеживая IP-адрес назначения в дополнение к порту (таким образом, разделяя один локальный порт со многими удаленными хостами) за счет сложности реализации и ресурсов ЦП / памяти устройства трансляции.

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

NAT и TCP / UDP

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

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

Основные протоколы транспортного уровня, TCP и UDP, имеют контрольную сумму, которая покрывает все данные, которые они переносят, а также заголовок TCP / UDP плюс «псевдозаголовок», который содержит IP-адреса источника и назначения пакета, несущего Заголовок TCP / UDP. Для того, чтобы исходный NAT успешно прошел TCP или UDP, он должен повторно вычислить контрольную сумму заголовка TCP / UDP на основе переведенных IP-адресов, а не исходных, и поместить эту контрольную сумму в заголовок TCP / UDP первого пакета фрагментированного набора. пакетов. Принимающий NAT должен пересчитывать контрольную сумму IP для каждого пакета, который он передает к хосту назначения, а также распознавать и пересчитывать заголовок TCP / UDP с использованием ретранслированных адресов и псевдозаголовка. Это не полностью решенная проблема. Одно из решений состоит в том, чтобы принимающий NAT повторно собирал весь сегмент, а затем повторно вычислял контрольную сумму, рассчитанную для всех пакетов.

Исходный хост может выполнять Максимальный блок передачи (MTU) открытие пути для определения размера пакета, который может быть передан без фрагментации, а затем установить не фрагментируйте (DF) бит в соответствующем поле заголовка пакета. Конечно, это только одностороннее решение, потому что отвечающий хост может отправлять пакеты любого размера, которые могут быть фрагментированы до достижения NAT.

DNAT

Трансляция сетевых адресов назначения (DNAT) - это метод прозрачного изменения адреса назначения. айпи адрес конечного маршрута пакет и выполнение обратной функции для любых ответов. Любые маршрутизатор расположенный между двумя конечными точками, может выполнять это преобразование пакета.

DNAT обычно используется для публикации службы, расположенной в частной сети, на общедоступном IP-адресе. Такое использование DNAT также называется Перенаправление порта, или DMZ при использовании в целом сервер, который становится доступным для WAN, становясь аналогом незащищенного военного демилитаризованная зона (DMZ).

SNAT

Значение термина SNAT зависит от поставщика[15][16][17]. Многие поставщики имеют собственные определения для SNAT:

  • источник NAT является обычным расширением, как аналог NAT назначения (DNAT)
  • NAT с отслеживанием состояния используется Cisco Systems[18]
  • статический NAT используется WatchGuard[19]
  • безопасный NAT используется F5 Сети[20] и Microsoft (в отношении ISA-сервер )

Трансляция защищенных сетевых адресов Microsoft (SNAT) является частью Microsoft Сервер интернет-безопасности и ускорения и является расширением драйвера NAT, встроенного в Microsoft Windows Server. Он обеспечивает отслеживание подключений и фильтрацию дополнительных сетевых подключений, необходимых для FTP, ICMP, H.323, и PPTP протоколы, а также возможность настройки прозрачного HTTP Прокси сервер.

Динамическая трансляция сетевых адресов

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

NAT-закрепление

NAT-закрепление, также известен как Шлейф NAT или Отражение NAT,[21] это функция многих потребительских маршрутизаторов[22] который разрешает доступ к услуге через общедоступный IP-адрес из локальной сети. Это устраняет необходимость в использовании отдельного разрешения доменных имен для хостов внутри сети, чем для общедоступной сети для веб-сайта.[требуется разъяснение ]

Ниже описан пример сети:

  • Публичный адресс: 203.0.113.1. Это адрес WAN интерфейс на роутере.
  • Внутренний адрес роутера: 192.168.1.1
  • Адрес сервера: 192.168.1.2
  • Адрес локального компьютера: 192.168.1.100

Если пакет отправлен на публичный адрес компьютером по адресу 192.168.1.100, пакет обычно перенаправляется на шлюз по умолчанию (маршрутизатор), если явный маршрут не установлен в компьютере маршрутизация таблицы. Маршрутизатор с функцией обратной связи NAT обнаруживает, что 203.0.113.1 является адресом его WAN-интерфейса и обрабатывает пакет так, как если бы он пришел с этого интерфейса. Он определяет пункт назначения для этого пакета на основе правил DNAT (переадресации портов) для пункта назначения. Если данные были отправлены на порт 80 и существует правило DNAT для порта 80, направленное на 192.168.1.2, то хост по этому адресу получает пакет.

Если применимое правило DNAT недоступно, маршрутизатор отбрасывает пакет. An Пункт назначения ICMP недоступен ответ может быть отправлен. Если присутствовали какие-либо правила DNAT, трансляция адресов все еще действует; маршрутизатор по-прежнему перезаписывает исходный IP-адрес в пакете. Локальный компьютер (192.168.1.100) отправляет пакет как исходящий от 192.168.1.100, но сервер (192.168.1.2) получает его как исходящий от 203.0.113.1. Когда сервер отвечает, процесс такой же, как и для внешнего отправителя.Таким образом, возможна двусторонняя связь между хостами внутри сети LAN через общедоступный IP-адрес.

NAT в IPv6

Трансляция сетевых адресов обычно не используется в IPv6, потому что одна из целей разработки IPv6 - восстановить сквозное сетевое соединение.[23] Шлейф NAT обычно не требуется. Хотя это все еще возможно, большое адресное пространство IPv6 устраняет необходимость в сохранении адресов, и каждому устройству может быть присвоен уникальный глобально маршрутизируемый адрес. При этом, используя уникальные локальные адреса в комбинации с преобразование префикса сети можно добиться аналогичных результатов.

Приложения, затронутые NAT

Немного прикладной уровень протоколы (например, FTP и ГЛОТОК ) отправляют явные сетевые адреса в своих данных приложения. Например, FTP в активном режиме использует отдельные соединения для управления трафиком (команды) и для трафика данных (содержимое файла). При запросе передачи файла хост, выполняющий запрос, идентифицирует соответствующее соединение для передачи данных по его сетевой уровень и транспортный уровень адреса. Если хост, выполняющий запрос, находится за простым брандмауэром NAT, преобразование IP-адреса и / или номера порта TCP делает информацию, полученную сервером, недействительной. Протокол инициации сеанса (SIP) контролирует многие Голос по IP (VoIP) звонит и страдает той же проблемой. SIP и SDP могут использовать несколько портов для установки соединения и передачи голосового потока через RTP. IP-адреса и номера портов закодированы в данных полезной нагрузки и должны быть известны до прохождения NAT. Без специальных приемов, таких как СТУН, Поведение NAT непредсказуемо, и связь может нарушиться.

Шлюз уровня приложения (ALG) программное или аппаратное обеспечение может исправить эти проблемы. Программный модуль ALG, работающий на устройстве межсетевого экрана NAT, обновляет любые данные полезной нагрузки, которые становятся недействительными в результате преобразования адресов. ALG должны понимать протокол более высокого уровня, который им необходимо исправить, поэтому для каждого протокола с этой проблемой требуется отдельный ALG. Например, во многих системах Linux есть модули ядра, называемые трекеры подключения которые служат для реализации ALG. Однако ALG не работает, если канал управления зашифрован (например, FTPS ).

Другое возможное решение этой проблемы - использовать Обход NAT методы с использованием таких протоколов, как СТУН или ICE, или проприетарные подходы в пограничный контроллер сеанса. Обход NAT возможен как в TCP-, так и в UDP-приложениях, но метод на основе UDP проще, понятнее и лучше совместим с устаревшими NAT.[нужна цитата ] В любом случае протокол высокого уровня должен быть разработан с учетом обхода NAT, и он не будет надежно работать через симметричные NAT или другие устаревшие NAT с плохим поведением.

Другие возможности Протокол интернет-шлюза UPnP, NAT-PMP (Протокол сопоставления портов NAT) или Протокол управления портами (PCP),[24] но для этого требуется устройство NAT для реализации этого протокола.

Однако большинство традиционных клиент-серверных протоколов (за исключением FTP) не отправляют контактную информацию уровня 3 и, следовательно, не требуют специальной обработки NAT. Фактически, предотвращение осложнений NAT является практически необходимым требованием при разработке новых протоколов более высокого уровня сегодня (например, использование SFTP вместо FTP).

NAT также может вызвать проблемы, если IPsec шифрование применяется и в тех случаях, когда несколько устройств, таких как ГЛОТОК телефоны расположены за NAT. Телефоны, которые шифруют свою сигнализацию с помощью IPsec, инкапсулируют информацию о порте в зашифрованном пакете, что означает, что устройства NA (P) T не могут получить доступ и преобразовать порт. В этих случаях устройства NA (P) T возвращаются к простой операции NAT. Это означает, что весь трафик, возвращающийся в NAT, отображается на одного клиента, что приводит к сбою обслуживания более чем одного клиента "за" NAT. Есть несколько решений этой проблемы: одно - использовать TLS, который работает на уровне 4 в Эталонная модель OSI и поэтому не маскирует номер порта; другой - инкапсулировать IPsec в UDP - последнее решение было выбрано ТИСПАН для обеспечения безопасного прохождения NAT или NAT с "IPsec Passthru" поддержка.

Установление интерактивного подключения - это метод обхода NAT, который не полагается на поддержку ALG.

Уязвимость протокола DNS, объявленная Дэн Камински 8 июля 2008 г. косвенно зависит от сопоставления портов NAT. Чтобы избежать DNS-сервера отравление кеша, крайне желательно не транслировать номера портов источника UDP для исходящих DNS-запросов от DNS-сервера за межсетевым экраном, реализующим NAT. Рекомендуемый способ обхода уязвимости DNS - заставить все кэширующие DNS-серверы использовать рандомизированные исходные порты UDP. Если функция NAT дерандомизирует исходные порты UDP, DNS-сервер становится уязвимым.

Примеры программного обеспечения NAT

Смотрите также

Заметки

  1. ^ Большинство устройств NAT сегодня позволяют сетевому администратору настраивать записи таблицы статической трансляции для подключений из внешней сети во внутреннюю маскируемую сеть. Эту функцию часто называют статический NAT. Он может быть реализован двух типов: Перенаправление порта который перенаправляет трафик с определенного внешнего порта на внутренний хост на указанном порту, и обозначение Хост DMZ который передает весь трафик, полученный на внешнем интерфейсе (на любом номере порта), на внутренний IP-адрес с сохранением порта назначения. Оба типа могут быть доступны на одном устройстве NAT.
  2. ^ Более распространенная схема - это наличие компьютеров, которым требуется сквозное соединение, снабженных маршрутизируемым IP-адресом, в то время как другие компьютеры, которые не предоставляют услуги внешним пользователям за NAT, имеют только несколько IP-адресов, используемых для обеспечения доступа в Интернет.

использованная литература

  1. ^ Справочник по сетевым протоколам (2-е изд.). Javvin Technologies Inc. 2005. стр. 27. ISBN  9780974094526. Получено 2014-09-16.
  2. ^ а б c d е Франсуа Оде; Каллен Дженнингс (январь 2007 г.). Требования к поведению при трансляции сетевых адресов (NAT) для одноадресного UDP. IETF. Дои:10.17487 / RFC4787. RFC 4787.
  3. ^ «Характеристика и измерение прохождения TCP через NAT и межсетевые экраны». Декабрь 2006 г.
  4. ^ «Освещение теней: оценка оппортунистической сети и сети». Декабрь 2006 г. Архивировано с оригинал на 24.07.2010.
  5. ^ «Мгновенное руководство для экспертов по аудио через IP» (PDF). Соединительная линия. Январь 2010. Архивировано с оригинал (PDF) на 2011-10-08. Получено 2011-08-19.
  6. ^ «Использование NAT в перекрывающихся сетях». Август 2005 г.
  7. ^ «Сценарий проблемы VPN с перекрывающимися подсетями». Сентябрь 2017 г.
  8. ^ «Распределение нагрузки с использованием трансляции IP-адресов». Август 1998 г.
  9. ^ "Что такое балансировка нагрузки на уровне 4?". Июнь 2020.
  10. ^ "Что такое балансировка нагрузки?". Ноябрь 2018.
  11. ^ «Настроить балансировку нагрузки сервера с помощью динамического NAT». Июнь 2018 г.
  12. ^ Singh, R .; Tay, Y.C .; Teo, W.T .; Да, С. (1999). «КРЫСА: Быстрый (и грязный?) Толчок для поддержки мобильности». Труды WMCSA'99. Второй семинар IEEE по мобильным вычислительным системам и приложениям. С. 32–40. CiteSeerX  10.1.1.40.461. Дои:10.1109 / MCSA.1999.749275. ISBN  978-0-7695-0025-6.
  13. ^ Bush, R .; Мейер, Д. (2002). Некоторые принципы архитектуры и философия Интернета. IETF. Дои:10.17487 / RFC3439. RFC 3439.
  14. ^ Велде, Г. Ван де; Hain, T .; Droms, R .; Карпентер, Б .; Кляйн, Э. (2007). Защита локальной сети для IPv6. IETF. Дои:10.17487 / RFC4864. RFC 4864.
  15. ^ «Повышенная отказоустойчивость IP с помощью Cisco Stateful NAT». Cisco.
  16. ^ «Использовать NAT для публичного доступа к серверам с частными IP-адресами в частной сети (пример конфигурации WatchGuard)» (PDF). www.watchguard.com.
  17. ^ «K7820: Обзор возможностей SNAT». AskF5. 28 августа 2007 г.. Получено 24 февраля, 2019.
  18. ^ «Повышенная отказоустойчивость IP с помощью Cisco Stateful NAT». Cisco.
  19. ^ «Использовать NAT для публичного доступа к серверам с частными IP-адресами в частной сети (пример конфигурации WatchGuard)» (PDF). www.watchguard.com.
  20. ^ «K7820: Обзор возможностей SNAT». AskF5. 28 августа 2007 г.. Получено 24 февраля, 2019.
  21. ^ «Что такое NAT Reflection / NAT Loopback / NAT Hairpinning?». Сетевые работники Нью-Йорка. 2014-11-09. Получено 2017-04-27.
  22. ^ «Маршрутизаторы с обратной связью NAT - OpenSim» (MediaWiki ). OpenSimulator. 2013-10-21. Получено 2014-02-21.
  23. ^ Ильич ван Бейнум (23 июля 2008 г.). «После того, как убежденного сопротивления, NAT может прийти к IPv6 после всех». Ars Technica. Получено 2014-04-24.
  24. ^ Д. Винг, Эд; Cheshire, S .; Boucadair, M .; Penno, R .; Селкирк, П. (2013). Протокол управления портами (PCP). IETF. Дои:10.17487 / RFC6887. RFC 6887.

внешние ссылки