我正在尝试使用 iptables 规则对 NAT 后面某个客户端的流量进行速率限制(使用 hashlimit 结合 DROP 目标),但由于我对这一领域的了解不够深入,我不确定应该在哪个表和哪个链中添加这条规则,或者是否可能。
这一确切情况之前问过但答案并没有给出任何具体的解决方案。
答案1
您可以在表格FORWARD
的链中执行此操作filter
。但您确实应该尽早应用过滤器。
为什么数据包首先会被转发到该客户端?从问题的表述方式来看,我假设客户端使用的是 RFC 1918/4193/6598 地址,因此数据包不能直接针对该客户端。
要么必须有一条nat
规则将数据包定向到该客户端,要么连接表中必须有一个条目。
一条nat
将数据包转发到特定客户端的规则,随后又一条filter
拒绝该数据包的规则,这毫无意义。如果是这种情况,您可以删除这两条规则,以更不容易出错的方式实现相同的结果。
另一方面,如果数据包是由于连接表中的条目而转发的,那么该条目将由较早的数据包创建。但您应该拒绝较早的数据包,这样连接表条目就永远不会被创建。换句话说,拒绝来自该特定客户端的传出数据包。这也可以在链表中FORWARD
完成filter
。