好的,所以我使用简单的 linux ftp 客户端从 ftp 服务器下载/上传文件。我有一个 iptables 防火墙,它阻止了大部分端口,我必须关闭防火墙才能使其工作。虽然端口 21 是开放的,但我想这解释了为什么下载有效,而不是上传。以下命令与防火墙完美配合:
wget ftp://user:[email protected]
当我实际连接到服务器并尝试将文件“放置”/上传到服务器时,我只是遇到了问题。这是当时使用的端口的示例 netstat 输出,但它总是不同的。
netstat -a | grep ServerIP
tcp 0 197520 myIP.:59622 ServerIP:ftp-data ESTABLISHED
tcp 0 0 myIP.:40341 ServerIP:ftp ESTABLISHED
myIP 范围内的两个端口都被阻止,我无法猜测我必须打开哪些端口。谷歌搜索也失败了。其次,如果我在 iptables 上尝试这样的事情,它会给我一个错误:
-A INPUT -p tcp --match multiport --dport 40000:40500 -j ACCEPT
iptables-restore v1.4.8: too many ports specified
其次,当我在配置文件中阻止端口之前有以下行时,为什么我需要打开端口:
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
一个可能的原因是您使用了活动的 FTP。
FTP 有主动模式和被动模式。
积极的:
被动的:
-- Active FTP vs. Passive FTP,一个明确的解释
这意味着您有两个选择:
我会选择选项1
要完成Christopher Perrin 的回答中的选项 2 ,您可以使用
recent
匹配扩展。它将源 IP 地址添加到您可以在后续规则中检查的列表中。对于这些规则,我假设eth0
是您的 WAN 接口。我没有对此进行测试,但我认为它应该可以工作。