受疫情影响,必须在家办公,在家办公就必须用到公司的VPN。公司VPN用的是思科的方案。思科的any connect 客户端是支持路由下发的,而且是强制下发的。公司VPN的路由设置得很愚蠢,所有流量都会走VPN了。 也不知道信息技术部的人是咋想的,我记得平常的VPN路由就很好,基本上只有内网流量走VPN,现在这么多人在家办公,反而让全部流量走VPN, 有点不可理喻的感觉。我猜测他们多半是为了信息安全才这样设置的。总之刚复工的时候,VPN基本连不上或者连上之后基本没速度,后来他们增加了VPN服务器的带宽,总算可以正常使用了。

我工作的很多东西都在Hyper-V虚拟机里面。当两个都比较高冷的软件不得不一起工作的时候,问题就来了。Hyper-V 的虚拟机不能使用宿主机的VPN,不能访问内网的一切东西,那怕使用NAT也不行,而同事使用的VMware workstation 就可以。直接桥接VPN新建的虚拟网卡会导致VPN链接断开,并不能再次连接。Hyper-V 虚拟使用默认交换机,及NAT模式是,宿主机连上VPN后,新建使用power shell 命令get-netroute 发现宿主机路由表被any connect 修改成所有流量全走VPN。尝试使用power shell 命令 new-netroute 修改路由表,any connect 检测到路由表修改会重新连接VPN,并重新修改路由。升级any connect 后问题依旧,Hyper-V 使用的是8.2版本,升级Hyper-V 需要升级宿主机系统。

我知道Hyper-V 的虚拟化是tier-2 级别的,宿主机其实就是多运行了一些服务的虚拟机,而VMware workstation 是tier-1级别的。VMware workstation 的虚拟机的NAT地址转换是由VMware 完成的,VMware 把流量转给宿主机系统进行处理,宿主机系统再把流量转给anyconnect。在anyconnect 看来,VMware 里的虚拟机就是宿主机的一个普通应用程序。Hyper-V 的虚拟网卡就相当于给宿主机增加了一块物理网卡,NAT地址转换由宿主机操作系统来完成的,而any connect 的路由下发会使宿主机系统不能完成NAT地址转换。

解决办法有:

一, 像VMware worksation 那样,在宿主机的应用程序里完成NAT地址转换。这样的应用程序很少,因为windows本身就支持NAT地址转换。可以安装一个VMplayer/VMware worksation ,然后在Hyper-V 里桥接到VMware 的Nat。

二,使用其他支持客户端修改路由的VPN软件,如open connect。

1 对 “Hyper-V 与anyconnect vpn”的想法;

  1. 大神,通过方法1解决了,用免费的VMwareplay创了个空白虚拟机,然后HyperV里面桥接到VMware终于可以和主机一起访问内网了,感谢感谢!!!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据