在 FORWARD 規則中標示為 INVALID 的封包

在 FORWARD 規則中標示為 INVALID 的封包

我的防火牆在 1 個實體介面上有 3 個 IP 別名。封包在這 3 個介面(ICMP、HTTP 或其他介面)之間被丟棄。我們追蹤到這些封包在轉送規則中被標記為無效,並由於此規則而被丟棄:

chain FORWARD {
    policy DROP;

    # connection tracking
    mod state state INVALID LOG log-prefix 'INVALID FORWARD DROP: '; 
    mod state state INVALID DROP;
    mod state state (ESTABLISHED RELATED) ACCEPT;
}

(也就是說,我們看到INVALID FORWARD DROP日誌dmesg

可能是什麼原因造成的?

答案1

在橋接模式下使用 macvlan 而不是 IP 別名,並將實體介面保持在 promisc 模式。

例如

  1. eno1 是您要使用的介面。
  2. 然後創建 macvlan1@eno1、macvlan2@eno1 和 macvlan3@eno1。
  3. 保持 eno1 處於混雜模式。

請參閱以下順序建立 macvlan 介面。

# /sbin/ip link add link eno1 macvlan1 type macvlan mode bridge

# /sbin/ip addr add 192.168.1.1/24 dev macvlan1

# /sbin/ip link set macvlan1 address aa:bb:bb:dd:ee:ff up

請參考以下指令為 eno2 啟用 promisc 模式

# /sbin/ip link set eno1 promisc on

答案2

INVALID狀態表示資料包不與已知連線關聯(且也不啟動新連線)。我能想到的唯一原因是某些東西正在清除連接追蹤表、表溢出或條目超時太快。您可以使用 檢查連線追蹤表的大小sudo conntrack -L | wc -l以及使用 的最大條目數cat /proc/sys/net/netfilter/nf_conntrack_max

相關內容