新的 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) 的連接。

相關內容