Всем привет! Есть сервер с IP 192.168.2.10. Также на сервере крутятся 2 виртуальные машины (виртуализация от KVM). Связующим звеном между сервером и виртуалками является виртуальный мост с IP 10.0.0.1. На каждой виртуальной машине установлен Proftpd 1.3.3f. Задача: необходимо предоставить доступ к FTP обеих виртуалок.Для этого на сервере (хосте) сделано следующее:
iptables -t nat -I PREROUTING -p tcp -d 192.168.2.10 --dport 21 -j DNAT --to-destination 10.0.0.50:21
iptables -t nat -I PREROUTING -p tcp -d 192.168.2.10 --dport 221 -j DNAT --to-destination 10.0.0.60:21
iptables -t nat -I POSTROUTING -p tcp -s 10.0.0.50 --sport 21 -j SNAT --to-source 192.168.2.10:21
iptables -t nat -I POSTROUTING -p tcp -s 10.0.0.60 --sport 21 -j SNAT --to-source 192.168.2.10:221modprobe ip_conntrack_ftp=21,221
modprobe ip_nat_ftp
политика iptables хоста по умолчанию везде ACCEPT
Проблема возникает при входе на 221 порт (то есть на виртуалку 10.0.0.60).
Соединение проходит успешно, логинится, но потом обламывается. Вот лог из Total Commander:
Connect to: (24.10.2011 9:39:37)
hostname=site.ru:221
username=
startdir=
site.ru=мой_внешний_(белый)_IP
220 ProFTPD 1.3.3f Server [10.0.0.60]
USER huntex
331 Password required for huntex
PASS *****
230 User huntex logged in
SYST
215 UNIX Type: L8
FEAT
211-Features:
MDTM
MFMT
TVFS
MFF modify;UNIX.group;UNIX.mode;
MLST modify*;perm*;size*;type*;unique*;UNIX.group*;UNIX.mode*;UNIX.owner*;
REST STREAM
SIZE
211 End
Connect ok!
PWD
257 "/" is the current directory
Чтение каталога...
TYPE A
200 Type set to A
PASV
227 Entering Passive Mode (10,0,0,60,223,226).
PORT мой_внешний_(белый)_IP,93,8
200 PORT command successful
LIST
PORT failed, try PASV mode!
PASV
(---НЕ РАБОТАЕТ---)
+ еще заметил такую вещь: Так как у меня еще стоит шлюз, который делает порт-форвардинг на 192.168.2.10, получил в логах следующее: При подключении на 21 порт:
PASV
227 Entering Passive Mode (мой_внешний_IP,180,146).
LIST
(---ВСЕ ОК---)
При подключении на 221 порт:
PASV
227 Entering Passive Mode (192,168,2,10,201,6).
PORT мой_внешний_IP,98,228
200 PORT command successful
LIST
PORT failed, try PASV mode!
PASV
(---НЕ РАБОТАЕТ---)
То есть, в первом случае (21 порт) при входе в пассивный режим я получаю внешний (белый) IP, а во втором случае (221 порт) я получаю 192.168.2.10, причем я уверен в железке (потому что там и настроить то что-то особенно не получится), проблема где-то на сервере.
И если это поможет чем-то:
root@lan:~# lsmod | grep ftp
nf_nat_ftp 2031 0
nf_conntrack_ftp 5537 1 nf_nat_ftp
nf_nat 13388 3 nf_nat_ftp,ipt_MASQUERADE,iptable_nat
nf_conntrack 46535 6 nf_nat_ftp,nf_conntrack_ftp,ipt_MASQUERADE,iptab le_nat,nf_nat,nf_conntrack_ipv4root@lan:~# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 * 255.255.255.0 U 0 0 0 virbr1
192.168.2.0 * 255.255.255.0 U 1 0 0 eth0
default 192.168.2.111 0.0.0.0 UG 0 0 0 eth0