パケットをルーティングするとき、Linuxカーネルはどのように正しいsrc IPを選択しますか?

パケットをルーティングするとき、Linuxカーネルはどのように正しいsrc IPを選択しますか?

CalicoをCNIプラグインとして使用するkubernetesクラスタがあります。私のローカルルーティングテーブルから、次のいくつかのルートを取得できます。

root@k8s-master:~# ip r
default via 192.168.100.1 dev ens18 proto dhcp src 192.168.100.215 metric 100
10.222.235.232 dev cali5bda0fdd27a scope link  # route to pod
10.222.235.233 dev cali1209a63af2b scope link
10.222.235.235 dev cali12d4a061371 scope link
10.222.235.241 dev cali9d4dd01dda6 scope link
10.222.235.246 dev calid0a379e0710 scope link
10.222.235.248 dev cali67ee1300377 scope link

私のコンピュータには複数のインターフェイスがあります。パケットをポッドにルーティングするときに、Linuxカーネルが正しいsrc IPを選択する方法を知りたいです。

root@k8s-master:~# ip r get 10.222.235.232
10.222.235.232 dev cali5bda0fdd27a src 192.168.200.2 uid 0
    cache

cali5bda0fdd27aインターフェイスに IP アドレスがありません。これは、ホストネットワークの名前空間にあるvethペアの一方の端です(もう一方の端はコンテナネットワークの名前空間にあります)。

192.168.200.2他のインターフェイスのIPです。なぜLinuxカーネルは選択192.168.200.2して選択しないのですか192.168.100.215

ベストアンサー1

おすすめ記事