Страница 1 из 1

FreeBSD 9.2 + natd + vsftpd (пассивный режим)

Добавлено: 2013-11-30 18:35:23
redmax
Уважаемые Гуру, подскажите пожалуйста иначе мне бессонница гарантирована :-)
Есть сеть предприятия с адресом - 192.168.16.0/24.
В этой сети есть шлюз (192.168.16.1), через который осуществляется выход в Интернет. На шлюзе работает FreeBSD 9.2, работает (ipfw) и поднят natd.
В сети есть ещё один сервер с FreeBSD (192.168.16.2) здесь поднят vsftpd.
Хочу дать доступ к ftp серверу внешним пользователям. Причем так, чтобы сервер работал в пассивном режиме.
Для этого я сделал следующее:
Пробросил порт в natd(на шлюзе) с помощью: redirect_port tcp 192.168.16.2:21 21
В настройках vsftpd указал:
pasv_address=XX.XX.XX.XX #(мой внешний адрес)
pasv_min_port=65201
pasv_max_port=65535

Клиента настроил подключаться только в режиме пассивного сервера. Запустил. Как и следовало ожидать к серверу я подключился, но списка каталогов я не получаю так как порты 65201-65535 я не пробрасывал с помощью redirect_port.

Далее начинаются непонятки. Если в настройках vsftpd закомментировать параметр pasv_address, то ftp поднимается в полном объеме.
При этом на сервере после команды:
"PASV"
формируется ответ:
"227 Entering Passive Mode (192,168,16,2,255,252)" (что логично)

Но ко мне на клиент приходит уже:

"227 Entering Passive Mode (XX,XX,XX,XX,255,252)" (кто-то подменил неправильный ответ на правильный).

Отсюда вопрос:
1. Кто способен подменить адрес внутри ftp-протокола: natd или zyxel P330W EE (который стоит у меня дома)?
2. И самое главное! Каким образом natd пробрасывает порт 65532 на 192.168.16.2, если я не редиректю эти порты!

В первую очередь меня беспокоит 2-ой вопрос.

Re: FreeBSD 9.2 + natd + vsftpd (пассивный режим)

Добавлено: 2013-12-02 11:35:48
BlitzKrieg
Вы пробросили только 21 порт, порт команд. Далее вы говорите команду PASV. Сообщение от сервера с ответом на эту команду "227 Entering Passive Mode (192,168,16,2,255,252)" передается также по порту команд. Все, что передается наружу проходит нат, поэтому адрес в этом сообщении меняется.
Соединение по порту данных так и не устанавливается о чем говорит невозможность выполнить команду листинга каталога.
Как-то так.

Re: FreeBSD 9.2 + natd + vsftpd (пассивный режим)

Добавлено: 2013-12-02 17:32:55
skipper
Настройте ftp-proxy на вашем шлюзе и будет вам счастье :)

Код: Выделить всё

/usr/sbin/ftp-proxy -b 192.168.16.1 -p 21 -R 192.168.16.2 -P 21
По поводу "почему так, а не иначе", читайте подробнее про проброс ftp.