在 iptables 中进行 NAT 后丢弃数据包

在 iptables 中进行 NAT 后丢弃数据包

我正在尝试使用 iptables 规则对 NAT 后面某个客户端的流量进行速率限制(使用 hashlimit 结合 DROP 目标),但由于我对这一领域的了解不够深入,我不确定应该在哪个表和哪个链中添加这条规则,或者是否可能。

这一确切情况之前问过但答案并没有给出任何具体的解决方案。

答案1

您可以在表格FORWARD的链中执行此操作filter。但您确实应该尽早应用过滤器。

为什么数据包首先会被转发到该客户端?从问题的表述方式来看,我假设客户端使用的是 RFC 1918/4193/6598 地址,因此数据包不能直接针对该客户端。

要么必须有一条nat规则将数据包定向到该客户端,要么连接表中必须有一个条目。

一条nat将数据包转发到特定客户端的规则,随后又一条filter拒绝该数据包的规则,这毫无意义。如果是这种情况,您可以删除这两条规则,以更不容易出错的方式实现相同的结果。

另一方面,如果数据包是由于连接表中的条目而转发的,那么该条目将由较早的数据包创建。但您应该拒绝较早的数据包,这样连接表条目就永远不会被创建。换句话说,拒绝来自该特定客户端的传出数据包。这也可以在链表中FORWARD完成filter

相关内容