Jump to content

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

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

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

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

IPv4 использует 32-битные адреса, способные однозначно адресовать около 4,4 миллиарда устройств. К 1992 году стало очевидно, что этого будет недостаточно. 1994 год В RFC   1631 NAT описывается как «краткосрочное решение» двух наиболее серьезных проблем, стоящих перед IP-Интернетом в то время: истощение IP-адресов и масштабирование маршрутизации. К 2004 году NAT получил широкое распространение. [3]

Базовый NAT

[ редактировать ]

Самый простой тип NAT обеспечивает преобразование IP-адресов «один в один» (RFC 1631). В RFC   2663 этот тип NAT называется базовым NAT ; его также называют NAT «один к одному» . В этом типе NAT только IP-адреса, контрольная сумма изменяются IP-заголовка и любые контрольные суммы более высокого уровня, которые включают IP-адрес. Базовый NAT можно использовать для соединения двух IP-сетей с несовместимой адресацией. [2]

NAT «один ко многим»

[ редактировать ]
Сопоставление сетевых адресов

Большинство трансляторов сетевых адресов сопоставляют несколько частных хостов с одним общедоступным IP-адресом.

Вот типичная конфигурация:

  1. Локальная сеть использует одну из назначенных подсетей частных IP-адресов (RFC 1918). [4] ).
  2. В сети есть маршрутизатор, имеющий как частный, так и публичный адрес. Частный адрес используется маршрутизатором для связи с другими устройствами в частной локальной сети. Публичный адрес (обычно присваиваемый поставщиком услуг Интернета ) используется маршрутизатором для связи с остальной частью Интернета.
  3. Когда трафик проходит из сети в Интернет, маршрутизатор преобразует адрес источника в каждом пакете из частного адреса в собственный публичный адрес маршрутизатора. Маршрутизатор отслеживает основные данные о каждом активном соединении (в частности, адрес назначения и порт ). Когда маршрутизатор получает входящий трафик из Интернета, он использует данные отслеживания соединения, которые он сохранил на исходящей фазе, чтобы определить, на какой частный адрес (если таковой имеется) ему следует переслать ответ. [2]

Все IP-пакеты имеют IP-адрес источника и IP-адрес назначения. Обычно для пакетов, проходящих из частной сети в общедоступную сеть, изменяется адрес источника, а для пакетов, проходящих из общедоступной сети обратно в частную сеть, изменяется адрес назначения. Чтобы избежать двусмысленности в том, как преобразуются ответы, необходимы дальнейшие модификации пакетов. Подавляющая часть интернет-трафика использует протокол управления передачей (TCP) или протокол пользовательских дейтаграмм (UDP). Для этих протоколов номера портов изменяются таким образом, чтобы комбинация IP-адреса (в заголовке IP ) и номера порта (в заголовке транспортного уровня ) в возвращаемом пакете могла быть однозначно сопоставлена ​​с соответствующим пунктом назначения частной сети. используется термин «сетевой адрес и трансляция портов » (NAPT). В RFC 2663 для этого типа NAT [4] Другие названия включают преобразование адресов портов (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 теперь представляет собой новое название спецификации: Утилиты обхода сеансов для NAT .

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

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

Сопоставление NAT и фильтрация NAT

[ редактировать ]

RFC 4787 [2] проводит различие между отображением NAT и фильтрацией NAT.

Раздел 4.1 RFC описывает сопоставление NAT и определяет, как внешний IP-адрес и номер порта должны быть преобразованы во внутренний IP-адрес и номер порта. Он определяет независимое от конечной точки сопоставление, сопоставление, зависящее от адреса, и сопоставление, зависящее от адреса и порта, поясняет, что эти три возможных варианта не относятся к безопасности NAT, поскольку безопасность определяется поведением фильтрации, а затем указывает: «NAT ДОЛЖЕН иметь поведение «Независимое от конечной точки сопоставление».

Раздел 5 RFC посвящен фильтрации NAT и описывает, какие критерии используются NAT для фильтрации пакетов, исходящих от определенных внешних конечных точек. Возможные варианты: «Фильтрация, независимая от конечной точки», «Фильтрация, зависящая от адреса» и «Фильтрация, зависящая от адреса и порта». Фильтрация, независимая от конечной точки, рекомендуется там, где требуется максимальная прозрачность приложения, а фильтрация, зависящая от адреса, рекомендуется там, где наиболее важно более строгое поведение фильтрации.

Некоторые устройства NAT еще не соответствуют RFC 4787, поскольку они обрабатывают сопоставление и фильтрацию NAT одинаково, поэтому их опция конфигурации для изменения метода фильтрации NAT также меняет метод сопоставления NAT (например, Netgate TNSR ). Для брандмауэра PF доступно исправление для включения поддержки RFC 4787, но оно еще не объединено.

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

[ редактировать ]

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

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

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

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

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

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

Выполнение

[ редактировать ]

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

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

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

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

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

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

[ редактировать ]

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

Процесс перевода

[ редактировать ]

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

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

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

Приложения

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

Обратный адрес и трансляция портов IEEE (RAPT или RAT) позволяют хосту, реальный IP-адрес которого время от времени меняется, оставаться доступным в качестве сервера через фиксированный домашний IP-адрес. [14] Реализация RAPT Cisco представляет собой перегрузку PAT или NAT и сопоставляет несколько частных IP-адресов одному общедоступному IP-адресу. Несколько адресов могут быть сопоставлены с одним адресом, поскольку каждый частный адрес отслеживается по номеру порта. PAT использует уникальные номера исходных портов на внутреннем глобальном IP-адресе, чтобы различать трансляции. [с] 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. Использование NAT также усложняет протоколы туннелирования, такие как IPsec , поскольку NAT изменяет значения в заголовках, которые мешают проверкам целостности, выполняемым IPsec и другими протоколами туннелирования.

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

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

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

Фрагментация и контрольные суммы

[ редактировать ]

Чистый 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 первого пакета фрагментированного набора. пакетов.

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

Варианты условий

[ редактировать ]

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

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

Значение термина SNAT зависит от поставщика: [17] [18] [19]

  • исходный NAT является общим расширением и является аналогом целевого NAT ( DNAT ). Это используется для описания NAT «один ко многим»; NAT для исходящих подключений к госуслугам.
  • NAT с отслеживанием состояния используется Cisco Systems [20]
  • статический NAT используется WatchGuard [21]
  • безопасный NAT используется F5 Networks [22] и Microsoft (в отношении ISA Server )

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

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

[ редактировать ]
Как работает динамический NAT.

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

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

[ редактировать ]

Закрепление NAT , также известное как петля NAT или отражение NAT , [25] это функция многих потребительских маршрутизаторов [26] когда машина в локальной сети может получить доступ к другой машине в локальной сети через внешний IP-адрес локальной сети/маршрутизатора (при этом на маршрутизаторе настроена переадресация портов для направления запросов на соответствующий компьютер в локальной сети). Официально это понятие описано в 2008 году. РФК   5128 .

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

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

Если пакет отправляется на 203.0.113.1 компьютером по адресу 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-адрес.

Трансляция сетевых адресов обычно не используется в IPv6 , поскольку одной из целей разработки IPv6 является восстановление сквозного сетевого подключения. [27] Большое адресное пространство IPv6 устраняет необходимость сохранения адресов, и каждому устройству может быть присвоен уникальный глобально маршрутизируемый адрес. Использование уникальных локальных адресов в сочетании с преобразованием сетевых префиксов позволяет достичь результатов, аналогичных NAT.

Большое адресное пространство IPv6 все еще можно обойти в зависимости от фактической длины префикса, предоставленной оператором связи. Нередко получают префикс /64 — наименьшую рекомендуемую подсеть — для всей домашней сети, что требует использования различных методов для ручного разделения диапазона, чтобы все устройства оставались доступными. [28] Даже реальный NAT IPv6-IPv6, NAT66, иногда может оказаться полезным: в блоге APNIC описан случай, когда автору был предоставлен только один адрес (/128). [29]

Приложения, на которые влияет NAT

[ редактировать ]

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

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

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

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

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

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

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

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

[ редактировать ]

См. также

[ редактировать ]

Примечания

[ редактировать ]
  1. ^ Большинство устройств NAT сегодня позволяют сетевому администратору настраивать записи статической таблицы трансляции для подключений из внешней сети во внутреннюю замаскированную сеть. Эту функцию часто называют статическим NAT . Его можно реализовать в двух типах: переадресация портов , при которой трафик перенаправляется с определенного внешнего порта на внутренний хост через указанный порт, и назначение хоста DMZ , который передает весь трафик, полученный на внешнем интерфейсе (на любом номере порта), на внутренний IP-адрес с сохранением порта назначения. Оба типа могут быть доступны на одном и том же устройстве NAT.
  2. ^ Более распространенная схема заключается в том, что компьютеры, которым требуется сквозное соединение, снабжены маршрутизируемым IP-адресом, а другие, которые не предоставляют услуги внешним пользователям, находятся за NAT, и для обеспечения доступа в Интернет используются только несколько IP-адресов.
  3. ^ Номера портов представляют собой 16-битные целые числа. Общее количество внутренних адресов, которые могут быть преобразованы в один внешний адрес, теоретически может достигать 65 536 на один IP-адрес. Реально количество портов, которым можно назначить один IP-адрес, составляет около 4000.
  4. ^ компьютера не указан явный маршрут Если в таблицах маршрутизации .
  5. ^ Этой проблемы можно избежать, используя SFTP вместо FTP.
  1. ^ Справочник по сетевым протоколам (2-е изд.). Javvin Technologies Inc. 2005. с. 27. ISBN  9780974094526 . Проверено 16 сентября 2014 г.
  2. ^ Jump up to: а б с д и ж г час я Франсуа Оде; Каллен Дженнингс (январь 2007 г.). Требования к поведению трансляции сетевых адресов (NAT) для одноадресной передачи UDP . IETF . дои : 10.17487/RFC4787 . РФК 4787 .
  3. ^ Джефф Хьюстон (сентябрь 2004 г.). «Анатомия: взгляд изнутри на трансляторы сетевых адресов» (PDF) . Журнал Интернет-протокола .
  4. ^ Jump up to: а б Винг, Дэн (01 июля 2010 г.). «Трансляция сетевых адресов: расширение адресного пространства Интернета» . IEEE Интернет-вычисления . 14 (4): 66–70. дои : 10.1109/MIC.2010.96 . ISSN   1089-7801 . S2CID   31082389 .
  5. ^ «Характеристика и измерение прохождения TCP через NAT и межсетевые экраны» . Декабрь 2006 г.
  6. ^ «Освещая тени: оппортунистические сети и веб-измерения» . Декабрь 2006 г. Архивировано из оригинала 24 июля 2010 г.
  7. ^ «Мгновенное экспертное руководство по аудио через IP» (PDF) . Тайлайн. Январь 2010 г. Архивировано из оригинала (PDF) 8 октября 2011 г. Проверено 19 августа 2011 г.
  8. ^ «Использование NAT в перекрывающихся сетях» . Август 2005.
  9. ^ «Сценарий проблемы VPN с перекрывающимися подсетями» . Сентябрь 2017.
  10. ^ Шрисуреш, Пида; Ган, Дер-Хва (август 1998 г.). Распределение нагрузки с использованием трансляции IP-адресов . РФК   2391 .
  11. ^ «Что такое балансировка нагрузки уровня 4?» . Июнь 2020.
  12. ^ «Что такое балансировка нагрузки?» . Ноябрь 2018.
  13. ^ «Настройка балансировки нагрузки сервера с использованием динамического NAT» . Июнь 2018.
  14. ^ Сингх, Р.; Тай, ЮК; Тео, WT; Йеу, SW (1999). «Крыса: быстрый (и грязный?) толчок к поддержке мобильности». Труды WMCSA'99. Второй семинар IEEE по мобильным вычислительным системам и приложениям . стр. 32–40. CiteSeerX   10.1.1.40.461 . дои : 10.1109/MCSA.1999.749275 . ISBN  978-0-7695-0025-6 . S2CID   7657883 .
  15. ^ Буш, Р.; Мейер, Д. (2002). Некоторые рекомендации по архитектуре Интернета и философия . IETF . дои : 10.17487/RFC3439 . РФК 3439 .
  16. ^ Вельде, Г. Ван де; Хейн, Т.; Дромс, Р.; Карпентер, Б.; Кляйн, Э. (2007). Защита локальной сети для IPv6 . IETF . дои : 10.17487/RFC4864 . RFC 4864 .
  17. ^ «Повышение устойчивости IP с помощью Cisco Stateful NAT» . Циско .
  18. ^ «Используйте NAT для серверов публичного доступа с частными IP-адресами в частной сети (пример конфигурации WatchGuard)» (PDF) . www.watchguard.com . Архивировано из оригинала (PDF) 17 января 2013 г.
  19. ^ «K7820: Обзор возможностей SNAT» . Спросите F5 . 28 августа 2007 года . Проверено 24 февраля 2019 г.
  20. ^ «Повышение устойчивости IP с помощью Cisco Stateful NAT» . Циско .
  21. ^ «Используйте NAT для серверов публичного доступа с частными IP-адресами в частной сети (пример конфигурации WatchGuard)» (PDF) . www.watchguard.com . Архивировано из оригинала (PDF) 17 января 2013 г.
  22. ^ «K7820: Обзор возможностей SNAT» . Спросите F5 . 28 августа 2007 года . Проверено 24 февраля 2019 г.
  23. ^ «Динамический НАТ» . 26 января 2016 года . Проверено 19 апреля 2022 г.
  24. ^ «Динамический НАТ» . Проверено 19 апреля 2022 г.
  25. ^ «Что такое NAT Reflection/NAT Loopback/NAT Hairpinning?» . Нью-Йоркские сетевики. 09.11.2014 . Проверено 27 апреля 2017 г.
  26. ^ «Маршрутизаторы NAT Loopback — OpenSim» ( MediaWiki ) . Открытый симулятор . 21 октября 2013 г. Проверено 21 февраля 2014 г.
  27. ^ Ильич ван Бейнум (23 июля 2008 г.). «После упорного сопротивления NAT все-таки может прийти к IPv6» . Арс Техника . Проверено 24 апреля 2014 г.
  28. ^ Дюпон, Каспер (18 августа 2015 г.). «Подсеть — подсеть IPv6 /64 — что сломается и как это обойти?» . Ошибка сервера . Проверено 20 апреля 2023 г.
  29. ^ Чиллони, Марко (01 февраля 2018 г.). «NAT66: Хороший, плохой, ужасный» . Блог APNIC . Проверено 20 апреля 2023 г.
  30. ^ Д. Винг, Эд; Чешир, С.; Букадер, М.; Пенно, Р.; Селкирк, П. (2013). Протокол управления портами (PCP) . IETF . дои : 10.17487/RFC6887 . RFC 6887 .
  31. ^ Мессмер, Эллен (8 июля 2008 г.). «Серьезная ошибка DNS может нарушить работу Интернета» . Сетевой мир . Архивировано из оригинала 13 февраля 2009 г. Проверено 14 июня 2021 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 6e0a49b49045ef4929f9baec622c76f1__1722252840
URL1:https://arc.ask3.ru/arc/aa/6e/f1/6e0a49b49045ef4929f9baec622c76f1.html
Заголовок, (Title) документа по адресу, URL1:
Network address translation - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)