在Linux上通过路由转发的方式来访问Windows虚拟机中的VPN网络

最近一直都在家远程办公,因此访问内网环境就需要使用VPN。客户使用的VPN网络是深信服的SSLVPN,客户端是EasyConnect。由于我日常开发使用的都是Linux系统,而EasyConnect虽然有Linux客户端,但是在登录了之后会自动注销,也没看到错误日志什么的。最后我只好用vmware创建了一个Windows 10虚拟机,在虚拟机上登录EasyConnect客户端,然后在Linux上设置路由转发来将所有内网的请求都转发到虚拟机中来访问,这样子在Linux中就可以使用VPN内网环境了。下面我来说明一下具体的步骤。

1.网络配置

对于Windows虚拟机的网络配置,首先是要有一个可以访问公网的 NAT 适配器或者桥接的适配器,如图:

上图中,圈住的第一个为桥接的网络适配器,圈住的第二个为NAT的网络适配器。这两种用哪一个都可以,看个人的需求。

其次是要有一个可以和主机互相通信的网络适配器,即仅主机的适配器,如下图中鼠标所指的适配器:

有了这两种网络适配器后我们来看一下Windows中的适配器配置界面:

如图所示,Ethernet 1为仅主机的网络适配器,负责和Linux主机相互通信,Ethernet 2为NAT的网络适配器,负责访问公网,连接VPN服务器。而最后一个名为以太网的网络适配器为EasyConnect客户端创建出来的适配器。

2.登录VPN

网络配置完成之后就可以在Windows中登录EasyConnect客户端来连接VPN网络。此部分不再详细说明,应该各个VPN网络提供方都会给详细的连接教程。

3.网络分享

EasyConnect客户端登录VPN网络成功后,名为以太网的网络适配器就应该是可用的状态了,这个时候在Windows中就可以访问内网环境。接下来要做的就是将名为以太网的网络适配器设置网络共享(右键点击适配器图标,然后点击属性,接着切换到共享标签,勾选允许….),并选择仅主机的那个网络适配器作为目标,即”Ethernet 1″,如下图:

在设置了之后,Ethernet 1的IP地址可能会被修改为它自身的网关地址,为什么说可能呢,因为我在另一台电脑上设置网络连接共享后被共享目标适配器的IP地址并没有变。如果IP地址变得了的话,右键点击名为Ethernet 1的网络适配器,点击属性,双击ipv4配置,会发现它写死了IP地址为网关地址,此时选择自动获取IP地址即可。如图:

修复完IP地址之后,将仅主机的网络适配器的IP地址记下来,之后会用到。在这次示例中Ethernet 1的IP地址为”172.16.176.128″,如图:

4.添加路由

接着回到Linux主机中,打开终端,使用”route”命令添加一条路由,如下:

sudo route add -net 10.0.0.0/8 gw 172.16.176.128

上面的命令意思就是将10开头的内网IP地址所有的请求都转发到”172.16.176.128″,这个IP地址就是Windows虚拟机中仅主机的那个Ethernet 1的网络适配器IP地址。

可以用如下命令去查看已有的路由表:

$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         RT-AC54U.lan    0.0.0.0         UG    600    0        0 wlp0s20f3
10.0.0.0        172.16.176.128  255.0.0.0       UG    0      0        0 vmnet1
link-local      0.0.0.0         255.255.0.0     U     1000   0        0 wlp0s20f3
172.16.176.0    0.0.0.0         255.255.255.0   U     0      0        0 vmnet1
192.168.35.0    0.0.0.0         255.255.255.0   U     0      0        0 vmnet8
192.168.123.0   0.0.0.0         255.255.255.0   U     600    0        0 wlp0s20f3

可以看到多了一条10.开头的IP网段路由表。此时就可以在Linux主机中访问10.网段的内网地址了。

使用”route add”命令添加的路由信息在重启之后就会被自动删除,要想手动删除可以使用”route del”命令,即将上面那条命令中的”add”替换为”del”,如下:

sudo route del -net 10.0.0.0/8 gw 172.16.176.128

执行之后10网段的路由信息就被删除了。

5.重启失效

即使设置好Windows虚拟机中的网络共享,但是当Windows虚拟机重启之后共享配置就会失效,不知道为何会有这个问题,解决的办法很简单,先取消EasyConnect客户端创建的网络适配器的网络连接共享,然后重新走设置网络连接共享的那一套流程,即第3步即可。

6.防火墙

如果在什么都设置好了之后发现Linux主机还是不能访问VPN内网,则可能是Windows的防火墙导致的,将Windows的防火墙关闭即可,如图:

7.视频教程

此次教程我也录制了视频,如有需要可以扫描文章下方左边的二维码或微信搜索”sunriseydy”关注公众号并回复:” linux_sslvpn”即可获取视频观看链接。


版权说明:
作品 sunriseydy 采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
文章内容如未说明均为原创,欢迎转载,但请注明原作者(sunriseydy)和原文链接(https://blog.sunriseydy.top/technology/server-blog/server/linux_sslvpn/)
部分来自互联网的文章,如有侵权,请联系我,24小时内删除,谢谢

手机打开扫一扫即可访问本页面

感谢您的支持,SunriseYDY 会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

日出一点一 | 在探索的路上永不止步

分享到微博 分享到QQ 微信赞赏 在手机上阅读 点赞 0

评论一下呗亲

电子邮件地址不会被公开。 必填项已用*标注