本文来自依云's Blog,转载请注明。
有一个很讨厌的公司叫「深信服」,英文名叫「Sangfor」。它开发的私有协议的 SSL VPN 客户端 EasyConnect 终于支持 Ubuntu 了,然而我没能在 Arch Linux 上正确地把它跑起来。图形界面是 electron 之类的,这部分没有问题。但有一个会往 /usr/share 下写日志的 root 进程,应该是负责真正的 VPN 创建的,死活连不上。
那么就在 Windows 虚拟机里跑吧。所以我的 Linux 系统需要通过 Windows 访问部分网络了。只是 HTTP 的话倒是可以装个 HTTP 代理搞定,但是我还要连 ssh 的。
正文开始了。其实整个过程并不难,关键在于很难找到资料。
首先,当然是给 Windows 一张 host only 的网卡,用于两个系统之间的连接。以及,把那个 VPN 连上。
然后,打开「网络设置」,选择「更改适配器选项」。右键单击要被共享的网络适配器(比如此例中是那张 Sangfor VPN 的网卡),选择「属性」。
选择「共享」选项卡,把第一个框给勾选上,下边下拉菜单选择那张 host only 的适配器。确定。
就这样,OK 了。
要注意的是,此操作会将网卡的 IP 强制设置为「192.168.137.1」。就像图中可以看到的那样,微软总喜欢「提供策略,而非机制」。假定你是给你的家庭共享。假定你要共享的是 Internet 连接(本例中其实是 VPN 连接)。所以它也假定了你的「家庭」网络中 Windows 可以随意选择 IP 地址,假定你需要 DHCP 服务。
Linux 这边配置起来就容易多了。Virtualbox 的 vboxnet0 接口本来用的是 192.168.56.0/24 网段,但是给它配置另外的 IP 地址,往它里边扔它不了解的目标地址的包,它也不介意的。
sudo ip a add 192.168.137.2/24 dev vboxnet0 sudo ip r add 172.16.2.9/32 via 192.168.137.1
以上给 vboxnet0 添加了 IP 地址,并且让需要走 VPN 的目标地址(172.16.2.9)走 Windows 的网络。
PS: 开着防火墙的话,Windows 10 默认是忽略 ping 的。在防火墙的「入站规则」里启用「文件和打印机共享(回显请求—ICMPv4-In)」之后才能 ping 它。
另见阿森人的《伪·如何在 Linux 下使用深信服 SSL VPN》一文。
May 29, 2018 03:15:06 PM
然而我装了个 Ubuntu 16.04 的虚拟机还是连不上,不得以也只能用 Win 来共享.....
另外共享操作应该是:在 VPN 网卡上点属性,共享的家庭网络选择 Host Only 的网卡(Win7)
May 29, 2018 04:11:13 PM
谢谢,我一开始就是因为这个弄反了搞了好久的,写文章时竟然还是写反了……
Jun 01, 2018 06:04:17 PM
这个可以,之前在XXX公司(伤心史)就用这个,通过xl2tp就可以。nm用 networkmanager-l2tp
Feb 12, 2019 02:50:18 PM
谢谢博主,今天靠你这个上了公司的深信服……
Feb 12, 2019 03:27:35 PM
不用谢~愿有一天世界上再没有 Linux 上没法用的深信服~~
Apr 16, 2019 12:44:17 AM
我也要用深信服了,想换 Windows 了……
Apr 16, 2019 02:26:08 PM
别想不开啊……虚拟机养个 XP 吧。
Jun 01, 2019 10:24:19 AM
我搞好了内网 ip 可以 ping 通,但是 dns 解析没整过来
Jun 03, 2019 12:23:35 PM
我也在linux上搞好了内网ip,但是dns不好使
Jun 03, 2019 11:18:26 PM
自己用 dnsmasq 把公司用的域名使用内网 DNS 解析呀。
Jun 08, 2019 11:02:00 AM
thx! 搞定了!
我这边发现个问题,机器休眠后连接会断掉,再起来可以 ping 通虚拟机 192.168.137.1 但是 ping 不通内网。最后在虚拟机里把深信服的网关 ip 设置给 hostonly 网卡好了。
Sep 24, 2019 09:45:05 PM
感谢楼主,用上了深信服。连续两份工作都是深信服 VPN + qizhi 堡垒机,不开森…
Feb 06, 2020 07:30:49 PM
谢谢依云老师....终于可以用上了。这个svpn真的是蛋痛
Jul 08, 2020 12:16:27 PM
那个 IP 192.168.137.1 可以改的,
"HKLM\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters"
如果要用到两台或多台 Windows 电脑做 ICS 做中继, 则需要更改这个 IP.
Jul 08, 2020 01:11:17 PM
好,原来又有个注册表选项。
Sep 04, 2020 02:44:46 PM
依云博主您好,使用datagrip连接公司内网数据库,挂上VPN之后,Navicat直接就可以连接了,但是datagrip却死活连不上,怎么才能让它走VPN啊
Sep 04, 2020 02:46:45 PM
我用的也是EsayConnect,登录之后,直接就可以通过Navicat连接内网数据库了,但是datagrip却一直连不上,所以我怀疑它没有走vpn,这种情况应该怎么做呢?万分感谢
Sep 04, 2020 04:49:04 PM
wireshark 找找看流量去哪里了,strace -f 看它到底在干嘛。
Jan 14, 2021 12:06:02 AM
依云博主你好,以前我用了你这个方法成功连上了校园内网里的数据库。现在公司里的 EasyConnect 我也一样在虚拟机里面启动,但是启动 vpn 后会中断其他所有网络连接,导致无论是否分享网络给 host-only 网卡,虚拟机和宿主机都不能通过这张网卡通信了,无 vpn 网络时可以相互ping通。 是不是公司的 EasyConnect 是加强版,这种情况还有办法吗?
Jan 14, 2021 06:00:13 PM
呃,sangfor 又整什么幺蛾子了么,还是你的 Windows 系统出了问题呢。
它会中断机器连接互联网的那个网络接口么?
Jan 14, 2021 10:13:54 PM
会,只要连接上公司的 VPN 后,就不能再上互联网了,只能访问公司内网络资源。
我虚拟机里面用的 win7,不过应该不是 Windows 的问题。我用 EasyConnect 尝试了连接以前学校的网络,可以连接上,并且可以分享给 host-only 网卡,宿主机也能访问校内资源。(不过换一个地址连接时,EasyConnect 会重新安装一次组件)
我又看了公司里的 vpn 使用指引,发现里面确实有写:
“电脑连接 VPN 后,会中断所有与外网的链接,无法访问互联网。注销 VPN 后会自动重新链接外网。”
Jan 15, 2021 12:26:03 PM
这么糟糕的 VPN 啊……那你去看看路由表?可以尝试着手动加上 host-only 网络的路由试试。
Sep 07, 2023 10:32:15 AM
感谢 , 可以连接VPN 虽然不是深信服 奇安信感觉更可恶。有办法让局域网内的用户也可以一起用吗
Sep 07, 2023 06:40:57 PM
可以自己在需要访问的系统上加路由项,把相关网段的网络数据导向连接了 VPN 的主机。