为什么端口20在我将它添加到iptables中接受时仍然被阻塞

我正试图打开我的服务器上的FTP端口。 我已经在服务器上安装了vsftpd。 但是,我无法到达端口20和21上的服务器

不知何故,现在允许我访问端口21。

我运行Ubuntu 9.10(Karmic)我也跑了:modprobe ip_conntrack modprobe ip_conntrack_ftp

以下是我的服务器上的iptables -L

Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ACCEPT tcp -- anywhere anywhere tcp dpt:www ACCEPT tcp -- anywhere poseidon.valltek.com tcp dpts:ftp-data:ftp Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- poseidon.valltek.com anywhere tcp dpts:ftp-data:ftp 

我一直在使用www.ping.eu/port-chk/来检查端口。 只是因为这是我的本地机器的问题。

谢谢。

您可能需要将ip_nat_ftp添加到您的列表中,并确保使用命令lsmod

这是一个家庭服务器,从一些互联网提供商? 如果是这样,你可能会遇到一个共同的问题,通常互联网提供商阻止从居民用户从1到1024的端口,所以他们不创build家庭服务器(这种接近在一些国家afaik使用)。

如果不是这样的话,确保你已经设置了ip_forward。

 sudo echo "1" > /proc/sys/net/ipv4/ip_foward 

防火墙(iptables)

 # Allow FTP connections @ port 21 iptables -A INPUT -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT # Allow Active FTP Connections iptables -A INPUT -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT # Allow Passive FTP Connections iptables -A INPUT -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED -j ACCEPT 

你说Somehow it is allowing me to access port 21 at the moment. ,你可以下载或上传任何东西? 如果是这样的话,应该怎么看下面这个:

主动FTP

在主动模式FTP中,客户端从一个随机非特权端口(N> 1023)连接到FTP服务器的命令端口端口21.然后,客户端开始侦听端口N + 1,并将FTP命令PORT N + 1发送到FTP服务器。 然后,服务器将从其本地数据端口(端口20)连接回客户端指定的数据端口。

从服务器端防火墙的angular度来看,要支持活动模式FTP,需要打开以下通信通道:

 * FTP server's port 21 from anywhere (Client initiates connection) * FTP server's port 21 to ports > 1023 (Server responds to client's control port) * FTP server's port 20 to ports > 1023 (Server initiates data connection to client's data port) * FTP server's port 20 from ports > 1023 (Client sends ACKs to server's data port) 

被动FTP

为了解决服务器发起连接到客户端的问题,开发了一种不同的FTP连接方法。 这被称为被动模式或PASV,在客户端使用命令告诉服务器处于被动模式之后。

在被动模式FTP中,客户端启动到服务器的两个连接,解决防火墙过滤从服务器到客户端的传入数据端口连接的问题。 打开FTP连接时,客户端在本地打开两个随机非特权端口(N> 1023和N + 1)。 第一个端口与端口21上的服务器联系,但不是发出PORT命令,而是允许服务器连接回其数据端口,客户端将发出PASV命令。 这样做的结果是,服务器然后打开一个随机的非特权端口(P> 1023),并将PORT P命令发送回客户端。 客户端然后启动从端口N + 1到服务器端口P的连接以传输数据。

从服务器端防火墙的angular度来看,要支持被动模式FTP,需要打开以下通信通道:

 * FTP server's port 21 from anywhere (Client initiates connection) * FTP server's port 21 to ports > 1023 (Server responds to client's control port) * FTP server's ports > 1023 from anywhere (Client initiates data connection to random port specified by server) * FTP server's ports > 1023 to remote ports > 1023 (Server sends ACKs (and data) to client's data port)