Linux

刪除 iptables 規則以檢查它是否存在的缺點是什麼?

  • November 4, 2018

我想使用添加規則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 無法訪問的情況下,這似乎是無害的,但考慮到您正受到導致某些應用程序或設備無響應的流量的衝擊——根據我的經驗,有時即使是瞬間刪除阻止它的防火牆規則也可能需要很長時間——持久的後果。

引用自:https://serverfault.com/questions/933767