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

редактировать
Протокол, обеспечивающий подключение одного пространства IP-адресов к другому Преобразование сетевого адреса между частной сетью и Интернетом

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

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

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

Содержание
  • 1 Базовый NAT
  • 2 NAT «один ко многим»
  • 3 Методы трансляции
  • 4 Тип Обход NAT и NAT, роль сохранения порта для TCP
  • 5 Реализация
    • 5.1 Установление двусторонней связи
    • 5.2 Аналогия с добавлением телефонного номера
    • 5.3 Трансляция конечной точки
    • 5.4 Видимость операции
  • 6 Приложения
  • 7 Связанные методы
  • 8 Проблемы и ограничения
  • 9 NAT и TCP / UDP
  • 10 DNAT
  • 11 SNAT
  • 12 Динамическая трансляция сетевых адресов
  • 13 Закрепление NAT
  • 14 NAT в IPv6
  • 15 Приложения, затронутые NAT
  • 16 Примеры программного обеспечения NAT
  • 17 См. Также
  • 18 Примечания
  • 19 Ссылки
  • 20 Внешние ссылки
Basic 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-адреса.

Методы трансляции

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

Для этой цели в RFC 3489 в 2003 году определен протокол под названием Simple Traversal of UDP over NAT (STUN ). В нем реализации NAT классифицируются как полноконусные NAT, (адрес) NAT с ограниченным конусом, NAT с ограничением портов или симметричный NAT, и предложила методику тестирования устройства соответствующим образом. Однако с тех пор эти процедуры были исключены из статуса стандартов, поскольку методы неадекватны для правильной оценки многих устройств. RFC 5389 стандартизировал новые методы в 2008 году, и аббревиатура STUN теперь представляет новое название спецификации: Session Traversal Utilities for NAT.

Классификация реализации NAT
Full-cone NAT, также известная как NAT «один-к-одному»
  • После того, как внутренний адрес (iAddr: iPort) сопоставлен с внешним адресом (eAddr: ePort), любые пакеты из iAddr: iPort отправляются через eAddr: ePort.
  • Любой внешний хост может отправлять пакеты в iAddr: iPort, отправляя пакеты на eAddr: ePort.
Полный конус NAT.svg
(Address) -restricted-cone NAT
  • После сопоставления внутреннего адреса (iAddr: iPort) с внешним адресом (eAddr: ePort) любые пакеты из iAddr: iPort отправляются через eAddr: ePort.
  • Внешний хост (hAddr: any) может отправлять пакеты в iAddr: iPort, отправляя пакеты в eAddr: ePort, только если iAddr: iPort ранее отправлял пакет в hAddr: any. «Любой» означает, что номер порта не имеет значения.
Конус с ограниченным доступом 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 выставляются при применении всех этих правил. В частности, большинство NAT сочетают симметричный NAT для исходящих соединений со статическим сопоставлением портов, когда входящие пакеты, адресованные на внешний адрес и порт, перенаправляются на определенный внутренний адрес и порт.

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

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

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

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

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

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

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

Реализация

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

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

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

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

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

Аналогия с добавочным номером телефона

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

Трансляция конечной точки

С 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-адресов. Перекрытие адресов происходит, когда узлы в разных сетях с одним и тем же пространством IP-адресов пытаются достичь одного и того же узла назначения. Чаще всего это неправильная конфигурация и может возникнуть в результате слияния двух сетей или подсетей, особенно при использовании сетевого пространства RFC1918. На хост-адресат поступает трафик, очевидно, из той же сети, а промежуточные маршрутизаторы не имеют возможности определить, куда следует отправлять ответный трафик. Решением является либо изменение нумерации, либо реализация преобразователя сетевых адресов.
Балансировка нагрузки
В клиент-серверных приложениях балансировщики нагрузки пересылают клиентские запросы на набор серверных компьютеров для управления загрузкой каждого сервера. Преобразование сетевых адресов может использоваться для сопоставления типичного IP-адреса кластера серверов с конкретными хостами, которые обслуживают запрос.
Связанные методы

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

Реализация RAPT Cisco - это перегрузка 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 действительно играет важную роль при тщательном проектировании. Значительно больше проблем вызывает использование IPv6 NAT, и многие архитекторы IPv6 считают, что IPv6 был предназначен для устранения необходимости в NAT.

Реализация, которая отслеживает только порты, может быть быстро исчерпана внутренними приложениями, использующими несколько одновременных соединения (например, запрос 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) - это метод прозрачного изменения целевого IP-адреса конечного маршрута пакета и выполнения обратная функция для любых ответов. Любой маршрутизатор, расположенный между двумя конечными точками, может выполнить это преобразование пакета.

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

SNAT

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

  • исходный NAT является обычным расширением, поскольку аналог NAT назначения (DNAT)
  • NAT с отслеживанием состояния используется Cisco Systems
  • используется статический NAT by WatchGuard
  • безопасный NAT используется F5 Networks и Microsoft (в отношении ISA Server )

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

Динамический сетевой адрес перевод

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

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

NAT-закрепление, также известное как NAT loopback или NAT-отражение, - это функция многих потребительских маршрутизаторов, которая разрешает доступ к сервису через общедоступный 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, а для порта 80 существует правило DNAT, направленное на 192.168.1.2, то хост по этому адресу получает пакет.

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

NAT в IPv6

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

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

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

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

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

Другие возможности: Протокол UPnP Internet Gateway Device, NAT-PMP (протокол сопоставления портов NAT) или Протокол управления портами (PCP), но для этого требуется, чтобы устройство NAT реализовало этот протокол.

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

NAT также может вызывать проблемы, когда применяется шифрование IPsec и в случаях, когда несколько устройств, таких как телефоны SIP, расположены за NAT. Телефоны, которые шифруют свою сигнализацию с помощью IPsec, инкапсулируют информацию о порте в зашифрованном пакете, что означает, что устройства NA (P) T не могут получить доступ к порту и преобразовать его. В этих случаях устройства NA (P) T возвращаются к простой операции NAT. Это означает, что весь трафик, возвращающийся в NAT, отображается на одного клиента, что приводит к сбою обслуживания более чем одного клиента, находящегося «за» NAT. Есть несколько решений этой проблемы: одно - использовать TLS, который работает на уровне 4 в эталонной модели OSI и, следовательно, не маскирует номер порта; другой - инкапсулировать IPsec в UDP - последнее решение, выбранное TISPAN для обеспечения безопасного прохождения NAT, или NAT с поддержкой «IPsec Passthru».

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

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

Примеры программного обеспечения NAT
См. также
Викискладе есть носители, относящиеся к трансляции сетевых адресов.
Примечания
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-31 04:55:58
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте