
我的防火牆在 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 模式。
例如
- eno1 是您要使用的介面。
- 然後創建 macvlan1@eno1、macvlan2@eno1 和 macvlan3@eno1。
- 保持 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
。