RRAS с пулом адресов и проблема доступа к внешнему FTP-серверу.
Имеется шлюз, построенный на Windows Server 2003 R2 with sp2 RRAS с включенным NAT. За шлюзом локальная сетка. Провайдером выделен пул внешних адресов, которые используются NATом для трансляции. Один из адресов IP_1 зарезервирован для компьютера в локалке Host1. Для остальных компов используется внешний адрес IP_0.
С этого хоста Host1 иду на ftp-сервер ftp.hp.com, чтобы скачать драйвер для принтера. Получаю отлуп от фтп-сервера в момент создания канала данных (второй tcp-connection):
425 Possible PASV port theft, cannot open data connection.
Смотрю трафик на сервере и вижу, что при создании управляющего соединения фтп (на порт 21) используется адрес IP_0 (а должен был бы зарезервированный IP_1), а при создании data connection (дин. порт) – IP_1. Это и не нравится фтп-серверу. Он считает, что выделенный для data connection динамический порт перехватил кто-то с другого IP.
Почему же так происходит? Смотрю таблицу текущих трансляций NAT и не вижу там записи о соединении с 21 портом, как будто кто-то другой вместо NAT переправил пакеты.
Так и есть. Поиск привел к ALG – Application Layer Gateway. Эта штука помогает открывать нужные порты в фаерволе для протоколов уровня приложений типа ftp, BitTorrent, SIP …
Своеобразный такой прокси.
Устанавливается при установке сервера приложений. Работает через плагины. ФТП-шный плагин от MS уже стоит, позволяет работать своему серверу в активном фтп-режиме. И как оказалось, в нашей ситуации работает некорректно. Потому что в роли прокси использует адрес внешнего интерфейса, а не сконфигуренный в НАТе пул. И вообще непонятно, зачем ей сдались исходящие соединения на удаленный 21-й порт.
Для исправления ситуации можно
- вообще отключить службу ALG
- выключить ее ftp-плагин
Код:
[HKLM\Software\Microsoft\ALG\ISV]
“{6E590D61-F6BC-4dad-AC21-7DC40D304059}”=”Disable”
Имеется шлюз, построенный на Windows Server 2003 R2 with sp2 RRAS с включенным NAT. За шлюзом локальная сетка. Провайдером выделен пул внешних адресов, которые используются NATом для трансляции. Один из адресов IP_1 зарезервирован для компьютера в локалке Host1. Для остальных компов используется внешний адрес IP_0.
С этого хоста Host1 иду на ftp-сервер ftp.hp.com, чтобы скачать драйвер для принтера. Получаю отлуп от фтп-сервера в момент создания канала данных (второй tcp-connection):
425 Possible PASV port theft, cannot open data connection.
Смотрю трафик на сервере и вижу, что при создании управляющего соединения фтп (на порт 21) используется адрес IP_0 (а должен был бы зарезервированный IP_1), а при создании data connection (дин. порт) – IP_1. Это и не нравится фтп-серверу. Он считает, что выделенный для data connection динамический порт перехватил кто-то с другого IP.
Почему же так происходит? Смотрю таблицу текущих трансляций NAT и не вижу там записи о соединении с 21 портом, как будто кто-то другой вместо NAT переправил пакеты.
Так и есть. Поиск привел к ALG – Application Layer Gateway. Эта штука помогает открывать нужные порты в фаерволе для протоколов уровня приложений типа ftp, BitTorrent, SIP …
Своеобразный такой прокси.
Устанавливается при установке сервера приложений. Работает через плагины. ФТП-шный плагин от MS уже стоит, позволяет работать своему серверу в активном фтп-режиме. И как оказалось, в нашей ситуации работает некорректно. Потому что в роли прокси использует адрес внешнего интерфейса, а не сконфигуренный в НАТе пул. И вообще непонятно, зачем ей сдались исходящие соединения на удаленный 21-й порт.
Для исправления ситуации можно
- вообще отключить службу ALG
- выключить ее ftp-плагин
Код:
[HKLM\Software\Microsoft\ALG\ISV]
“{6E590D61-F6BC-4dad-AC21-7DC40D304059}”=”Disable”