如何使用 iptables 阻止发往 IP 范围的传出数据包?

如何使用 iptables 阻止发往 IP 范围的传出数据包?

我想阻止发往某个 IP 范围的传出数据包,但我使用的 iptables 命令似乎不起作用。

 sudo iptables -P OUTPUT ACCEPT
 sudo iptables -A OUTPUT -s 157.240.0.0/16 -j REJECT
 sudo iptables -A OUTPUT -s 31.13.0.0/16 -j REJECT
 sudo iptables -A OUTPUT -s 192.229.0.0/16 -j REJECT
 sudo iptables -A OUTPUT -s 104.244.0.0/16 -j REJECT

我需要做的不是

  1. 允许整个范围的所有数据包
  2. 然后阻止整个范围的特定子集?

答案1

-s表示“源”。“传出到 IP 范围的数据包”很可能表示“目的地”。将每个更改-s-d

还请记住,-A将规则附加到链的末尾。规则从头部开始处理。您附加到末尾的规则将最后处理(如果流到达它)。链中先前(并且仍然)存在的规则可能适用并处理您想要阻止的数据包。使用-I而不是-A在链的头部添加规则。

如果您怀疑自己可能添加了一些不需要的规则,则使用 进行调查,iptables -S OUTPUT并使用 删除它们-D。也可以-F使用 刷新并重新开始。

man 8 iptables参阅详情。

相关内容