Linux "Mars Source"ログを読む方法は?

Linux "Mars Source"ログを読む方法は?

ポリシーベースのルーティング(アップデート、SSHなどのホスト関連トラフィック用の192.168.1.0/24管理ネットワーク、VMルーティング用の192.168.2.0/24 DMZネットワーク)を使用してKVM仮想化ホストを設定しています。

構成はこんな感じです(^^^^)上記のようにツリー構造を表す)

#external connectivity
eth0 -> vlan110 -> brhost (192.168.1.9)
^^^  -> vlan120 -> brguest (192.168.2.4)

#internal connectivity
brguestA (10.0.1.1) -> tapA0
^^^                 -> tapA1
^^^                 -> tapA2
brguestB (10.0.2.1) -> tapB0
^^^                 -> tapB1

# ... and so on for each VM group subnet

機械Anは1つの「スイッチ」にあり、Bnは2番目の「スイッチ」にある式です。ホストはルータのように動作し、iptablesがインストールされています。ソース IP は、各ブリッジの iptables レベルで検証されます。

通常、すべてが「正常に」動作しますが、いくつかの特別な操作を実行するとまだ正常に実行されますが、ログにはこれが実際の通常の動作よりも偶然の一致に近いことがわかります。たとえば、

  • iptablesレベル(tcp-reset)でタスクがブロックされている仮想マシン(管理ネットワークの他のホスト)から192.168.1.3に接続すると、次のものが表示されます。

    (iptables reject log) IN=brguestA OUT=brguest SRC=10.0.1.2 DST=192.168.1.3 ...
    IPv4: martian source 10.0.1.2 from 192.168.1.3 on dev brhost
    

ホスト/ゲストネットワーク分離ロジックを考慮すると、OUTインターフェイスは実際に実行する必要がある操作に応じて正確であり、これらのパケットがホストによって転送されても、とにかくファイアウォールから破棄されます。ただし、ホスト iptables は tcp-reset を正しく拒否しないため、これらの接続は VM で中断され、リセットされません。

  • VMから192.168.1.9に接続すると

    IPv4: martian source 192.168.1.9 from 10.0.1.2 on dev brguestA
    

他にはありません。このログで10.0.1.xと192.168.1.xの場所を変更すると、本当に混乱しています。その意味(src IPとdst IP)は実際には理解していません。ホストが何をしようとしているのか、なぜ失敗するのかは本当にわかりません。これは私のip rule結果ですip route

ip rule
0: from all lookup local
32763: from 10.0.0.0/16 lookup guest
32764: from 192.168.2.0/24 lookup guest
32765: from all iif lo lookup host
32766: from all lookup main
32767: from all lookup default

ip route show table host
default via 192.168.1.1 dev brhost proto static
192.168.1.0/24 dev brhost proto static

ip route show table guest
default via 192.168.2.1 dev brguest proto static
10.0.0.0/24 dev brguestA proto static
10.0.1.0/24 dev brguestB proto static
# ... so on for other networks

ip route show table main
192.168.1.0/24 dev brhost proto static
10.0.0.0/24 dev brguestA proto static
10.0.1.0/24 dev brguestB proto static
# ...

systemd-networkdネットワーク管理に使用しています。私アイデアこれは、ホストがルールに従ってキャッチするために常にbrhostデバイスに設定されているパケットタイプで応答しようとするためです。OUTPUTしかし、接続が正しく拒否され、常に出力ソースとして選択されるわけではないので、これは真ではないようです。iiflofrom iif lookup host192.168.2.4brhost

関連情報