新的 iptables 规则仅影响新生成的进程

新的 iptables 规则仅影响新生成的进程

有没有办法更新 iptables 规则来阻止连接而无需重新启动它?

下面是我想要避免的行为的一个例子:

On shell#1: I start a ping command 8.8.8.8
On shell#2: I block ping command with iptables rules.
On shell#1: The ping command is still working and I get replies from 8.8.8.8, 
            but if I end the ping command and I restart it, now it will not work.

我想知道是否有办法阻止 ping 命令而不需要重新启动它。

答案1

1) 您要求的是最简单的iptables工作方式 - 阻止所有到目的地的流量,无论连接状态如何,这样现有连接就会超时。因此在您的示例中

iptables -I OUTPUT -d 8.8.8.8 -j DROP

将立即阻止到达 8.8.8.8 的 UDP(DNS)、ICMP(ping)和 TCP 数据包。所以这似乎就是你的答案。如果你遇到了你描述的行为,请发布你正在使用的 iptables 命令行。

2)如果您确实想要其他行为,即维持现有连接直到重新启动该进程,您可以:

iptables -I OUTPUT -d 8.8.8.8 -m state --state NEW -j DROP

或者

iptables -I OUTPUT -d 8.8.8.8 -p tcp --syn -j REJECT

3) 在高级情况下,如果您希望尽快关闭已建立的 TCP 连接,而不是阻止它并让其超时,您可能可以-j REJECT --reject-with tcp-reset在输入和输出链中建立某些基础或运行tcpkill几秒钟。这很困难,在几乎所有情况下,您都希望使用解决方案 1) 断开连接。

相关内容