$ /sbin/route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.122.1 0.0.0.0 UG 0 0 0 ens3
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 ens3
$ /sbin/ifconfig
ens3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.122.202 netmask 255.255.255.0 broadcast 192.168.122.255
inet6 fe80::5054:ff:fe99:5eee prefixlen 64 scopeid 0x20<link>
ether 52:54:00:99:5e:ee txqueuelen 1000 (Ethernet)
RX packets 14906 bytes 18020195 (17.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 7390 bytes 786783 (768.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 35568
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 496 bytes 39840 (38.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 496 bytes 39840 (38.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
パケットがホストに到着し、パケットの宛先がプライベートIPアドレス(192.168.122.2)の場合、
ルーティングテーブルの2番目のエントリによると、パケットは最終宛先であるens3(192.168.122.202)に転送されますか?
もしそうなら、期待されるターゲット192.168.122.2がlocalhostにないので、間違っていませんか?つまり、2番目のエントリが別の宛先IPアドレスにパケットを転送するのはなぜですか?範囲ローカルネットワークインターフェースへ単一IPアドレス?
ありがとうございます。
答え1
このインターフェースが以下を提供することを忘れました。ネットワーク、(IPネットワークの場合)デフォルトのIPアドレスとネットマスク(またはIPv6のプレフィックス長)として定義されます。
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 ens3
192.168.122/24 ネットワークに送信されたパケットがネットワークインターフェイスに送信されることを示します。ens3
その後、パケットは適切なホストに送信されますが、これはこのシステムの問題ではありません。
ネットワークはネットワーク上のすべてのホストに同じアクセスを提供する必要があるため、ens3
ゲートウェイまたはルーターの助けを借りずにパケットを192.168.122/24ネットワーク上のすべてのホストにポイントツーポイント方式で効率的に転送できる必要があります。
0.0.0.0 192.168.122.1 0.0.0.0 UG 0 0 0 ens3
カーネルが何をすべきかわからないパケットをゲートウェイ192.168.122.1に送信する必要があることを示します。ゲートウェイはそれを適切に渡します(可能な場合)。ゲートウェイにアクセスできます。渡す ens3
。
これらのどれも、所与のパケットが実際に宛先に到達することを保証しない。これがネットワーク(およびインターフェイスでさえ)が「ターゲットホストに到達できません」などのエラーを報告する理由です。
(ステッカーは私がL2 / L3の問題を無視したと文句を言うかもしれませんが、ここでは関係がなく、最終的に混乱するだけです。)