- Application-level gateway
-
Applications-level gateway, или ALG (англ. «шлюз прикладного уровня») — компонент NAT-маршрутизатора, который понимает какой-либо прикладной протокол, и при прохождении через него пакетов этого протокола модифицирует их таким образом, что находящиеся за NAT пользователи могут пользоваться протоколом.
Содержание
Описание
NAT-маршрутизатор ретранслирует пакеты, поступающие изнутри сети, с внешнего IP-адреса. Также может подменяться порт. Но некоторые сетевые протоколы передают IP-адрес или порт отправителя. Конечно же, после прохождения NAT эти параметры становятся неверными — а значит, удалённая сторона не может наладить соединение.
ALG, идентифицировав пакет как относящийся к данному протоколу, подставляет в качестве IP-адреса и порта свои адрес и порт. Если, по протоколу, соединение по этому порту налаживает удалённый компьютер, автоматически включается ретрансляция.
ALG похож на прокси-сервер; обычно понятием «прокси-сервер» называют сервер, который выполняет дополнительные операции наподобие кэширования, в то время как задача ALG — обеспечить, чтобы клиенты могли пользоваться протоколом.
Протоколы, требующие ALG
- FTP без пассивного режима (
PASV
). Передает IP-адрес и номер порта на клиенте в команде PORT. - PPTP. Протокол основан на GRE (по сути PPTP есть PPP поверх GRE с дополнительным управляющим TCP-соединением, которое не используется для данных), а значит, на "сыром" IP. Так как "сырой" IP не имеет понятия "номер порта", возникают проблемы с NAT-отображением этого протокола во внешний мир. Без наличия PPTP ALG в NAT (например, natd в старых версиях FreeBSD) из всей внутренней сети возможно только одно PPTP-подключение к внешнему миру, попытка кого угодно во внутренней сети создать еще одно исходящее PPTP-подключение приводит к ошибке (ошибка 619 в Windows).
- H.323
- Протоколы передачи файлов в некоторых мессенджерах (например, MSN Messenger)
- Создание сервера в некоторых играх
- Некоторые файлообменные сети
Реализации в ОС
- Windows
Встроенный NAT в ОС Windows (ipnat.sys, в интерфейсе пользователя возможность называется Internet Connection Sharing) использует исполняемые в режиме пользователя ALG-модули, которые загружаются в адресное пространство процесса ALG.EXE (он же сервис по имени alg). В Platform SDK есть заголовочные файлы для разработки ALG-модулей для ранее не поддерживаемых протоколов. Тем не менее, документация на эти интерфейсы не опубликована.
Реализация в маршрутизаторах
Практически все маршрутизаторы, имеющие NAT, умеют работать с PPTP, IPsec, RTSP, SIP, H.323, SMTP, DNS, TFTP.
Ссылки
Категории:- Маршрутизация
- Службы Windows
- Сетевое программное обеспечение
- FTP без пассивного режима (
Wikimedia Foundation. 2010.