Доброго времени суток.Есть сервак внутри локалки с серым ip 192.168.1.252, на нем крутиться win2k3 iis FTP
Есть сервак "шлюз" в inet с серым ip 192.168.1.1, и белым ip 62.76.x.x, freebsd+ipfw+natНужно прозрачно вытащить внутренний FTP (192.168.1.252) наружу (62.76.x.x) посредством NAT.
Делаю так:
Поднимаю на локальном сервере FTP. ftp://192.168.1.252:21на шлюзе:
natd.conf ----------------------------------------------------------------------------
use_sockets yes
same_ports yes
redirect_port tcp 192.168.1.252:20-23 62.76.x.x:20-23
redirect_port udp 192.168.1.252:20-23 62.76.x.x:20-23
log
--------------------------------------------------------------------------------------ipfw ---------------------------------------------------------------------------------
...
divert 8668 tcp from any to 62.76.x.x 20-23
divert 8668 tcp from 192.168.1.252 20-23 to any
allow tcp from any to any established
allow tcp from any to 192.168.1.252 20-23 setup
allow tcp from me to any setup
...
--------------------------------------------------------------------------------------В результате при попытке соединения на ftp://62.76.x.x успешно проходит авторизация, но дата соединение не проходит.
far извнешки: ---- (активное соединение)
<- 257 "/" is current directory.
-> PORT 10,254,44,50,7,90
<- 500 Invalid PORT Command.
------------------far извнешки: ---- (PASV соединение)
<- 350 Restarting at 0.
-> PASV
<- 227 Entering Passive Mode (62,76,x,x,11,99)
------------------При пассивном соединении есть возможность создать дериктории etc. Но увидеть содержимое никак, как и собственно начать upload/download.
Заранее прошу прощения, возможно такой вопрос уже поднимался.
Я может чего не догоняю, но при чём тут 20-23? Для пассивного режима нужны 21 и все выше 1024 (обычно это диапазон задаётся в настройках фтп сервера).
Сразу видно, человек не разбирается в принципе работы протокола FTP. :)
Есть два режима работы:
- активный;
Клиент делает командное соединение на 21 порт сервера, затем сервер при необходимости делает DATA соединение с 20 порта на указанный порт клиента (с 1024 и до упора).
- пассивный;
Клиент делает командное соединение на 21 порт сервера, затем клиент при необходимости делает DATA соединение на указанный порт сервера. Диапазон портов сервера для данного режима выбирается в настройках сервера (для ProFTPD это параметр PassivePorts) - на Виндах даже не подскажу :(.Клиенту удобнее использовать пассивный режим, потому что обычно клиент не в курсе какого рода "стенки" стоят между ним и FTP сервером. :)) А серверу ессно удобно использовать активный режим, поскольку настройка ipfw при этом упрощается по самое немогу.
Для чтения - RFC по протоколу FTP. UDP не используется по определению. 22 и 23 порт тут вообще не при чем. Ржу :D.
А чтобы тебе было проще:
- для активного режима:
NAT: redirect_port tcp 192.168.1.252:21 62.76.x.x:21
IPFW: (после divert) allow tcp from any to 192.168.1.252 21 setup
allow tcp from me 20 to any setup
- для пассивного режима: (придется выяснить диапазон портов, который используется серваком под виндами - здесь я предположу что это 32768-65534)
NAT: redirect_port tcp 192.168.1.252:21 62.76.x.x:21
redirect_port tcp 192.168.1.252:32768-65534 62.76.x.x:32768-65534
IPFW: (после divert) allow tcp from any to 192.168.1.252 21 setup
allow tcp from any to 192.168.1.252 32768-65534 setupНу и мораль: учите матчасть ;)
>А чтобы тебе было проще:
>- для активного режима:
> NAT: redirect_port tcp 192.168.1.252:21 62.76.x.x:21
> IPFW: (после divert) allow tcp from any to 192.168.1.252 21 setup
>
>
> allow
>tcp from me 20 to any setupа вот у меня такая связка не заработала... при коннекте на 21 порт внешнего хоста ни сном ни духом... даже эхо ответа нету от внутреннего сервера а не то что передачи данных.