我安装在CentOS6一个的ProFTPD服务器。 如果我做FTP本地主机,我可以正确连接,但如果我从外面试试,我得到消息“没有到主机的路由”。 但主办因为我通过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服务。 我能做些什么来解决这个问题?
为了让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
lsmod | grep nf_conntrack_ftp
。 - 与加载
modprobe nf_conntrack_ftp
。
另外,您也可以更换RELATED
与国家NEW
状态,这是不太安全的,但肯定会完成这项工作。
此链接提供了上述规则的理由的简明摘要。