我最近发现我的VPS正在运行一个不完全是CentOS的Linux发行版。它是OpenVZ/Virtuozzo容器中的CentOS。有关更多信息,请参见"当不是CentOS的时候.“(我希望允许从iptables防火墙后面获取FTP )(当所有规则设置为接受时,FTP工作正常)。有人能帮忙吗?
发布于 2012-04-10 02:08:22
FTP有两种类型--主动和被动。使用active FTP,服务器需要打开端口20 (数据)和21 (命令)--在服务器上设置更容易,但客户端更难设置(因为服务器启动到客户端的连接)。测试活动FTP有时是一个很好的起点,可以确定您的服务器防火墙是否是问题的根源。
被动FTP通常更普遍地兼容,因为连接是由客户端建立的。但是,它需要端口21 (命令端口)和另一个高编号端口才能打开(用于数据传输)。大多数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
您还需要使用pasv_enable=YES
启用被动FTP。
默认情况下,vsFTPd从/etc/vsftpd.conf
读取配置(因此您应该将指令放在那里--检查它们是否已经存在)。但是,可以通过向命令行上的vsFTPd传递不同的文件路径来覆盖默认配置位置(您的init脚本可能会这样做)。
一旦指定了必要的端口,就可以在一个ipTables命令中添加它们:
iptables -A INPUT -p tcp -m tcp --dport xxxxx:xxxxx -j ACCEPT
(注意: FTP完全是TCP -您不需要启用UDP)
https://serverfault.com/questions/377974
复制相似问题