stringtranslate.com

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

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

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

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

История

IPv4 использует 32-битные адреса, способные однозначно адресовать около 4,4 миллиарда устройств. К 1992 году стало очевидно, что этого будет недостаточно. В RFC 1631 1994 года  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 ) и номера порта (в заголовке транспортного уровня ) в возвращаемом пакете могла быть однозначно сопоставлена ​​с соответствующим пунктом назначения частной сети. В RFC 2663 для этого типа NAT используется термин « сетевой адрес и трансляция портов » (NAPT). [4] Другие названия включают преобразование адресов портов (PAT), маскировку IP , перегрузку NAT и NAT «многие к одному» . Это наиболее распространенный тип NAT, который стал синонимом общепринятого термина «NAT».

Этот метод позволяет осуществлять связь через маршрутизатор только тогда, когда разговор начинается в частной сети, поскольку первоначальная исходящая передача устанавливает необходимую информацию в таблицах трансляции. Таким образом, веб-браузер в частной сети сможет просматривать веб-сайты, находящиеся за пределами сети, тогда как веб-браузеры за пределами сети не смогут просматривать веб-сайт, размещенный внутри сети. [a] Протоколы, не основанные на 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, а не использовать терминологию конуса/симметричности. 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 подключается через сокет к программному обеспечению веб-сервера , а порт 25 — к демону SMTP почтового сервера . Также важен 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 не знает, куда его отправить.

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

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

Приложения

Маршрутизация
Трансляцию сетевых адресов можно использовать для уменьшения перекрытия 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-адресе, чтобы различать трансляции. [c] 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]

Безопасное преобразование сетевых адресов (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 году, RFC  5128.

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

Если пакет отправляется на 203.0.113.1 компьютером по адресу 192.168.1.100 , пакет обычно направляется на шлюз по умолчанию (маршрутизатор) [d] Маршрутизатор с функцией обратной связи 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 является восстановление сквозного сетевого подключения. [27] Большое адресное пространство IPv6 устраняет необходимость сохранения адресов, и каждому устройству может быть присвоен уникальный глобально маршрутизируемый адрес. Использование уникальных локальных адресов в сочетании с преобразованием сетевых префиксов позволяет достичь результатов, аналогичных NAT.

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

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

Некоторые протоколы прикладного уровня , такие как протокол передачи файлов (FTP) и протокол инициации сеанса (SIP), отправляют явные сетевые адреса в данных своих приложений. Например, FTP в активном режиме использует отдельные соединения для трафика управления (команды) и трафика данных (содержимое файла). При запросе передачи файла хост, отправляющий запрос, идентифицирует соответствующее соединение для передачи данных по адресам сетевого уровня и транспортного уровня . Если хост, отправляющий запрос, находится за простым брандмауэром 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 является основным исключением [e] ) не отправляют контактную информацию уровня 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. ^ abcdefghi Франсуа Оде; Каллен Дженнингс (январь 2007 г.). Требования к поведению трансляции сетевых адресов (NAT) для одноадресной передачи UDP. IETF . дои : 10.17487/RFC4787 . РФК 4787.
  3. ^ Джефф Хьюстон (сентябрь 2004 г.). «Анатомия: взгляд изнутри на трансляторы сетевых адресов» (PDF) . Журнал Интернет-протокола .
  4. ^ ab Wing, Дэн (1 июля 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). «RAT: Быстрый (и грязный?) толчок к поддержке мобильности». Труды 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 . РФК 4864.
  17. ^ «Повышенная устойчивость IP с использованием Cisco NAT с отслеживанием состояния» . Циско .
  18. ^ «Используйте NAT для серверов публичного доступа с частными IP-адресами в частной сети (пример конфигурации WatchGuard)» (PDF) . www.watchguard.com . Архивировано из оригинала (PDF) 17 января 2013 г.
  19. ^ «K7820: Обзор функций SNAT» . Спросите F5 . 28 августа 2007 года . Проверено 24 февраля 2019 г.
  20. ^ «Повышенная устойчивость IP с использованием Cisco NAT с отслеживанием состояния» . Циско .
  21. ^ «Используйте NAT для серверов публичного доступа с частными IP-адресами в частной сети (пример конфигурации WatchGuard)» (PDF) . www.watchguard.com . Архивировано из оригинала (PDF) 17 января 2013 г.
  22. ^ «K7820: Обзор функций SNAT» . Спросите F5 . 28 августа 2007 года . Проверено 24 февраля 2019 г.
  23. ^ «Динамический NAT». 26 января 2016 года . Проверено 19 апреля 2022 г.
  24. ^ «Динамический NAT» . Проверено 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 . РФК 6887.
  31. ^ Мессмер, Эллен (8 июля 2008 г.). «Серьезная ошибка DNS может нарушить работу Интернета». Сетевой мир . Архивировано из оригинала 13 февраля 2009 г. Проверено 14 июня 2021 г.

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