Мой FTP-сервер - это CentOS 5.4 с VSFTPD.
Когда я пытаюсь ls
после подключения к моему серверу по FTP я получаю следующее:
ftp> ls
229 Entering Extended Passive Mode (|||12206|)
ftp: Can't connect to `000.000.000.000': Connection refused
500 Illegal PORT command.
425 Use PORT or PASV first.
я могу сделать mkdir
без каких-либо проблем.
Когда я подключаюсь с того же сервера к моему ftp-серверу, у меня нет проблем.
Порт 20 и 21 открыты в моем iptable. Как я могу это исправить?
Спасибо!!
ОБНОВИТЬ :
telnet myftpserver.com 20
Trying 000.000.000.000...
telnet: connect to address 000.000.000.000: Connection refused
telnet: Unable to connect to remote host
и
[root@internal vsftpd]# /sbin/iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
SSH_CHECK tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 state NEW
Chain FORWARD (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain RH-Firewall-1-INPUT (2 references)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:33988
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:20
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:631
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:631
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain SSH_CHECK (1 references)
target prot opt source destination
all -- 0.0.0.0/0 0.0.0.0/0 recent: SET name: SSH side: source
DROP all -- 0.0.0.0/0 0.0.0.0/0 recent: UPDATE seconds: 60 hit_count: 4 name: SSH side: source
Проблема связана с тем, что пассивный FTP использует порты, отличные от 20 и 21. Об этом читайте здесь: http://slacksite.com/other/ftp.html
Обычно я настраиваю диапазон портов в файле vsftpd.conf для пассивного FTP, а затем открываю эти порты на брандмауэре.
Кроме того, я в основном парень freebsd, но я почти уверен, что в linux есть способ динамически открывать порты FTP PASV, но кому-то другому придется вмешаться в это. Я посмотрю и посмотрю, что найду.
В Linux запустите команду:
modprobe ip_conntrack_ftp
должен исправить проблему с подключением при «Входе в расширенный пассивный режим».
РЕДАКТИРОВАТЬ:
Первое обращение в Google: http://www.cyberciti.biz/faq/iptables-passive-ftp-is-not-working/
Лучшее объяснение: http://www.sns.ias.edu/~jns/wp/2006/01/12/iptables-connection-tracking-ftp/