LinuxのIPv4ブロードキャストルーティング

LinuxのIPv4ブロードキャストルーティング

lo1つのループバックインターフェイスと2つの物理ネットワークインターフェイスeth0、3つのネットワークインターフェイスを持つサーバーがありますeth1

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:1d:09:f0:92:ab brd ff:ff:ff:ff:ff:ff
    inet 93.184.216.34/22 brd 93.184.219.255 scope global eth0
    inet6 fe80::21d:9ff:fef0:92ab/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:1d:09:f0:92:ac brd ff:ff:ff:ff:ff:ff
    inet 10.228.2.2/24 scope global eth1
    inet6 fe80::21d:9ff:fef0:92ac/64 scope link 
       valid_lft forever preferred_lft forever

これで、255.255.255.255または0.0.0.0.0(以前のIPブロードキャストアドレス)へのルートを確認すると、パケットは3つのネットワークインターフェイスすべてで転送されると予想されます。代わりに、255.255.255.255の場合は、eth00.0.0.0の場合は次のようにしてくださいlo

root@server:~# ip route get 255.255.255.255
broadcast 255.255.255.255 dev eth0  src  93.184.216.34
    cache <local,brd> 
root@server:~# ip route get 0.0.0.0
local 127.0.0.1 dev lo  src 127.0.0.1 
    cache <local> 
root@server:~# 

なぜこれが起こるのですか?

答え1

0.0.0.0ブロードキャストアドレスではありません。ソフトウェアはしばしばこれを「ランダム」アドレスとして使用します。これは、見つかった最初のインターフェイスを表示する理由を説明できます。どんな状況でもルーティングできません。

アドレス255.255.255.255はルーティングできません。これを使用するときにインターフェイスを指定します。放送機能を備えた最初のインターフェースを見せているようです。

しかし、どちらの場合も、アドレスがルーティング可能であるという仮定が間違っているので、ルートを見つけようとしたときにまったく情報を取得できなかったことに驚きました。

関連情報