![允许通过 iptables 进行 ftp 输出](https://linux22.com/image/63632/%E5%85%81%E8%AE%B8%E9%80%9A%E8%BF%87%20iptables%20%E8%BF%9B%E8%A1%8C%20ftp%20%E8%BE%93%E5%87%BA.png)
我一直很难通过 iptables 允许 ftp。现在我的 ftp 看起来像这样。
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp ctstate NEW,RELATED,ESTABLISHED multiport dports http,https,ftp,ftp-data
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
我没有发现它有什么问题,但是当我尝试连接它时它不起作用。 (我的 ftp 服务器已启动,所以这不是问题。)
答案1
我并不完全清楚这些iptables
规则是在您的客户端还是您的服务器上。你的声明“它不起作用当我尝试连接到它时”完全没有帮助。请更新您的问题以澄清这些问题。
如果这些规则在您的服务器上您无法从其他地方连接到它,因为您尚未定义任何允许这样做的规则。
如果这是您的客户端那么它失败的原因是因为您尚未允许入站相关数据连接。记住它是从服务器上的 tcp/21到客户端上的任意高端口。您的iptables
INPUT 规则需要相关的入站会话到TCP/21。
这些规则来自 devops-blog.net应该适用于即将离开的客户:
-A INPUT -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
-A INPUT -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT