我最近发现我的 VPS 运行的 Linux 发行版并非 CentOS。它是 OpenVZ/Virtuozzo 容器中的 CentOS。有关更多信息,请参阅“当 CentOS 不再是 CentOS 时。“我想允许从我的 iptables 防火墙后面进行 FTP(当所有规则都设置为“接受”时,FTP 工作正常)。有人可以帮忙吗?
答案1
FTP 有两种类型 - 主动和被动。使用主动 FTP,服务器需要打开端口 20(数据)和 21(命令)- 在服务器上设置比较容易,但在客户端设置比较困难(因为服务器会发起与客户端的连接)。测试主动 FTP 有时是一个很好的起点,可以确定服务器的防火墙是否是导致问题的原因。
被动 FTP 通常具有更广泛的兼容性,因为连接是由客户端建立的。但是,它需要端口 21(命令端口)和另一个高编号端口处于打开状态(用于数据传输)。大多数 FTP 服务器允许您指定将用于被动 FTP 的端口范围。
看本网站以便更好地了解主动 FTP 和被动 FTP 之间的区别。
Kmods 通常会添加功能 - 通过验证“接受所有连接”是否可以解决您的问题,您已基本表明在这种情况下您不需要 kmod,只是一些必要的端口被阻止了。
在您的 FTP 配置中,设置适当的指令来定义将使用的被动端口范围,然后在 iptables 中打开这些相同的端口,您就可以开始了。
PureFTPd:
有一条指令PassivePortRange
:
PassivePortRange min_port max_port
vsFTPd:有两个指令pasv_max_port
和pasv_min_port
:
pasv_max_port=xxxxx
pasv_min_port=xxxxx
您还需要使用 启用被动 FTP pasv_enable=YES
。
默认情况下,vsFTPd 从中读取配置/etc/vsftpd.conf
(因此您应该将指令放在那里 - 但请检查它们是否已经存在)。但是,可以通过在命令行上将不同的文件路径传递给 vsFTPd(您的一个 init 脚本可能会这样做)来覆盖默认配置位置。
一旦指定了必要的端口,就可以使用以下命令在单个 ipTables 命令中添加它们:
iptables -A INPUT -p tcp -m tcp --dport xxxxx:xxxxx -j ACCEPT
(注意:FTP 是专用的 TCP - 您无需启用 UDP)