我在CentOS6上安装了ProFTPD服务器。 如果我使用ftp localhost,我可以正确连接,但如果我从外面尝试,我会收到消息"没有到主机的路由"。但是有一条主机路由,因为我通过SSH连接。
我尝试添加以下iptable规则:
iptables -A INPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 21"
iptables -A OUTPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 21"
iptables -A INPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment "Allow ftp connections on port 20"
iptables -A OUTPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 20"
iptables -A INPUT -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow passive inbound connections"
iptables -A OUTPUT -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment "Allow passive inbound connections"
并重新启动proftpd和iptables服务。 如何排除此问题?
答案 0 :(得分:3)
为了允许FTP,您需要在服务器上使用以下规则:
允许客户端向端口21发起控制连接,如下所示:
iptables -A INPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 21"
iptables -A OUTPUT -p tcp -m tcp --sport 21 -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 21"
对于活动模式,允许服务器从端口20启动数据连接,如下所示:
iptables -A OUTPUT -p tcp -m tcp --sport 20 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 20"
iptables -A INPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 20"
对于被动模式,允许客户端在非特权端口上启动数据连接:
iptables -A INPUT -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -m comment --comment "Allow passive inbound connections"
iptables -A OUTPUT -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow passive inbound connections"
普通conntrack
模块应该正确跟踪何时在活动模式下建立RELATED
数据连接,但是您可能需要加载nf_conntrack_ftp
模块以便在建立此类连接时正确跟踪在被动模式下:
lsmod | grep nf_conntrack_ftp
。modprobe nf_conntrack_ftp
。或者,您可以将RELATED
状态替换为NEW
状态,这不太安全,但肯定会完成工作。
This link提供了上述规则的基本原理的简明摘要。