如何在“centos like”vps上做kmod-less FTP?

最近我发现我的VPS正在运行一个不是CentOS的Linux发行版。 它是OpenVZ / Virtuozzo容器中的CentOS。 有关更多信息,请参阅“ 当CentOS不是CentOS”。我想允许从我的iptables防火墙后面的FTP(当所有规则设置为ACCEPT时,FTP工作正常)。 有人能帮忙吗?

FTP有两种 – 主动和被动。 在主动FTP的情况下,服务器需要打开端口20(数据)和21(命令) – 在服务器上设置更容易,但更难以为客户端设置(因为服务器启动连接返回到客户端)。 testing活动FTP有时是一个很好的起点,可以确定服务器的防火墙是否是造成问题的原因。

由于连接是由客户端build立的,所以被动FTP通常更加通用。 但是,它需要端口21(命令端口)和另一个高编号端口打开(用于数据传输)。 大多数FTP服务器将允许您指定将用于被动FTP的端口范围。

请参阅本网站以获取有关主动和被动FTP之间差异的完整概述。

Kmods通常添加function – 通过validation接受所有连接可以解决您的问题,您已经在很大程度上表明您不需要kmod在这种情况下,但只有一些必要的端口被阻止。

在你的FTPconfiguration中,设置适当的指令来定义被使用的被动端口范围,然后在iptables中打开这些相同的端口,你应该很好。

PureFTPd:

有一个指令PassivePortRange

 PassivePortRange min_port max_port 

vsFTPd:有两个指令pasv_max_portpasv_min_port

 pasv_max_port=xxxxx pasv_min_port=xxxxx 

您还需要使用pasv_enable=YES启用被动FTP。

默认情况下,vsFTPd从/etc/vsftpd.conf读取configuration/etc/vsftpd.conf (所以你应该把指令放在那里 – 检查它们是否已经存在)。 但是,可以通过在命令行上传递不同的文件path到vsFTPd(您的一个init脚本可能会这样做)来覆盖默认的configuration位置。

一旦你指定了必要的端口,你可以在一个ipTables命令中添加它们:

 iptables -A INPUT -p tcp -m tcp --dport xxxxx:xxxxx -j ACCEPT 

(注意:FTP是专门的TCP – 你不需要启用UDP)