Введение

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

Описание

Когда две сети взаимодействуют через NAT-маршрутизатор, хост-машины внутренней сети кажутся имеющими IP-адрес NAT-маршрутизатора с точки зрения хост-машин внешней сети. Без каких-либо правил перенаправления трафика хост-машине во внешней сети (хост B) невозможно установить соединение с хост-машиной во внутренней сети (хост A). Это происходит потому, что соединение может быть адресовано только IP-адресу NAT-маршрутизатора, поскольку внутренняя сеть скрыта за NAT. Механизм перенаправления портов (port triggering) позволяет, когда хост A устанавливает соединение с хостом B, используя заранее определенный порт или порты, перенаправлять весь входящий трафик, поступающий на эти же порты, на хост A. Это событие является триггером для создания правила перенаправления. Правило перенаправления отключается после периода неактивности. Перенаправление портов полезно для сетевых приложений, в которых для определенных задач необходимо чередование ролей клиента и сервера, например, для аутентификации в IRC-чате и загрузки файлов при FTP-обмене.

Пример

В качестве примера работы триггера портов, при подключении к IRC (Internet Relay Chat) обычно происходит аутентификация имени пользователя с помощью протокола Ident через порт 113. При подключении к IRC клиентский компьютер обычно устанавливает исходящее соединение на порту 6667 (или любом порту в диапазоне 6660–7000), что заставляет сервер IRC попытаться проверить указанное имя пользователя, устанавливая новое соединение обратно к клиентскому компьютеру на порт 113. Когда компьютер находится за NAT, устройство NAT незаметно отбрасывает это соединение, поскольку не знает, на какой компьютер за NAT следует отправить запрос на соединение. Эти два соединения на транспортном уровне необходимы для успешного установления соединения на уровне приложений с сервером IRC (см. семейство интернет-протоколов). Поскольку второе TCP/IP соединение невозможно, попытка подключения к серверу IRC завершится неудачей. В случае триггера портов, маршрутизатор настраивается таким образом, чтобы при установлении исходящего соединения на любом порту от 6660 до 7000, он разрешал входящие соединения на этот конкретный компьютер на порт 113. Это обеспечивает большую гибкость по сравнению со статической переадресацией портов, поскольку не требуется настройка для конкретного адреса в вашей сети, что позволяет нескольким клиентам подключаться к серверам IRC через маршрутизатор NAT. Также повышается безопасность, поскольку входящий порт не остается открытым, когда он не используется активно.

Недостатки

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