以下是我想做的事情:
系统:Windows 10
VPN TUN NIC IP 为 10.2.3.4
我有一个在 10.2.3.4:567 上监听的服务,我想从同一台机器建立到此服务的连接。但是,我希望流量退出网络接口,而不是通过软件环回发送。基本上,我希望流量退出 VPN 适配器到达 VPN 服务器,然后路由回我。
答案1
这可能是一个坏主意,可能会以微妙的方式破坏事情,但从技术上来说应该是可行的。
首先,我们可以通过查看 Wireshark 来验证 Windows 是否不会将发往已配置 IP 的流量发送到本地系统之外。在我的系统上,我的 IP 是192.168.88.100
,我的路由器/默认网关是。如果我在过滤 Wireshark 流量的同时192.168.88.1
运行,则看不到返回任何结果。ping 192.168.88.100
ip.dst == 192.168.88.100 && ip.proto == ICMP
我们可以做的是添加一条路由,将系统中所有发往10.2.3.4
VPN 网络默认网关的流量发送到该网关。打开管理员命令提示符并查看 的输出route print
。很有可能,您会在路由表中看到类似以下内容:
192.168.88.100 255.255.255.255 On-link 192.168.88.100 281
这意味着所有发往 的流量192.168.88.100
都将由 处理192.168.88.100
。这就是我们的软件环回!数据包实际上从未离开接口,因此 Wireshark 看不到它们。
那么,如果我明确添加一条路由,说明发往 的流量192.168.88.100
应由我的路由器处理,会发生什么情况192.168.88.1
?
命令是route add (destination) mask (netmask) (router)
所以我照做了route add 192.168.88.100 mask 255.255.255.255 192.168.88.1
,并重试了我的 ping......
好了。现在流量明显到达了路由器192.168.88.1
- 事实上,它用一个 ICMP 重定向数据包回复我的系统“嘿,这不是一个最佳路由”。
我们可以更加确定,因为尽管 IMCP 回复数据包的源和目标为192.168.88.100
,但回复数据包上的 MAC 地址来自不同的 MAC:
Src: HewlettP_93:61:44 (ac:16:2d:93:61:44), Dst: ASUSTekC_68:58:db (2c:4d:54:68:58:db)
(我的路由器有一个 HP NIC)。
因此,无论您在这里做什么,请弄清楚您的 VPN 连接的默认网关是什么,然后在命令中输入适当的 IP 地址route add
。