私はLinuxブリッジについて実験をしていました、そして私のネットワークトポロジーは以下のようです
ご覧のとおり、LANにはHost1(10.74.68.58)とHost2(10.74.68.47)の2つのホストがあります。 Host1に、ブリッジを作成しました br0 それにIPを割り当てました(192.168.3.101)。それから私は取り付けました eth0 橋へ:
[root@10.74.68.58:~] # bridge link
2: eth0 state UP : <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 2
デフォルトルートを次のように設定します。 br0 そしてそれは大丈夫です ping 10.74.68.47
:
[root@10.74.68.58:~] # ip r
default dev br0 scope link
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.42.1
192.168.3.0/24 dev br0 proto kernel scope link src 192.168.3.101
しかし、物事は説明できなくなった デフォルトルートをに設定したとき eth0 :
[root@10.74.68.58:~] # ip r
default dev eth0 scope link
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.42.1
192.168.3.0/24 dev br0 proto kernel scope link src 192.168.3.101
いつ eth0 これはデフォルトのルートインタフェースで、2つの異なる方法でhost2にpingを送信します。
1、 ping 10.74.68.47
失敗しました。 tcpdumpファイル(インターフェイスbr0でキャプチャ)を確認したところ、br0がARP応答しか受信しないことがわかりました。そのため、インターフェースeth0にはARP情報がないため、host2のmacを取得できません。 これは正しい行動だと思います、私の理解は正しいですか?
2、それから私は試した ping -I br0 10.74.68.47
デフォルトの経路を避けるために-Iオプションを使用したいのですが、失敗しました。 tcpdumpファイル(インターフェイスbr0でキャプチャ)を確認したところ、次のファイルが見つかりました。 icmpエコー要求とエコー応答パケットのペアがすでにあります。 これは私をとても混乱させた。 br0がエコー応答を受け取ったので、なぜhost2に正常にpingできないのですか?
[root@10.74.68.58:~] # ping -I br0 10.74.68.47
2 packets transmitted, 0 received, 100% packet loss, time 1006ms
皆さん、教えてください。