针对特定 IP iptables 的新链

针对特定 IP iptables 的新链

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

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

我的解决方案是:

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

解决方案正确吗?传入数据包是否需要两条带有 --sport 20, 21 的规则?

答案1

您建议的规则应该有效,但在某些情况下,链中的 DROP 不是正确的操作。

例如,如果您希望后面的规则INPUT链允许网络上所有主机通过 ftp 访问某个特定目的地。

在这种情况下,aRETURN可能是更好的选择。假设您的 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

答案2

您的命令对我来说看起来是正确的。

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

FTP 的一个有趣之处在于,在被动模式下,客户端和服务器会就新端口号达成一致。另外,我认为使用端口 20 是为了建立连接到文件的目的地无论控制连接上的服务器是哪个,但在这种情况下阻止它不会有什么坏处。

相关内容