ネットワークインターフェイスに対してアドレス割り当てを実行するときは、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 パスは、すべてのオペレーティング システムに存在するわけではなく、一部のオペレーティング システムでは常に明示的に設定する必要があります。
答え2
サブネットは、ルーティングなしでこのインターフェイスを介して接続できるホストを指定します。あなたの場合は、enp0s3
ゲートウェイ(ルーティングが提供されるもの)を使用せずに10.0.2.0から10.0.2.255までのホストに接続するために使用できます(不可能な定義が進化しているため、ここでは不可能な値を無視します)。図)。
答え3
ルーティングテーブルは、パケットをルーティングする必要があるのか、基本レイヤ2プロトコルを使用して同じ「リンク」/サブネットに直接接続されているホストに転送する必要があるのかを知る必要があります。
注:パケットをルーティングする必要がある場合は、デフォルトのレイヤ2プロトコルを使用してネクストホップ/ゲートウェイに転送されます。したがって、デフォルトでは、ルーティングテーブルは使用するネクストホップIPをレイヤ2に通知します。これは、パケットと同じか(同じサブネット上にある場合)、ルーティングテーブルの同じネクストホップです。したがって、ルーティングテーブルにはこれを確認するためのマスクが必要です。