Linux
刪除 iptables 規則以檢查它是否存在的缺點是什麼?
我想使用添加規則
iptables
,但前提是它不存在。有一個選項
-C
可以讓我們檢查規則規範是否已經存在。此 Q&A中也描述了該選項。從那個問答中,這個特定的答案說明瞭如何使用
-D
(刪除)選項,如果存在,它將刪除規則,如果不存在,它將以程式碼 1 退出。(-C
如果規則不存在,這正是它的作用,所以它不會成為問題)。對我來說,這樣做感覺更方便
ip6tables -D OUTPUT -p icmpv6 --icmpv6-type destination-unreachable -j DROP ip6tables -A OUTPUT -p icmpv6 --icmpv6-type destination-unreachable -j DROP
而不是檢查是否存在,如果存在則刪除它,然後才添加新規則。
但是,評論中有人提到它在防火牆上打開了一個洞,我看不出如何。
底線:為什麼我不應該盲目地刪除和附加規則,而不是在刪除和添加之前檢查?
好吧,這種方法(刪除,然後添加)的問題在於,這兩個操作不會同時發生,它們之間有一段時間,在此期間,您的系統會暴露於您的 DROP 規則一直阻止的不需要的流量。在您使用 ipv6 無法訪問的情況下,這似乎是無害的,但考慮到您正受到導致某些應用程序或設備無響應的流量的衝擊——根據我的經驗,有時即使是瞬間刪除阻止它的防火牆規則也可能需要很長時間——持久的後果。