IPアドレスの追加にCIDRを指定するのはなぜですか?

IPアドレスの追加にCIDRを指定するのはなぜですか?

ネットワークインターフェイスに対してアドレス割り当てを実行するときは、ip addr addインターフェイスのサブネットを指定する必要があります(または指定できます)。したがって、ifconfigを実行するとサブネットを見ることができます。

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
        inet6 fe80::f36f:407:e015:2633  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:73:e9:14  txqueuelen 1000  (Ethernet)
        RX packets 105172  bytes 120417336 (120.4 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 27040  bytes 4403397 (4.4 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

これがなぜ必要なのか理解できませんか?ルーティングテーブルがルーティング目的なので、ルーティング目的ではないと思います。それでは、その用途は何ですか?

編集:より明確に言えば:ネットマスクは、ネットワークに直接接続されたアドレス範囲、つまりルーティングなしで到達可能なアドレス範囲を知るために使用されることを理解しています。ただし、これはルーティングテーブルに設定されています。だから私の質問は:インターフェイス設定とルーティングテーブルの間の関係は何ですか?

直接接続していないようです。以下を参照してください。

root@yoav-VirtualBox:/home/yoav# ip addr add 192.168.1.2/24 dev first
root@yoav-VirtualBox:/home/yoav# ip addr
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: second@first: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether a2:a9:4f:c3:c5:be brd ff:ff:ff:ff:ff:ff
3: first@second: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether f2:38:32:ea:b4:8f brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.2/24 scope global first
       valid_lft forever preferred_lft forever
root@yoav-VirtualBox:/home/yoav# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
root@yoav-VirtualBox:/home/yoav# 

ベストアンサー1

Linuxでは、インターフェイスにアドレスを割り当てると絶対的なこのアドレスに基づく LAN ルーティングです。パスはアドレスに割り当てられたCIDRマスクを使用します(アドレス自体をヒントソースアドレスとして使用します)。

# ip link set eth0 down
# ip address flush dev eth0
# ip address add 192.0.2.3/24 dev eth0
# ip route

(何もなし:ルーティングのためにはインターフェイスがUP状態でなければなりません)

# ip link set eth0 up
# ip route
192.0.2.0/24 dev eth0 proto kernel scope link src 192.0.2.3 

アドレスを削除すると、参照されたアドレスまたはそのアドレスで定義されたネットワークが不足しているため、存在できないルートは常に削除されます。

# ip address flush dev eth0
# ip route

(何もありません)

一部の特別なネットワーク設定(通常はアドレス競合を使用する他のインターフェイスを含む)の場合、フラグを使用するとこの暗黙的なパスの追加を回避できます。noprefixroute。 NetworkManagerなどのツールは、ルーティングの設定方法をより効果的に制御できるようにこのフラグを設定することがよくあります。

# ip address add 192.0.2.3/24 dev eth0 noprefixroute
# ip route

(何もありません)

この暗黙的な LAN パスは、すべてのオペレーティング システムに存在するわけではなく、一部のオペレーティング システムでは常に明示的に設定する必要があります。

おすすめ記事