Win10 Hyper-V 搭建虚拟机 Ubuntu桥接网络配置

win10自带的Hyper-V虚拟机管理服务新建虚拟机,如果用默认的内部网络那不需要做任何设置,安装好之后直接可以上网。但是跟物理机不在同一个网段,不方便与局域网其他机器调试,于是需要用到类似VMware的桥接网络

一.Hyper-V新建外部网络

步骤如下:
1、打开Hyper-V管理器选中右边 “虚拟交换机管理器”
在这里插入图片描述
2、选择外部模式,点创建虚拟交换机(我这里已经创建好了),点确定保存。
在这里插入图片描述
3、这时系统网络连接页面可以看到多了一个网络 “vEthernet(虚拟交换机(外部))” ,其中编号1为Hyper-V默认的内部网络,只要按照默认方式创建虚拟机就有这个;2为外部网络(也就是桥接模式);3为本地以太网;4为网桥(下面会讲)
在这里插入图片描述
这个时候你会发现本机断网了,选中以太网点属性,你会看到Internet协议版本4前面的勾被取消掉了,最下面Hyper-V可扩展的虚拟交换机被打勾。此时再选中编号2点属性查看,之前以太网的ipv4设置全到这里来了…取消先不做任何修改。

编号1不用管,我们这里主要讲桥接模式,选中2和3然后点右键,弹出对话框选桥接,就会出现图标4的网桥,(我因为已经创建过了这里就不截图展示)。接着选中网桥点属性,选中ipv4点属性,发现变成了自动获取IP和DNS,选手动获取,然后填入之前以太网的配置,保存。

不出意外,这时本机已经可以正常上网了。

二.设置Ubuntu网络

走完第一步只是让本机恢复了网络,还差对虚拟机设置静态ip

ubuntu从17.10开始,已放弃在/etc/network/interface里固定IP的配置,即使配置也不会生效,而是改成netplan方式

第一步,修改配置文件,在我的ubuntu20.04版本的netplan中配置文件名称为00-installer-config.yaml,修改该配置文件

sudo vim 00-installer-config.yaml

在这里插入图片描述
在这里插入图片描述
第二步,应用新配置

sudo netplan apply

在这里插入图片描述
用ifconfig命令查看,可以看到静态ip设置成功,ping一下百度可以看到可以正常访问网络
在这里插入图片描述
以上。


2022-04-12更新
这几天用着出现一个问题。本来用得挺好,有一天突然断网,然后查看虚拟交换机管理里面网络,本来连接类型是外部网络但现在自动变成内部网络。删除掉重新创建再桥接操作总是提示桥接时出现异常,不能成功桥接。查不到问题所在。

只能退而求其次用替代方法:
使用默认的内部网络,此时网段是固定的,只不过跟物理机不在一个网段,是一个虚拟网段,像这样
在这里插入图片描述
设置Linux系统静态IP,如下:
在这里插入图片描述
网关使用上面截图中的IP地址,IP只要在该网段随便设置一个。保存退出再执行sudo netplan apply

目前,只实现了虚拟机固定IP(方便vscode使用ssh远程调试)、能访问物理机局域网、能访问互联网。还差一个问题,如果虚拟机提供了服务,物理机局域网需要访问怎么办?

桥接模式就不会存在这个问题,现在替代方案只能用端口映射解决:

1.添加端口转发
使用 IPv4+Port 访问转发到 IPv4+Port 访问, 就使用

netsh interface portproxy add v4tov4 listenaddress = 监听 IP listenport = 监听端口 connectport = 目标端口 connectaddress = 目标 IP

其中 listenaddress 可以省略, 省略后就会监听所有访问物理机的 IP, 就不用担心网络环境改变后物理机的 IP 改变需要重新设置的问题

比如我想外部访问 80 端口, 转发到虚拟机的 172.18.64.2:5563, 则命令如下 (不指定 IP 时则监听所有 IP):

netsh interface portproxy add v4tov4 listenport=5563 connectport=5563 connectaddress=172.18.64.2

2.删除端口转发

比如我要删除一个 v4tov4 的端口转发, 就使用

netsh interface portproxy delete v4tov4 listenaddress = 监听 IP listenport = 监听端口

如果你的监听 IP 设置的泛型, 删除也不用填

比如我要删除上述添加的转发规则, 命令就是

netsh interface portproxy delete v4tov4 listenport=5563

3.查看所有转发规则

使用如下命令

netsh interface portproxy show all

如果只想看 v4tov4,就把最后改为 v4tov4

netsh interface portproxy show v4tov4

以上

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐