Routing

數據包走哪條路徑?

  • October 12, 2014

我已經在 VirtualBox 中建立了一個僅限主機的網路。

視窗主機:

VirtualBox Host-Only Network
IPv4 Address. . . . . . . . . . . : 192.168.56.1

Wireless LAN Adapter Wireless Network Connection 2
 IPv4 Address. . . . . . . . . . . : 172.19.156.59
 Subnet Mask . . . . . . . . . . . : 255.255.255.0
 Default Gateway . . . . . . . . . : 172.19.156.1

CentOS 虛擬機:

eth0      Link encap:Ethernet  HWaddr 08:00:27:AF:A3:28  
         inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
         inet6 addr: fe80::a00:27ff:feaf:a328/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:381 errors:0 dropped:0 overruns:0 frame:0
         TX packets:423 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000 
         RX bytes:56181 (54.8 KiB)  TX bytes:50846 (49.6 KiB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:C4:A8:B6  
         inet addr:192.168.56.101  Bcast:192.168.56.255  Mask:255.255.255.0
         inet6 addr: fe80::a00:27ff:fec4:a8b6/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:8984 errors:0 dropped:0 overruns:0 frame:0
         TX packets:162 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000 
         RX bytes:1155253 (1.1 MiB)  TX bytes:31231 (30.4 KiB)

eth2      Link encap:Ethernet  HWaddr 08:00:27:DB:B6:AB  
         inet addr:10.0.4.15  Bcast:10.0.4.255  Mask:255.255.255.0
         inet6 addr: fe80::a00:27ff:fedb:b6ab/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:220 errors:0 dropped:0 overruns:0 frame:0
         TX packets:487 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000 
         RX bytes:87762 (85.7 KiB)  TX bytes:37818 (36.9 KiB)

當我在 CentOS VM 中連接到 Internet 時,我想查看數據包通過哪條路徑到達 google.com,我可以 ping Windows 主機中的預設網關,我的主要興趣是查看數據包如何到達那裡。

[root@localhost network-scripts]# traceroute -I 172.19.156.1
traceroute to 172.19.156.1 (172.19.156.1), 30 hops max, 60 byte packets
1  172.19.156.1 (172.19.156.1)  1.182 ms  3.395 ms  0.825 ms
[root@localhost network-scripts]# traceroute -T 172.19.156.1
traceroute to 172.19.156.1 (172.19.156.1), 30 hops max, 60 byte packets
1  172.19.156.1 (172.19.156.1)  14.336 ms  13.957 ms  19.046 ms
[root@localhost network-scripts]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.0.2.2        0.0.0.0         UG    0      0        0 eth0
10.0.2.0        *               255.255.255.0   U     0      0        0 eth0
10.0.4.0        *               255.255.255.0   U     0      0        0 eth2
link-local      *               255.255.0.0     U     1002   0        0 eth0
link-local      *               255.255.0.0     U     1003   0        0 eth1
link-local      *               255.255.0.0     U     1004   0        0 eth2
192.168.56.0    *               255.255.255.0   U     0      0        0 eth1

我已經使用 -I 和 -T 句柄作為預設 traceroute over UDP 返回 *上述輸出是否意味著數據包直接從 10.0.2.2 到 172.19.156.1?

嘗試跟踪路由 -T 172.16.156.59(Windows 主機)時,我也得到多個 *

VirtualBox 手冊對 NAT 網路有這樣的說法:

客戶作業系統發出的網路幀被 VirtualBox 的 NAT 引擎接收,它提取 TCP/IP 數據並使用主機作業系統重新發送。對於主機上的應用程序,或與主機位於同一網路上的另一台電腦,看起來數據是由主機上的 VirtualBox 應用程序使用屬於主機的 IP 地址發送的。

因此,我相信來自您的 VM 的任何通過其 NAT 介面的 traceroute 都將報告與主機上執行的 traceroute 相同的網關集,這意味著 traceroute 不會列出 VirtualBox NAT 網關或主機上的介面用於從主機發送流量。

引用自:https://unix.stackexchange.com/questions/160332