清除並重置 Debian 中的 iptables

清除並重置 Debian 中的 iptables

要清除 iptables 中的所有規則,我使用這個

#!/bin/bash
echo "clearing iptables ... "
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT

只要 iptables 中不再有任何條目,就可以使用此方法進行檢查

sudo iptables -L

或者

sudo iptables -S

但是,已轉送至不同目標的流量仍會路由至該目標。

看來清除的 iptables 在清除後仍然有效!

到目前為止,我擺脫這些規則的唯一方法是重新啟動系統,這不是很優雅。

德班iptables 似乎不會作為服務運行,因此啟動或停止該服務不起作用。

如何完全清除或重設 iptables,從而停用先前定義的規則?

答案1

  1. iptables 規則的刷新不會影響已建立的連線(這些連線已使用 重定向)DNAT。這是相關的,因為 UDP 封包的 conntrack 條目包含重定向訊息,該訊息與 iptables 規則一起使用。

  2. 使用指令檢查現有的 conntrack 條目conntrack -L並監視 conntrack 事件conntrack -E

  3. 使用該conntrack -F指令清除 conntrack 條目。新的 UDP 封包將不再被重定向。

  4. 若要將 iptables 規則作為服務進行管理,請使用netfilter-persistentiptables-persistent套件。

  5. 最好使用iptables-save/iptables-restore命令而不是手動運行iptables.它更加安全和原子。

  6. 若要管理遠端主機上的 iptables 規則,請使用該iptables-apply命令,該命令允許在尚未確認的情況下回滾規則集。

答案2

sudo ufw status verbose; sudo iptables -L; 

也許有 ufw 正在運行?嘗試停下來。

您能否詳細介紹一下您的系統、網路以及哪些流量仍在路由?

1-2 個例子就可以了,包括。初始防火牆規則。

編輯:

透過我的一些腳本進行了檢查......也刷新了鏈條。

sudo iptables -F INPUT
sudo iptables -F FORWARD 
sudo iptables -F OUTPUT

答案3

您用於清除 iptables 規則的腳本足以刷新所有規則並將預設策略設為接受。這有效地禁用了防火牆,因為沒有規則並且一切都是允許的。

從您的評論中我們知道您正在發送 UDP 資料包。您可能會感覺舊規則在一段時間內仍然有效,尤其是當有連續的 UDP 封包流通過您的防火牆電腦時。這主要是因為 UDP 沒有辦法關閉連接,因此防火牆不知道當前活動流何時結束。唯一的方法是在看不到更多資料包時使用空閒逾時來刷新活動「連線」。

您有兩個選擇:

  1. 等待一段時間後再重試。這需要停止任何當前活動的「連接」。您可以在 中找到 UDP 逾時/proc/sys/net/netfilter/nf_conntrack_udp_timeout
  2. 使用conntrack工具手動刪除現有的「連線」。

請注意,即使 UDP 是無連線協議,Linux 防火牆也會追蹤 TCP/UDP 的活動套接字。

相關內容