sailer_sh
关于vsftpd与iptables的问题
我在vsftpd.conf里的设置:
listen_port=57121
pasv_enable=YES
pasv_max_port=64000
pasv_min_port=63000
在iptables脚本里增加:
iptables -A INPUT -p tcp --dport 57121 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --dport 63000:64000 -j ACCEPT
客户端使用被动模式总是不能连接到FTP服务器。
当我把上面第一句修改以后,客户端可以连上来:
iptables -A INPUT -p tcp --dport 57121 -j ACCEPT
不知道为什么增加了“-m state --state ESTABLISHED”以后客户端就不能连接。
kenduest
首先,你的被動描述有問題,而且不大對。
被動模式是表示 server 被動等待 client 連入,這是說 data channel 時傳輸資料的架構模式。而你配置檔內是說 listen port 57121,所以你要允許的是 NEW 連線,因為 client 主動連線到你主機要進行 command channel 的溝通。你只開 ESTABLISHED 根本連不到,更別說溝通與傳輸資料。
另外 linux 環境用 iptables 設定 firewall 若是要考慮 ftp 使用 passive or active mode 情況要開放的 port 都不需要這樣麻煩,因為實際上有 ip_conntrack_ftp 這個 ftp conntrack helper 可以用,所以只需要這樣:
[code]
modprobe ip_conntrack_ftp
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
[/code]
其中重點主要是 RELATED 項目,於 passive mode 時 linux 主機會自動打開必要的 port 提供存取連入抓資料。
另外可以參考這篇文章 "Linux iptables firewall 設定常見 FAQ 整理" 也許會對您有一些幫助 :)
[url]http://linux.chinaunix.net/bbs/thread-812400-1-1.html[/url]
--