$ /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)인 경우,
라우팅 테이블의 두 번째 항목에 따르면 패킷이 최종 목적지인 ens3(192.168.122.202)으로 전달됩니까?
그렇다면 예상 대상 192.168.122.2가 localhost에 없기 때문에 잘못된 것이 아닌가요? 즉, 두 번째 항목이 다른 대상 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 문제를 무시했다고 불평할 수 있지만 여기서는 관련이 없으며 궁극적으로 혼란스러울 뿐입니다.)