Linuxはネットワークインタフェースに割り当てられたプレフィックスの長さを正確にどのように使用しますか?

Linuxはネットワークインタフェースに割り当てられたプレフィックスの長さを正確にどのように使用しますか?

192.168.0.1/24私はeth02つの方法でIPアドレスを割り当てます。

192.168.0.1/24A. いつものように追加してください。

# ip addr add 192.168.0.1/24 dev eth0
# ping -c 1 192.168.0.2
PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=0.051 ms

--- 192.168.0.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.051/0.051/0.051/0.000 ms
#

B:192.168.0.1/32/ 24パスの追加と追加

# ip addr add 192.168.0.1/32 dev eth0
                                        # 192.168.0.2 should not be reachable.
# ping -c 1 192.168.0.2
ping: connect: Network is unreachable
                                        # But after adding a route, it is.
# ip route add 192.168.0.0/24 dev eth0
# ping -c 1 192.168.0.2
PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=0.053 ms

--- 192.168.0.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.053/0.053/0.053/0.000 ms
#

これは、プレフィックス付きのIPアドレスを追加することが/ 32プレフィックスを持つIPアドレスを追加した後にパスを追加することを短縮することを意味しますか?つまり、プレフィックスの長さは意味がなく、実際の操作はルーティング項目によって実行されます。

それとも、これら2つの方法の間に機能的な違いはありますか?


別の状況は次のとおりです。 2つのノードは直接接続(間にルータなし)を介して互いに接続できますが、サブネットを共有しません。

ノード1:

# ip addr add 192.168.0.1/24 dev eth0
# ip route add 192.168.1.0/24 dev eth0
                                        # Finish the config on Node 2
# nc 192.168.1.1 8080 <<< "Message from 192.168.0.1"
Response from 192.168.1.1

ノード2:

# ip addr add 192.168.1.1/24 dev eth0
# ip route add 192.168.0.0/24 dev eth0
                                        # Finish the config on Node 1
# nc -l 0.0.0.0 8080 <<< "Response from 192.168.1.1"
Message from 192.168.0.1

答え1

つまり、プレフィックスの長さは意味がなく、実際の操作はルーティング項目によって実行されます。

サブネットマスクはサブネットを定義するため、ブロードキャストアドレスが何であるか、コンピュータが応答するブロードキャストIPパケットとARP要求が何であるかを定義します。したがって、/ 32アドレスを取得することとルーティングテーブルを設定することと/ 24アドレスを取得することには違いがあります。

これはLinuxに限定されず、IPv4の仕組みです。

関連情報