異なるインターフェイスを介して同じネットワークへの2つのパス

異なるインターフェイスを介して同じネットワークへの2つのパス

次のように定義された橋の場合

auto br0
iface br0 inet dhcp
        bridge-ifaces enp0s8
        bridge-ports enp0s8
        up ifconfig enp0s8 up

iface enp0s8 inet manual

オペレーティングシステムはインターフェイスに2つのパスを設定しますup

192.168.1.0/24 dev enp0s8  proto kernel  scope link  src 192.168.1.134
192.168.1.0/24 dev br0  proto kernel  scope link  src 192.168.1.134

しかし、誰かが以下を使用して同じ操作を手動で実行しようとした場合:

ip route add 192.168.1.0/24 dev br0 proto kernel src 192.168.1.134
ip route add 192.168.1.0/24 dev enp0s8 proto kernel src 192.168.1.134

その後、2番目のコマンドが失敗して表示されますRTNETLINK answers: File exists

質問:

カーネルが不正行為をしているのでしょうか、それともコマンドip route addにいくつかのキーがありませんか?

この設定が適切かどうかではなく、「カーネルがこれを行う方法」についてです。

ベストアンサー1

あなたはそれを確認する必要があります公式文書これは(最初の例以降)次のことを意味します。

auto eth0 と iface eth0 inet Manual がファイルにないことがわかります。これは、br0が割り当てられたコンポーネントを呼び出すためです。

ブリッジに接続されているイーサネットアダプタは、単にブリッジのIPアドレスを共有するため、設定する必要はありません。

パスを手動で追加できないのは、initスクリプトでステップを再現しないためです。 IPを設定すると、enp0s8システムはルートを追加できます。これは誤りであり、ルーティングをより複雑にします(特に高度なルーティング、転送、またはNATを実行している場合)。

システムのinitスクリプトを再現するには、関連するすべてのパスを削除し、すでに存在する場合はブリッジを削除します。

brctl addbr br0
ifconfig enp0s8 192.168.1.0/24
ifconfig br0 192.168.1.0/24

これにより、ip route2つのパスが出力されます。enp0s8ブリッジに追加すると動作しなくなります。明らかに、間違った構成のためにわずかに異常な結果が生じる。

おすすめ記事