我想阻止发往某个 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
-s
表示“源”。“传出到 IP 范围的数据包”很可能表示“目的地”。将每个更改-s
为-d
。
还请记住,-A
将规则附加到链的末尾。规则从头部开始处理。您附加到末尾的规则将最后处理(如果流到达它)。链中先前(并且仍然)存在的规则可能适用并处理您想要阻止的数据包。使用-I
而不是-A
在链的头部添加规则。
如果您怀疑自己可能添加了一些不需要的规则,则使用 进行调查,iptables -S OUTPUT
并使用 删除它们-D
。也可以-F
使用 刷新并重新开始。
请man 8 iptables
参阅详情。