我需要创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