Трансляция сетевых адресов ( NAT ) - это метод сопоставления пространства IP- адресов с другим путем изменения информации о сетевом адресе в IP-заголовке пакетов во время их передачи через устройство маршрутизации трафика . [1] Изначально этот метод использовался, чтобы избежать необходимости назначать новый адрес каждому узлу при перемещении сети или при замене вышестоящего поставщика Интернет-услуг , но не мог маршрутизировать адресное пространство сети. Он стал популярным и важным инструментом для сохранения глобального адресного пространства перед лицом исчерпания адресов IPv4 . Один IP-адрес с интернет-маршрутизациейшлюза NAT можно использовать для всей частной сети .
Маскировка IP - это метод, который скрывает все пространство IP-адресов, обычно состоящее из частных IP-адресов, за одним IP-адресом в другом, обычно публичном адресном пространстве. Скрытые адреса отображаются на один (общедоступный) IP-адрес в качестве исходного адреса исходящих IP-пакетов, поэтому они выглядят как исходящие не от скрытого хоста, а от самого устройства маршрутизации. Из-за популярности этого метода сохранения адресного пространства IPv4 термин NAT стал фактически синонимом маскировки IP.
Поскольку преобразование сетевых адресов изменяет информацию об IP-адресах в пакетах, реализации NAT могут различаться по своему конкретному поведению в различных случаях адресации и их влиянию на сетевой трафик. Специфика поведения NAT обычно не документируется поставщиками оборудования, содержащего реализации NAT. [2]
Базовый NAT
Самый простой тип NAT обеспечивает однозначное преобразование IP-адресов. RFC 2663 называет этот тип NAT базовым NAT ; это также называется NAT "один-к-одному" . В этом типе NAT изменяются только IP-адреса, контрольная сумма IP-заголовка и любые контрольные суммы более высокого уровня, которые включают IP-адрес. Базовый NAT может использоваться для соединения двух IP-сетей с несовместимой адресацией.
NAT "один ко многим"
Большинство трансляторов сетевых адресов сопоставляют несколько частных хостов одному общедоступному IP-адресу. В типичной конфигурации локальная сеть использует одну из назначенных подсетей частных IP-адресов (RFC 1918). Маршрутизатор в этой сети имеет частный адрес этого адресного пространства. Маршрутизатор также подключен к Интернету с помощью общедоступного адреса, обычно назначаемого поставщиком услуг Интернета . По мере прохождения трафика из локальной сети в Интернет адрес источника в каждом пакете «на лету» преобразуется с частного адреса в общедоступный. Маршрутизатор отслеживает основные данные о каждом активном соединении (в частности, адрес и порт назначения). Когда ответ возвращается к маршрутизатору, он использует данные отслеживания соединения, которые он хранит во время исходящей фазы, чтобы определить частный адрес во внутренней сети, на который следует переслать ответ.
Все IP-пакеты имеют исходный IP-адрес и IP-адрес назначения. Обычно для пакетов, проходящих из частной сети в общедоступную, будет изменен адрес источника, в то время как для пакетов, проходящих из общедоступной сети обратно в частную сеть, будет изменен адрес назначения. Чтобы избежать двусмысленности в том, как переводятся ответы, требуются дальнейшие модификации пакетов. Подавляющая часть интернет-трафика использует протокол управления передачей (TCP) или протокол пользовательских дейтаграмм (UDP). Для этих протоколов номера портов изменены, так что комбинация IP-адреса (в заголовке IP ) и номера порта (в заголовке транспортного уровня ) в возвращаемом пакете может быть однозначно сопоставлена с соответствующим адресатом частной сети. RFC 2663 использует термин сетевой адрес и преобразование порта (NAPT) для этого типа NAT. Другие имена включают преобразование адресов порта (PAT), маскировку IP , перегрузку NAT и NAT « многие к одному» . Это наиболее распространенный тип NAT, который стал синонимом широко используемого термина «NAT».
Этот метод обеспечивает связь через маршрутизатор только тогда, когда разговор происходит в частной сети, поскольку исходная передача - это то, что устанавливает требуемую информацию в таблицах трансляции. Веб - браузер в замаскараденных сетях можно, например, просматривать веб - сайт снаружи, но веб - браузер снаружи не может просматривать веб - сайта , размещенный в сети замаскараденной. [a] Протоколы, не основанные на TCP и UDP, требуют других методов трансляции.
Одним из дополнительных преимуществ NAT «один ко многим» является то, что это практическое решение проблемы исчерпания адресов IPv4 . Даже большие сети могут быть подключены к Интернету с помощью одного общедоступного IP-адреса. [b]
Способы перевода
Трансляция сетевых адресов и портов может быть реализована несколькими способами. Некоторым приложениям, использующим информацию об IP-адресах, может потребоваться определение внешнего адреса преобразователя сетевых адресов. Это адрес, который обнаруживают его узлы связи во внешней сети. Кроме того, может потребоваться изучить и классифицировать тип используемого сопоставления, например, когда желательно установить прямой путь связи между двумя клиентами, оба из которых находятся за отдельными шлюзами NAT.
Для этой цели, RFC 3489 указан протокол под названием Simple Traversal по протоколу UDP через NATS ( STUN ) в 2003 году классифицирована реализация NAT в качестве полного конуса NAT , (адрес) с ограниченным конусом NAT , Порт-ограниченным конус NAT или симметричная NAT , и предложил методику тестирования устройства соответственно. Однако с тех пор эти процедуры были исключены из статуса стандартов, поскольку методы неадекватны для правильной оценки многих устройств. RFC 5389 стандартизировал новые методы в 2008 году, и аббревиатура STUN теперь представляет новое название спецификации: Session Traversal Utilities for NAT .
Полный конус NAT , также известный как NAT один-к-одному
| |
(Адрес) -restricted-cone NAT
| |
Конусный NAT с ограничением портов Подобен конусному NAT с ограничением адресов, но ограничение включает номера портов.
| |
Симметричный NAT
|
Многие реализации NAT комбинируют эти типы, и поэтому лучше ссылаться на конкретное индивидуальное поведение NAT вместо использования терминологии Cone / Symmetric. RFC 4787 пытается устранить путаницу, вводя стандартизированную терминологию для наблюдаемого поведения. Для первого маркера в каждой строке приведенной выше таблицы RFC охарактеризовал бы NAT с полным конусом, ограниченным конусом и конусом с ограниченным портом как имеющий отображение , независимое от конечной точки , тогда как он охарактеризовал бы симметричный NAT как имеющий адресную и отображение в зависимости от порта . Для второго маркера в каждой строке приведенной выше таблицы RFC 4787 также пометил бы Full-Cone NAT как имеющий независимую от конечных точек фильтрацию , ограниченный конусный NAT как имеющий адресно-зависимую фильтрацию , конусный NAT с ограничением портов как имеющий адрес и Порт-Dependent фильтрация и Симметричный NAT как имеющие либо адрес , зависящий от фильтрации или адрес и порт-зависимой фильтрацию . Другие классификации поведения NAT, упомянутые в RFC, включают, сохраняют ли они порты, когда и как обновляются сопоставления, могут ли внешние сопоставления использоваться внутренними хостами (т. Е. Его поведение закрепления ) и уровень детерминизма, проявляемый NAT при применении всех этих параметров. правила. [2] В частности, большинство 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. [2]
С другой стороны, для UDP NAT не требует сохранения порта. Действительно, несколько соединений UDP (каждая с отдельной конечной точкой ) может происходить на одном и том же исходном порте, и приложения обычно повторно используют один и тот же сокет UDP для отправки пакетов на разные хосты. Это упрощает прогнозирование портов, так как это один и тот же исходный порт для каждого пакета.
Кроме того, сохранение порта в NAT для TCP позволяет протоколам P2P предлагать меньшую сложность и меньшую задержку, поскольку нет необходимости использовать третью сторону (например, STUN) для обнаружения порта NAT, поскольку само приложение уже знает порт NAT. [2] [3]
Однако, если два внутренних хоста пытаются связаться с одним и тем же внешним хостом, используя один и тот же номер порта, NAT может попытаться использовать другой внешний IP-адрес для второго подключения или может потребоваться отказаться от сохранения порта и переназначить порт. [2] : 9
По состоянию на 2006 г.[Обновить], примерно 70% клиентов в сетях P2P использовали какую-либо форму NAT. [4]
Выполнение
Установление двусторонней связи
Каждый пакет TCP и UDP содержит номер порта источника и номер порта назначения. Каждый из этих пакетов инкапсулируется в IP-пакет, IP-заголовок которого содержит IP-адрес источника и IP-адрес назначения. Тройка IP-адрес / протокол / номер порта определяет связь с сетевым сокетом .
Для общедоступных служб, таких как веб-серверы и почтовые серверы, важен номер порта. Например, порт 80 подключается через сокет к программному обеспечению веб-сервера, а порт 25 - к демону SMTP почтового сервера . IP-адрес общедоступного сервера также важен, поскольку его глобальная уникальность аналогична почтовому адресу или номеру телефона. И IP-адрес, и номер порта должны быть правильно известны всем хостам, желающим успешно взаимодействовать.
Частные IP-адреса, как описано в RFC 1918, можно использовать только в частных сетях, не подключенных напрямую к Интернету. Порты - это конечные точки связи, уникальные для этого хоста, поэтому соединение через устройство NAT поддерживается за счет комбинированного сопоставления порта и IP-адреса. Частный адрес внутри NAT сопоставляется с внешним публичным адресом. Преобразование адресов портов (PAT) разрешает конфликты, которые возникают, когда несколько хостов используют один и тот же номер исходного порта для одновременного установления разных внешних подключений.
Аналогия расширения телефонного номера
Устройство NAT похоже на телефонную систему в офисе, у которой есть один общий телефонный номер и несколько добавочных номеров. Все исходящие телефонные звонки из офиса поступают с одного и того же телефонного номера. Однако входящий вызов, для которого не указан добавочный номер, не может быть автоматически переведен на физическое лицо в офисе. В этом сценарии офис представляет собой частную локальную сеть, основной номер телефона - это общедоступный IP-адрес, а отдельные добавочные номера - это уникальные номера портов. [5]
Процесс перевода
При использовании NAT все сообщения, отправляемые на внешние хосты, фактически содержат внешний IP-адрес и информацию о порте устройства NAT, а не внутренние IP-адреса хоста или номера портов. 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-адресов. [6] [7] Перекрытие адресов происходит, когда узлы в разных сетях с одним и тем же пространством IP-адресов пытаются связаться с одним и тем же узлом назначения. Чаще всего это неправильная конфигурация, которая может возникнуть в результате слияния двух сетей или подсетей, особенно при использовании адресации частной сети RFC 1918 . На хост-адресат поступает трафик, очевидно, из той же сети, а промежуточные маршрутизаторы не имеют возможности определить, куда следует отправлять ответный трафик. Решение состоит в изменении нумерации для устранения перекрытия или в трансляции сетевых адресов.
- Балансировки нагрузки
- В клиент-серверных приложениях балансировщики нагрузки перенаправляют клиентские запросы на набор серверных компьютеров для управления рабочей нагрузкой каждого сервера. Преобразование сетевых адресов может использоваться для сопоставления репрезентативного IP-адреса кластера серверов с конкретными хостами, которые обслуживают запрос. [8] [9] [10] [11]
Связанные методы
Обратный адрес и преобразование портов IEEE (RAPT или RAT) позволяет хосту, чей реальный IP-адрес время от времени меняется, оставаться доступным в качестве сервера через фиксированный домашний IP-адрес. [12] В принципе, это должно позволить настраивать серверы в сетях с DHCP. Хотя RAPT и не является идеальным мобильным решением, вместе с новыми протоколами, такими как DHCP - DDNS , он может стать еще одним полезным инструментом в арсенале сетевого администратора.
Реализация Cisco RAPT представляет собой перегрузку PAT или NAT и сопоставляет несколько частных IP-адресов с одним общедоступным IP-адресом. Несколько адресов могут быть сопоставлены с одним адресом, поскольку каждый частный адрес отслеживается по номеру порта. PAT использует уникальные номера портов источника на внутреннем глобальном IP-адресе, чтобы различать переводы. Номера портов представляют собой 16-битные целые числа. Общее количество внутренних адресов, которые могут быть преобразованы в один внешний адрес, теоретически может достигать 65 536 на IP-адрес. На самом деле количество портов, которым может быть назначен один IP-адрес, составляет около 4000. PAT пытается сохранить исходный исходный порт. Если этот исходный порт уже используется, PAT назначает первый доступный номер порта, начиная с начала соответствующей группы портов 0–511, 512–1023 или 1024–65535. Когда доступных портов больше нет и настроено более одного внешнего IP-адреса, PAT переходит к следующему IP-адресу, чтобы попытаться снова выделить исходный порт источника. Этот процесс продолжается до тех пор, пока не закончатся доступные порты и внешние IP-адреса.
Сопоставление адреса и порта - это предложение Cisco, которое сочетает преобразование адреса и порта с туннелированием пакетов IPv4 по внутренней сети IPv6 провайдера . По сути, это (почти) без гражданства альтернатива операторского класса NAT и DS-Lite , который выталкивает адрес IPv4 / порт функцию перевода (и , следовательно , поддержание состояния NAT) полностью в существующие оборудования помещений клиента реализации NAT. Таким образом можно избежать проблем NAT444 и состояния, присущих NAT операторского уровня, а также обеспечивает механизм перехода для развертывания собственного IPv6 одновременно с очень небольшой дополнительной сложностью.
Проблемы и ограничения
Хосты за маршрутизаторами с поддержкой NAT не имеют сквозного соединения и не могут участвовать в некоторых интернет-протоколах. Службы, требующие инициирования TCP- соединений из внешней сети или протоколов без сохранения состояния, например, использующих UDP , могут быть нарушены. Если маршрутизатор NAT не приложит особых усилий для поддержки таких протоколов, входящие пакеты не смогут достичь места назначения. Некоторые протоколы могут поддерживать один экземпляр NAT между участвующими хостами ( например, FTP в «пассивном режиме» ), иногда с помощью шлюза на уровне приложения (см. Ниже), но не работают, когда обе системы отделены от Интернета с помощью NAT. Использование NAT также усложняет протоколы туннелирования, такие как IPsec, поскольку NAT изменяет значения в заголовках, которые мешают проверкам целостности, выполняемым IPsec и другими протоколами туннелирования.
Сквозная связь была основным принципом Интернета, поддерживаемым, например, Советом по архитектуре Интернета . В текущих документах по архитектуре Интернета отмечается, что NAT является нарушением принципа сквозного соединения , но что NAT действительно играет важную роль при тщательном проектировании. [13] Использование IPv6 NAT вызывает гораздо больше опасений, и многие архитекторы IPv6 считают, что IPv6 был предназначен для устранения необходимости в NAT. [14]
Реализация, которая отслеживает только порты, может быть быстро исчерпана внутренними приложениями, использующими несколько одновременных подключений (например, HTTP- запрос для веб-страницы со множеством встроенных объектов). Эту проблему можно смягчить, отслеживая IP-адрес назначения в дополнение к порту (таким образом, разделяя один локальный порт со многими удаленными хостами) за счет сложности реализации и ресурсов ЦП / памяти устройства трансляции.
Поскольку все внутренние адреса замаскированы под одним общедоступным адресом, внешние узлы не могут инициировать соединение с конкретным внутренним узлом без специальной настройки брандмауэра для переадресации подключений к определенному порту. Такие приложения, как VOIP , видеоконференцсвязь и другие одноранговые приложения, для работы должны использовать методы обхода NAT .
Фрагментация и контрольные суммы
Чистый NAT, работающий только по 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 зависит от поставщика. [15] [16] [17] Многие поставщики имеют собственные определения для SNAT :
- исходный NAT является обычным расширением, как аналог NAT назначения ( DNAT )
- NAT с отслеживанием состояния используется Cisco Systems [18]
- статический NAT используется WatchGuard [19]
- безопасный NAT используется F5 Networks [20] и Microsoft (в отношении ISA Server )
Трансляция защищенных сетевых адресов (SNAT) от Microsoft является частью Microsoft Internet Security and Acceleration Server и является расширением драйвера NAT, встроенного в Microsoft Windows Server . Он обеспечивает отслеживание и фильтрацию дополнительных сетевых подключений, необходимых для протоколов FTP , ICMP , H.323 и PPTP , а также возможность настройки прозрачного прокси-сервера HTTP .
Динамическая трансляция сетевых адресов
Динамический NAT, как и статический NAT, не распространен в небольших сетях, но встречается в крупных корпорациях со сложными сетями. Отличие динамического NAT от статического состоит в том, что там, где статический NAT обеспечивает взаимно однозначное сопоставление внутренних и общедоступных статических IP-адресов, динамический NAT обычно использует группу доступных общедоступных IP-адресов.
NAT-закрепление
НАТ hairpinning , также известный как NAT шлейф или отражение NAT , [21] является особенностью многих потребительских маршрутизаторов [22] , что позволяет доступ к службе через IPадрес общественности из внутри локальной сети. Это устраняет необходимость в использовании отдельного разрешения доменных имен для хостов внутри сети, чем для общедоступной сети для веб-сайта. [ требуется разъяснение ]
Ниже описан пример сети:
- Публичный адрес: 203.0.113.1 . Это адрес WAN- интерфейса на маршрутизаторе.
- Внутренний адрес роутера: 192.168.1.1
- Адрес сервера: 192.168.1.2
- Адрес локального компьютера: 192.168.1.100
Если пакет отправляется на общедоступный адрес компьютером по адресу 192.168.1.100 , пакет обычно направляется на шлюз по умолчанию (маршрутизатор), если явный маршрут не установлен в таблицах маршрутизации компьютера . Маршрутизатор с функцией обратной связи NAT определяет, что 203.0.113.1 является адресом его интерфейса WAN, и обрабатывает пакет так, как если бы он пришел с этого интерфейса. Он определяет пункт назначения для этого пакета на основе правил DNAT (переадресации портов) для пункта назначения. Если данные были отправлены на порт 80, а для порта 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 является восстановление сквозного сетевого подключения. [23] Закольцовывание NAT обычно не требуется. Хотя все еще возможно, большое адресное пространство IPv6 устраняет необходимость в сохранении адресов, и каждому устройству может быть присвоен уникальный глобально маршрутизируемый адрес. При этом использование уникальных локальных адресов в сочетании с преобразованием сетевых префиксов может привести к аналогичным результатам.
Приложения, затронутые NAT
Некоторые протоколы прикладного уровня (такие как FTP и SIP ) отправляют явные сетевые адреса в своих данных приложения. Например, FTP в активном режиме использует отдельные соединения для управления трафиком (команды) и для трафика данных (содержимое файла). При запросе передачи файла хост, выполняющий запрос, идентифицирует соответствующее соединение для передачи данных по адресам своего сетевого и транспортного уровня . Если хост, выполняющий запрос, находится за простым брандмауэром NAT, преобразование IP-адреса и / или номера порта TCP делает информацию, полученную сервером, недействительной. Протокол Session Initiation Protocol (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 с использованием таких протоколов, как STUN или ICE , или проприетарных подходов в пограничном контроллере сеанса . Обход NAT возможен как в приложениях, основанных на TCP, так и на UDP, но метод на основе UDP проще, понятнее и более совместим с устаревшими NAT. [ необходима цитата ] В любом случае протокол высокого уровня должен быть разработан с учетом обхода NAT, и он не работает надежно через симметричные NAT или другие устаревшие NAT с плохим поведением.
Другие возможности - это UPnP протокол устройства шлюза Интернет , NAT-PMP (протокол сопоставления портов NAT) или протокол управления портами (PCP) [24], но они требуют, чтобы устройство 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
- Общий доступ к подключению к Интернету (ICS): реализация NAT и DHCP включена в операционные системы Windows для настольных ПК.
- IPFilter : включен в ( Open ) Solaris , FreeBSD и NetBSD , доступен для многих других Unix-подобных операционных систем.
- ipfirewall (ipfw): собственный фильтр пакетов FreeBSD
- Netfilter с iptables / nftables : фильтр пакетов Linux
- NPF : NetBSD-родной фильтр пакетов
- PF : собственный фильтр пакетов OpenBSD
- Служба маршрутизации и удаленного доступа : реализация маршрутизации включена в операционные системы Windows Server
- WinGate : сторонняя реализация маршрутизации для Windows
Смотрите также
- Anything In Anything (AYIYA) - IPv6 поверх IPv4 UDP, что позволяет работать с туннелированием IPv6 через большинство NAT.
- Шлюз (телекоммуникации)
- Протокол интернет-шлюза (IGD) - метод обхода UPnP NAT
- Средний ящик
- Запуск порта
- Шпилька
- Подсеть
- Порт (компьютерная сеть)
- Туннелирование Teredo - обход NAT с использованием IPv6
- NAT операторского уровня - NAT за NAT внутри интернет-провайдера.
Заметки
- ^ Большинство устройств NAT сегодня позволяют сетевому администратору настраивать записи таблицы статической трансляции для подключений из внешней сети во внутреннюю замаскированную сеть. Эту функцию часто называют статическим NAT . Это может быть реализовано в двух типах: переадресация портов, которая перенаправляет трафик с определенного внешнего порта на внутренний хост на указанном порту, и назначение узла DMZ, который передает весь трафик, полученный на внешнем интерфейсе (на любом номере порта), на внутренний IP-адрес с сохранением порта назначения. Оба типа могут быть доступны на одном устройстве NAT.
- ^ Наиболее распространена схема, когда компьютеры, которым требуется сквозное соединение, снабжены маршрутизируемым IP-адресом, в то время как другие компьютеры не предоставляют услуги внешним пользователям за NAT с использованием только нескольких IP-адресов для обеспечения доступа в Интернет.
Рекомендации
- ^ Справочник сетевых протоколов (2-е изд.). Javvin Technologies Inc. 2005. стр. 27. ISBN 9780974094526. Проверено 16 сентября 2014 .
- ^ а б в г д Франсуа Оде; Каллен Дженнингс (январь 2007 г.). Требования к поведению трансляции сетевых адресов (NAT) для одноадресного UDP . IETF . DOI : 10,17487 / RFC4787 . RFC 4787 .
- ^ «Характеристика и измерение прохождения TCP через NAT и межсетевые экраны» . Декабрь 2006 г.
- ^ «Освещение теней: Оппортунистические сети и измерения сети» . Декабрь 2006 Архивировано из оригинала на 2010-07-24.
- ^ «Мгновенное руководство для экспертов по аудио через IP» (PDF) . Соединительная линия. Январь 2010. Архивировано из оригинального (PDF) 08.10.2011 . Проверено 19 августа 2011 .
- ^ «Использование NAT в перекрывающихся сетях» . Август 2005 г.
- ^ «Сценарий проблемы VPN с перекрывающимися подсетями» . Сентябрь 2017 г.
- ^ «Распределение нагрузки с использованием трансляции IP-адресов» . Август 1998 г.
- ^ "Что такое балансировка нагрузки на уровне 4?" . Июнь 2020.
- ^ "Что такое балансировка нагрузки?" . Ноябрь 2018.
- ^ «Настроить балансировку нагрузки сервера с помощью динамического NAT» . Июнь 2018 г.
- ^ Singh, R .; Тай, YC; Тео, WT; Да, SW (1999). «КРЫСА: Быстрый (и грязный?) Толчок для поддержки мобильности». Труды WMCSA'99. Второй семинар IEEE по мобильным вычислительным системам и приложениям . С. 32–40. CiteSeerX 10.1.1.40.461 . DOI : 10,1109 / MCSA.1999.749275 . ISBN 978-0-7695-0025-6.
- ^ Bush, R .; Мейер, Д. (2002). Некоторые принципы архитектуры и философия Интернета . IETF . DOI : 10,17487 / RFC3439 . RFC 3439 .
- ^ Велде, Г. Ван де; Hain, T .; Droms, R .; Карпентер, Б .; Кляйн, Э. (2007). Защита локальной сети для IPv6 . IETF . DOI : 10,17487 / RFC4864 . RFC 4864 .
- ^ «Повышенная отказоустойчивость IP с помощью Cisco Stateful NAT» . Cisco .
- ^ «Использование NAT для общедоступных серверов доступа с частными IP-адресами в частной сети (пример конфигурации WatchGuard)» (PDF) . www.watchguard.com .
- ^ «K7820: Обзор возможностей SNAT» . AskF5 . 28 августа 2007 . Проверено 24 февраля 2019 года .
- ^ «Повышенная отказоустойчивость IP с помощью Cisco Stateful NAT» . Cisco .
- ^ «Использование NAT для общедоступных серверов доступа с частными IP-адресами в частной сети (пример конфигурации WatchGuard)» (PDF) . www.watchguard.com .
- ^ «K7820: Обзор возможностей SNAT» . AskF5 . 28 августа 2007 . Проверено 24 февраля 2019 года .
- ^ «Что такое NAT Reflection / NAT Loopback / NAT Hairpinning?» . Сетевые работники Нью-Йорка. 2014-11-09 . Проверено 27 апреля 2017 .
- ^ «Маршрутизаторы с обратной связью NAT - OpenSim» ( MediaWiki ) . OpenSimulator . 2013-10-21 . Проверено 21 февраля 2014 .
- ^ Ильич ван Бейнум (23 июля 2008 г.). «После упорного сопротивления NAT все же может перейти на IPv6» . Ars Technica . Проверено 24 апреля 2014 .
- ^ Д. Винг, Эд; Cheshire, S .; Boucadair, M .; Penno, R .; Селкирк, П. (2013). Протокол управления портами (PCP) . IETF . DOI : 10,17487 / RFC6887 . RFC 6887 .
Внешние ссылки
- NAT-Traversal Test и результаты
- Характеристика различных TCP NAT - документ, в котором обсуждаются различные типы NAT
- Анатомия: взгляд внутрь преобразователей сетевых адресов - Том 7, выпуск 3, сентябрь 2004 г.
- Джефф Тайсон, HowStuffWorks: Как работает трансляция сетевых адресов
- Маршрутизация с NAT (часть документации для IBM iSeries)
- Часто задаваемые вопросы о преобразовании сетевых адресов (NAT) - Cisco Systems