LINUX.ORG.RU

Proftpd + iptables


0

1

Всем привет! Есть сервер с 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:221

modprobe ip_conntrack_ftp

политика iptables по умолчанию везде ACCEPT

Проблема возникает при входе на 192.168.2.10:221 (то есть на виртуалку 10.0.0.60), в активном режиме не заходит (не выполняется команда PASV), и в пассиве тоже :( На первой виртуалке все ОК. Конфиги proftpd одинаковые

ЧЯДН ?



Последнее исправление: HunteX (всего исправлений: 3)

Ответ на: комментарий от HunteX

А вобще с ftp сервером соединение устанавливается (логин пользователя проходит)?

Так, вроде, надо кроме ip_conntrack_ftp грузить ip_nat_ftp и оба с параметром ports:

insmod ip_conntrack_ftp ports=21,221

И, у вас там точно ip_conntrack_ftp, а не nf_conntrack_ftp?

mky ★★★★★
()
Ответ на: комментарий от mky

Соединение проходит успешно, логинится, но потом обламывается. Вот лог из Total Commander:

Connect to: (24.10.2011 9:39:37)
hostname=site.ru:221
username=
startdir=
site.ru=123.123.123.123
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 111,111,111,111,93,8
200 PORT command successful
LIST
PORT failed, try PASV mode!
PASV
[[/code]]

Это с 
modprobe ip_conntrack_ftp=21,221
modprobe ip_nat_ftp
[[/code]]

modprobe ip_nat_ftp=21,221 не получается, так как ругается:

FATAL: Module ip_nat_ftp=21,221 not found.
[[/code]]
HunteX
() автор топика
Ответ на: комментарий от HunteX

причем коннект на 21 порт вполне успешен только в пассиве, НО видимо это из-за здешнего файрвола, потому что в другом месте у меня все ОК, а вот с коннектом на 221 порт проблемы везде ((

HunteX
() автор топика
Ответ на: комментарий от HunteX

+ еще заметил такую вещь: Так как у меня еще стоит шлюз, который делает порт-форвардинг на 192.168.2.10, получил в логах следующее: При подключении на 21 порт:

PASV
227 Entering Passive Mode (мой_внешний_IP,180,146).
LIST
[[/code]]

При подключении на 221 порт:

PASV
227 Entering Passive Mode (192,168,2,10,201,6).
PORT 111,111,111,111,98,228
200 PORT command successful
LIST
PORT failed, try PASV mode!
PASV
[[/code]]

То есть, в первом случае (21 порт) при входе в пассивный режим я получаю внешний (белый) IP, а во втором случае (221 порт) я получаю 192.168.2.10, причем я уверен в железке (потому что там и настроить то что-то особенно не получится), проблема где-то на сервере.
HunteX
() автор топика
Ответ на: комментарий от HunteX

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_ipv4
HunteX
() автор топика
Ответ на: комментарий от HunteX

Сначала нужно выгрузть модули (команда rmmod), так, чтобы lsmod их не показывал. А потом грузить модули с параметром «ports=21,221».

modprobe ip_nat_ftp ports=21,221

А вобще, если у вас на сервере нет белого ip-адреса, то значит умный NAT ftp делает ваш шлюз. Значит именно эта железка заменяет ip-адрес в ответе сервера, она «знает», что 21 порт это ftp-протокол. А что 221 порт у вас тоже ftp она не знает, поэтому, скорее всего ничего не получится.

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.