使用 iptables 是否可以在單一規則中否定多個 IP 範圍?

使用 iptables 是否可以在單一規則中否定多個 IP 範圍?

我想記錄所有外部連接,而不是我們的 IP 區塊,連接到連接埠。對於單一範圍,規則如下所示:

-A INPUT ! -s 10.20.0.0/16 -p tcp -m tcp --dport 8443 -m state --state NEW  -j LOG --log-level 1 --log-prefix "New 8443 Connection"

8443從邏輯上講,如果連接來自10.20.0.0/16或,則不記錄到連接埠的連接10.30.0.0/16。我是否用錯誤的 iptables 邏輯來解決這個問題?這對於 iptables 來說是可能的嗎?

請注意,這些只是範例 IP 範圍,而不是我想停止為其寫入日誌條目的 IP 範圍。

答案1

您可以使用 ipset:

-A INPUT -p tcp -m tcp --dport 8443 -m set ! --match-set OUR_IP4 src -j LOG

請注意,必須使用單獨的工具維護 ipset(包括啟動時建立/恢復)。

您可以使用子鏈:

-A INPUT -p tcp -m tcp --dport 8443 -j FOOSERVICE

-N FOOSERVICE
-A FOOSERVICE -s 10.20.0.0/16 -j RETURN
-A FOOSERVICE -s 10.30.0.0/16 -j RETURN
-A FOOSERVICE -j LOG --log-prefix "New connection to foo: "
-A FOOSERVICE -j RETURN
   # optional; subchains always return at the end

相關內容