我来这里是为了寻找有关网络路由问题的解释。
我有两台笔记本电脑 A 和 B,笔记本电脑 A 连接到公共网络,而笔记本电脑 B 通过笔记本电脑 A 的热点连接到笔记本电脑 A。因此,笔记本电脑 B192.168.137.128
也能够与公共网络通信。
笔记本电脑 A 有三个网络适配器:
- 无线局域网适配器-
192.168.1.6
(物理) - vmware 虚拟网络适配器-
192.168.88.1
(由 vmware 创建) - 无线局域网虚拟适配器-
192.168.137.1
(由笔记本电脑 A 热点创建)
另外,我已经关闭了防火墙。
这是我的笔记本电脑 路线表(只是一部分)
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.6 50 // <--- physical interface WIFI
127.0.0.0 255.0.0.0 On-link 127.0.0.1 331
127.0.0.1 255.255.255.255 On-link 127.0.0.1 331
192.168.88.0 255.255.255.0 On-link 192.168.88.1 291 // <--- virtual interface VMnet8
192.168.88.1 255.255.255.255 On-link 192.168.88.1 291 // <--- virtual interface VMnet8
192.168.137.0 255.255.255.0 On-link 192.168.137.1 306 // <--- virtual wireless interface
192.168.137.1 255.255.255.255 On-link 192.168.137.1 306 // <--- virtual wireless interface
这是我的笔记本电脑 B 路由表
Destination Gateway Flags Netif Expire
default 192.168.137.1 UGSc en0
127 127.0.0.1 UCS lo0
127.0.0.1 127.0.0.1 UH lo0
169.254 link#4 UCS en0 !
192.168.137 link#4 UCS en0 !
192.168.137.1/32 link#4 UCS en0 !
192.168.137.1 2:bb:60:21:8c:2a UHLWIir en0 1128
192.168.137.102/32 link#4 UCS en0 !
192.168.137.255 ff:ff:ff:ff:ff:ff UHLWbI en0 !
据我理解,每个 IP 数据包都根据上表来决定使用哪个接口传出。
笔记本电脑 A ping ip192.168.88.134
将使用网络接口192.168.88.1
发送包(正在工作)。
笔记本B通过网络接口与公网通信192.168.1.6
(正在工作)
但是为什么笔记本B无法ping192.168.88.134
通笔记本A里面的网口,网口192.168.88.1
没有收到任何包。(wireshark抓包显示)
我不明白为什么会发生这种情况,根据我的理解,当笔记本电脑 A 接受笔记本电脑 B 的 IP 数据包时,由于上面的路由表配置,它应该通过 192.168.88.1 接口发送出去。我误解了吗?有人能指出我错在哪里吗?
答案1
最可能的原因是 192.168.88.134 的路由表没有配置,无法让该节点知道 B 可以通过 A 到达。在企业网络中,我们使用路由协议让节点交换路由。对于较小的网络,我们可以在任何路由器(包括 192.168.88.134 或其默认网关)上设置固定路由。如果不可能,A 上的网络地址转换 (NAT) 可以将 B 的 IP 流转换为似乎来自 A 的 IP 流。然后,发往 A 的答案被转换回来并发送给 B。