データグラムは、ローカルネットワークの宛先ホストに直接送信されるのではなく、ゲートウェイに送信されます。

データグラムは、ローカルネットワークの宛先ホストに直接送信されるのではなく、ゲートウェイに送信されます。

これは範囲外なのでネットワークエンジニアリング、これはLinuxネットワークスタックに関連しているので、ここでもう一度質問します。

次の設定/状況があります。

            ---------------------
            |  Gateway          |
            | 10.1.0.1          |
            | aa:bb:cc:00:00:01 |
            ---------------------
                        |
---------------------   |  
|  Host 1           |---|
| 10.1.0.91         |   |
| aa:bb:cc:00:00:91 |   |
---------------------   |
                        |
---------------------   |
|  Host 2           |----
| 10.1.0.92         |    
| aa:bb:cc:00:00:92 |
---------------------

サブネットマスクはです255.255.240.0。 Host1とHost2はLinux / Ubuntuノードです。

これで、Host1からHost2にデータグラムを送信すると、すぐにそこに行くことが予想されます。 Host2のMACアドレスを取得するために10.1.0.92のARP要求を行い、データグラムを入力して有線で送信します。

興味深いことに、私は他の行動を観察しました。データグラムはゲートウェイのMACアドレスで埋められましたが、これは私が予想したものとは異なりました。

以下はホスト 1 のルーティングテーブルです。

Host1 > ip route -n
default via 10.1.0.1 dev enp130s0 proto dhcp src 10.1.0.91 metric 100 
1.1.1.1 via 10.1.0.1 dev enp130s0 proto dhcp src 10.1.0.91 metric 100 
9.9.9.9 via 10.1.0.1 dev enp130s0 proto dhcp src 10.1.0.91 metric 100 
10.1.0.0/20 dev enp130s0 proto kernel scope link src 10.1.0.91 metric 100 
10.1.0.1 dev enp130s0 proto dhcp scope link src 10.1.0.91 metric 100 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown  

これは Host1 の tcpdump 出力で、データグラムがゲートウェイに送信されることがわかります。

Host1 > tcpdump -en -i enp130s0 udp and port 12345
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on enp130s0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
07:22:10.249224 aa:bb:cc:00:00:91 > aa:bb:cc:00:00:01, ethertype IPv4 (0x0800), length 60: 10.1.0.91.42518 > 10.1.0.92.12345: 18533 updateMA [b2&3=0x6c6c] [8277a] [28460q] [17488n] [8275au] [|domain]

ホスト1からホスト2へのArpingもうまく機能します。

Host1 > arping 10.1.0.92
ARPING 10.1.0.92
60 bytes from aa:bb:cc:00:00:92 (10.1.0.92): index=0 time=104.200 usec
60 bytes from aa:bb:cc:00:00:92 (10.1.0.92): index=1 time=133.023 usec
60 bytes from aa:bb:cc:00:00:92 (10.1.0.92): index=2 time=108.228 usec

私は何を見逃しているのか、またはLinuxネットワークスタックのどのコンポーネントがホストに直接送信されるのではなく、ゲートウェイに何が送信されるのかを判断するのだろうか。

どんなアドバイスや助けでもくれてありがとう。

ベストアンサー1

おすすめ記事