特定IP iptables的新链

我需要创build一个新的链处理特定的IP,比如说192.168.0.101。

在这个新链中,这个IP将可以访问除FTP之外的所有服务。

我的解决scheme是:

iptables -N IP1 iptables -A IP1 -p tcp --dport 20 -j DROP iptables -A IP1 -p tcp --dport 21 -j DROP iptables -A IP1 -j ACCEPT iptables -A INPUT -s 192.168.0.101 -j IP1 

解决scheme是否正确? 传入数据包是否需要使用–sport 20,21两个规则?

你的命令对我来说很合适。

--sport将源端口(客户端连接的端口),通常是随机的。 --dport是正确的。 回想一下,连接是一个4元组的源地址,源端口,目的地址和目的地端口 – iptables作用在它看到的数据包中的4元组。

关于FTP的一个有趣的事情是,在被动模式下,客户端和服务器就新的端口号达成一致。 另外,我相信使用端口20是为了连接到文件的目的地,而不pipe控制连接上的服务器是哪一个,但是在这种情况下不能伤害它。

您build议的规则应该可行,但可能会出现链中的DROP不正确的情况。

例如,如果您希望以后的规则INPUT链允许ftp访问networking上所有主机的某个特定目标。

在这种情况下, RETURN可能是更好的select。 假设你的INPUT链的策略是DROP这可能也会有相同的结果。

 iptables -A IP1 -p tcp --dport 20 -j RETURN iptables -A IP1 -p tcp --dport 21 -j RETURN iptables -A IP1 -j ACCEPT