Hyper-V 虚拟机的网络到底怎么配才好?内容挺复杂的,请看正文。

2017-09-22 09:21:23 +08:00
 fyyz
我的问题的核心就是,虚拟机如何才能在除了关机以外的任何情况下,都能保持与宿主机畅通的通信,同时拥有类似宿主机的网络性能?

首先说下我的环境。

我系统是 Windows Server 2016 DataCenter。开了 Hyper-V 虚拟机。机器是笔记本电脑。

你可能会说:这还不简单?开个桥接啊,桥接到路由器就行了。但是,如果真的这么简单就能解决了,我也不会来发个贴问了。

问题的关键就在我的笔记本:
* 笔记本是有两个网络接口的,一个是 RJ45,就是网线接口,另一个就是无线接口。
* 笔记本会经常被带着走,接上不同的网线,或者接入不同的 WiFi,导致拿到不同的 IP。不仅宿主机的 IP 变了,虚拟机的 IP 也变了。有些网络是不开 DHCP 的,就比如说我公司里的那个,就要手动设置 IP。
* 经常由于测试的需求导致要开个虚拟机跑个程序。

根据上述需求可以很明显地看出,需要在我的 Windows Server 里开一个局域网。Hyper-V 自带虚拟交换机,但是没 DHCP 这种东西。于是我开了个虚拟机,做了个 Router OS x86 进去,开了 DHCP 和 NAT。

最后就做成这样一个东西:

简单说下,是创建了两个虚拟交换机,分别连接到物理接口,即有线和无线。每台交换机分别再拖出两根网线,一根接到宿主机,另一根接到 Router OS。连接宿主机是为了保证了宿主机的网络不会额外走一遍 NAT。此外,宿主机还连到了虚拟交换机 3,这个其实就是我 Router OS 的内网了。

这样一来,实现了不管外面网络怎么变,我的宿主机和虚拟机能始终畅通地通信。不过我最近发现一个非常严重的问题,就是我宿主机的网络可以达到 5MB/s 的下载速度,虚拟机最高只有 100KB/s,网络性能极差。但是如果虚拟机直接桥接物理网卡,就能达到 5MB/s 的下载速度。

如何解决 NAT 效率极低的问题?
或者,你们有谁搞过类似的虚拟机的网络方案?感觉我这套方案太复杂了。
5218 次点击
所在节点    程序员
16 条回复
mhycy
2017-09-22 09:38:04 +08:00
Hyper-V 应该有类似 VM 的 NAT 模式虚拟网卡吧?那个到母机的网段是固定的
xuan880
2017-09-22 09:50:02 +08:00
虚拟机开三个个网卡,两个绑定有线和 WIFI 用 nat 模式来上网,另一个弄成本地网络,专门和宿主机通信。我的 vbox 就是这样的。
kokutou
2017-09-22 09:57:24 +08:00
除了有线和 wifi,开再开个网卡。。。不就行了。。。
sacuba
2017-09-22 10:00:40 +08:00
二楼三楼的解决方案是没毛病的,我家里也是这样用的,和你不同的是我有两个物理网卡,没有无线
wweir
2017-09-22 10:18:18 +08:00
然而,我还是喜欢直接上网桥模式,主要是对外文件传递方便。
是的,我是 ssh 到 服务器上的几层 docker 里,直接 sftp(scp) 虚拟机传文件
tywtyw2002
2017-09-22 10:55:15 +08:00
nat 效率不应该那么低才对。

我很老的服务器( l5420 )跑了 vyos 在 vsphere 下,nat 网络性能大于 300Mbps。
你应该是桥接的问题。
bxb100
2017-09-22 11:01:14 +08:00
nat+host only
fyyz
2017-09-22 11:12:10 +08:00
@mhycy 没有,只有虚拟交换机
fyyz
2017-09-22 11:23:43 +08:00
@xuan880 这种方法我也尝试过,但是有比较严重的问题。因为 ROS 的跳数最少,所以在虚拟机上 ROS 的这条路由优先级最高。这样一来,所有流量都会走 ROS。我不知道 DHCP 服务器能不能设目标网络?就是从连上 ROS 的虚拟机上看到的路由表。我现虚拟机上 ROS 这条路由的目标网络 0.0.0.0,如果能在 DHCP 服务器上声明目标网络上一个局域网网络其实也能解决问题。
Osk
2017-09-22 11:46:22 +08:00
我是在 hyperv 中跑一个 lede x64,把所有物理网卡桥接上去,并创建一个内部网络,用于虚拟机之间、虚拟机与宿主机通信和虚拟机上网,让 lede 处理。
缺点就是,任务管理器里一堆虚拟网卡看着闹心,谁让 hyperv 没有好用的 nat 支持呢,不像 vbox 等软件那样,windows 的 ics 更是问题一堆
flynaj
2017-09-22 20:29:09 +08:00
Router OS 云服务器免费授权就是 1M 的带宽,是不是这个问题
fyyz
2017-09-22 22:12:21 +08:00
@flynaj 我装的就是 Router 的 Hyper-V 的虚拟机镜像,官方直接有提供。
https://mikrotik.com/download
就是下面的 VHDX image 镜像
xuan880
2017-09-22 22:53:32 +08:00
@fyyz 如果是 windows 的虚拟机我记得可以设置网络的跃点数手动指定优先线路.
flynaj
2017-09-23 00:48:20 +08:00
@fyyz 就是了,200 多一个 p1 授权,默认只有 1mbps,p1 是 1g 带宽
fyyz
2017-09-23 01:18:32 +08:00
@flynaj 那还有什么适合跑在 x86 虚拟机里路由器镜像推荐吗?不要 openwrt。
flynaj
2017-09-23 02:14:45 +08:00
功能强大还是 ros,我是买了授权,不嫌弃可以试试国产 ikuai ,OpenWrt 没有什么问题么,
@fyyz

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/392720

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX