hwdsl2 / setup-ipsec-vpn

Scripts to build your own IPsec VPN server, with IPsec/L2TP, Cisco IPsec and IKEv2
Other
24.9k stars 6.28k forks source link

【教程】Windows下的IKEv2连接后,实现仅内网请求走VPN,公网请求走客户端自身网络 #1530

Closed userofjack closed 6 months ago

userofjack commented 6 months ago

在使用IKEv2连接后,Windows客户端会出现所有流量都分配至VPN服务器(即此时客户端通过浏览器查询自身IP时,IP显示为VPN服务器端IP)的情况。

事实上我们只希望内网请求走VPN,例如访问baidu.com时使用客户端自身网络,而访问虚拟内网(例如192.168.43.x)时使用VPN连接。

首先,确定VPN服务器的内网网段和子网掩码(一般可以在云服务器后台的子网查看,以腾讯云为例)

image

计算子网掩码:

image

进入设置-网络和Internet-VPN-(下方相关设置)-更改适配器选项,在新窗口中选择VPN连接-右键-属性-网络-Internet协议版本 4(TCP/IPv4)-属性-高级-取消勾选“在远程网络上使用默认网关”-确定,如下图:

image

断开VPN并重新连接【重要!】

此时客户端能够连接VPN,可以访问外网(IP为客户端自身网络IP),但无法访问虚拟内网资源。

打开命令提示符,输入以下命令:

route add -p [服务器内网网段] mask [服务器内网的子网掩码] [VPN客户端获得/配置的虚拟内网IP或虚拟内网网关IP]

在本例中,输入的命令如下:

image

此时VPN客户端访问非虚拟内网资源时(例如ip138.com),IP应该是VPN客户端自身网络的IP,而非VPN服务器IP。

hwdsl2 commented 6 months ago

@userofjack 感谢你的教程,我有空加到项目文档。此用例也可以使用 VPN 分流实现,参见项目文档的高级用法中的 VPN 分流一节。

userofjack commented 6 months ago

@userofjack 感谢你的教程,我有空加到项目文档。此用例也可以使用 VPN 分流实现,参见项目文档的高级用法中的 VPN 分流一节。

我很早测试过vpn分流,没有成功。当时提过issue:

https://github.com/hwdsl2/setup-ipsec-vpn/issues/1405