FORWARDルールでINVALIDとマークされたパケット

FORWARDルールでINVALIDとマークされたパケット

1 つの物理インターフェースに 3 つの IP エイリアスを持つファイアウォールがあります。パケットは、これらの 3 つのインターフェース (ICMP、HTTP、またはその他のインターフェース) 間でドロップされます。これらのパケットが FORWARD ルールで INVALID としてマークされ、次のルールによりドロップされていることが原因であることが突き止められました。

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

IP エイリアスの代わりにブリッジ モードで macvlan を使用し、物理インターフェイスを promisc モードに維持します。

例えば

  1. eno1 は使用するインターフェースです。
  2. 次に、macvlan1@eno1、macvlan2@eno1、macvlan3@eno1 を作成します。
  3. eno1 を promisc モードのままにします。

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

関連情報