我有第一台计算机,运行 Windows Server 2019,名为 Win2019,它有两个界面:
- 以太网已收到 192.168.1.1,因为它连接到地址为 192.168.1.0/24 的网络,网关为 192.168.1.254
- Ethernet0 已收到 10.0.0.148,因为它连接到另一个网络,该网络的地址为 10.0.0.0/24,网关为 10.0.0.254
我还有第二台计算机,这次运行的是 Windows 10,称为 Win10,它有一个接收 10.0.0.1 的接口,因为它连接到上面提到的相同 10.0.0.0/24 网络。
我的目标是允许 Win10 计算机连接到 192.168.1.0/24 网络中的网络共享,因此我尝试将 Win2019 机器配置为它所知道的两个网络之间的路由器。
为了实现这一点,我在 Win2019 机器上添加了 RRAS 角色,并通过添加以太网和以太网 0 接口在 IPv4 NAT 部分手动对其进行配置,第一个设置为“激活 NAT 的公共网络”,第二个设置为“私有网络”。
然后,在Win10电脑上,我手动添加了这条路由:
route add 192.168.1.0 mask 255.255.255.0 10.0.0.148 metric 25
而我直接尝试ping 192.168.1.17机器,结果如下:
- 在 Win2019 机器上,我顺利收到了回复
- 在 Win10 主机上,我的数据包丢失率为 100%
因此,我在两台机器上启动了 WireShark,并再次尝试从 Win10 机器 ping 192.168.1.17,并观察到以下情况:
- 在 10.0.0.1 接口上看到 ICMP 回显请求数据包(Win10)
- 在 10.0.0.148 接口(Ethernet0,Win2019)上看到 ICMP 回显请求数据包
- 在 10.0.0.148 接口(Ethernet0,Win2019)上看到 ICMP 回显回复数据包
我也尝试在端口 139 上进行 telnet,SYN 和 SYN/ACK 数据包也发生了同样的情况,就好像数据包没有正确放回 10.0.0.0/24 网络一样。
显然,我错过了某个地方的设置,但我看不出是哪一个。
作为参考,这是 Win2019 机器上的路由表:
0.0.0.0 0.0.0.0 10.0.0.254 10.0.0.148 25
0.0.0.0 0.0.0.0 192.168.1.254 192.168.1.1 2
10.0.0.0 255.255.255.0 On-link 10.0.0.148 281
10.0.0.148 255.255.255.255 On-link 10.0.0.148 281
10.0.0.255 255.255.255.255 On-link 10.0.0.148 281
192.168.1.255 255.255.255.255 On-link 192.168.1.1 257
以及我手动添加上面提到的路由之后在Win10机器上的:
0.0.0.0 0.0.0.0 10.0.0.254 10.0.0.1 25
10.0.0.0 255.255.255.0 On-link 10.0.0.1 281
10.0.0.1 255.255.255.255 On-link 10.0.0.1 281
10.0.0.255 255.255.255.255 On-link 10.0.0.1 281
192.168.7.0 255.255.255.0 10.0.0.148 10.0.0.1 50
任何帮助、指点,都将不胜感激
答案1
192.168.1.1 接口由 VPN 客户端软件管理,我上面没有提到,因为我认为它不会产生影响。但是当 VPN 连接断开时,我可以正常使用 10.0.0.148 接口,而一旦 VPN 连接正常,就不会出现任何问题。
这让我开始思考这个问题:
就好像数据包没有正确放回 10.0.0.0/24 网络一样
于是我进入 10.0.0.148 网卡属性,然后找到其中一个名为“VPN 软件 NDIS 过滤器”的项目。果然,我一禁用它,数据包就会回到 10.0.0.148 接口上。不幸的是,这也意味着 VPN 连接不再起作用,从而使整个设置变得毫无用处。
幸运的是,我能够在 Win2019 机器上添加第二张网卡,将其插在同一个 10.0.0.0/24 网络上,该网络接收 10.0.0.150 IP 地址。然后,我在新网卡上禁用了上面提到的过滤器,这使得 VPN 软件能够正常运行,同时允许数据包路由正常工作!
因此,最终,显然是 VPN 过滤器阻止了数据包通过,但使用第二个纸牌技巧是解决方案。