Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Трансляция сетевых адресов между частной сетью и Интернетом

Преобразование сетевых адресов ( 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 вместо использования терминологии конус / симметричный. RFC 4787 пытается уменьшить путаницу, вводя стандартизированную терминологию для наблюдаемого поведения. Для первого маркера в каждой строке приведенной выше таблицы RFC охарактеризовал бы NAT с полным конусом, ограниченным конусом и конусом с ограниченным портом как имеющий отображение , не зависящее от конечной точки , тогда как он характеризует симметричный NAT как имеющий адресный и отображение в зависимости от порта . Для второго маркера в каждой строке приведенной выше таблицы RFC 4787 также пометил бы Full-Cone NAT как имеющий независимую от конечных точек фильтрацию., Ограниченный-Cone NAT как имеющие адреса , зависящие от фильтрации , Порт-Restricted Cone NAT , как имеющий адрес и порт-зависимой фильтрацию и Симметричного 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]

Реализация [ править ]

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

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

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

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

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

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

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

Процесс перевода [ править ]

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

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

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

Видимость операции [ править ]

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

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

Приложения [ править ]

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

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

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

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

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

DNAT [ править ]

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

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

SNAT [ править ]

Значение термина SNAT зависит от поставщика. [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) управляет многими передачами голоса по 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 tunneling  - обход NAT с использованием IPv6
  • NAT операторского уровня  - NAT за NAT внутри интернет-провайдера.

Примечания [ править ]

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

Ссылки [ править ]

  1. ^ Справочник сетевых протоколов (2-е изд.). Javvin Technologies Inc. 2005. стр. 27. ISBN 9780974094526. Проверено 16 сентября 2014 .
  2. ^ a b c d e Франсуа Оде; Каллен Дженнингс (январь 2007 г.). Требования к поведению трансляции сетевых адресов (NAT) для одноадресного UDP . IETF . DOI : 10,17487 / RFC4787 . RFC 4787 .
  3. ^ «Характеристика и измерение прохождения TCP через NAT и брандмауэры» . Декабрь 2006 г.
  4. ^ «Освещая тени: Оппортунистические сети и измерения сети» . Декабрь 2006 Архивировано из оригинала на 2010-07-24.
  5. ^ «Мгновенное руководство для экспертов по аудио через IP» (PDF) . Соединительная линия. Январь 2010. Архивировано из оригинального (PDF) 08.10.2011 . Проверено 19 августа 2011 .
  6. ^ «Использование NAT в перекрывающихся сетях» . Август 2005 г.
  7. ^ «Сценарий проблемы VPN с перекрывающимися подсетями» . Сентябрь 2017 г.
  8. ^ «Распределение нагрузки с использованием трансляции IP-адресов» . Август 1998 г.
  9. ^ "Что такое балансировка нагрузки на уровне 4?" . Июнь 2020.
  10. ^ "Что такое балансировка нагрузки?" . Ноябрь 2018.
  11. ^ «Настроить балансировку нагрузки сервера с помощью динамического NAT» . Июнь 2018 г.
  12. ^ 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.
  13. ^ Буш, R .; Мейер, Д. (2002). Некоторые принципы архитектуры и философия Интернета . IETF . DOI : 10,17487 / RFC3439 . RFC 3439 .
  14. ^ Велде, Г. Ван де; Hain, T .; Droms, R .; Карпентер, Б .; Кляйн, Э. (2007). Защита локальной сети для IPv6 . IETF . DOI : 10,17487 / RFC4864 . RFC 4864 .
  15. ^ «Повышенная отказоустойчивость IP с использованием Cisco Stateful NAT» . Cisco .
  16. ^ «Использовать NAT для публичного доступа к серверам с частными IP-адресами в частной сети (пример конфигурации WatchGuard)» (PDF) . www.watchguard.com .
  17. ^ «K7820: Обзор возможностей SNAT» . AskF5 . 28 августа 2007 . Проверено 24 февраля 2019 года .
  18. ^ «Повышенная отказоустойчивость IP с использованием Cisco Stateful NAT» . Cisco .
  19. ^ «Использовать NAT для публичного доступа к серверам с частными IP-адресами в частной сети (пример конфигурации WatchGuard)» (PDF) . www.watchguard.com .
  20. ^ «K7820: Обзор возможностей SNAT» . AskF5 . 28 августа 2007 . Проверено 24 февраля 2019 года .
  21. ^ "Что такое NAT Reflection / NAT Loopback / NAT Hairpinning?" . Сетевые работники Нью-Йорка. 2014-11-09 . Проверено 27 апреля 2017 .
  22. ^ "Маршрутизаторы с обратной связью NAT - OpenSim" ( MediaWiki ) . OpenSimulator . 2013-10-21 . Проверено 21 февраля 2014 .
  23. ^ Iljitsch ван Beijnum (2008-07-23). «После того, как убежденного сопротивления, NAT может прийти к IPv6 после всех» . Ars Technica . Проверено 24 апреля 2014 .
  24. ^ D. Wing, Ed; 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