如果我们想要将虚拟机与物理主机同一网段,并且像物理机器一样被其他设备访问,则需要以桥接模式上网,这个时候,物理主机就必须配置为使用网桥上网了。

注意:这里我们使用了 NetworkManager 网络管理工具中的 nmcli 来进行配置,因此先需要开启 NetworkManager 服务。

1. 添加网桥设备(br0)及连接名(br0)

$ nmcli c add type bridge autoconnect yes con-name br0 ifname br0

上面的命令完成了这几个操作:创建 br0(可以自定义) 网桥设备、创建 br0(可以自定义) 网络连接,将 br0 网桥设备 stp 设置为 on,可以通过 brctl show 查看网桥,可以通过 nmcli c show 查看网络连接。

2. 配置网桥的ipv4连接信息

1) 动态获取 ip 方式:

$ nmcli c modify br0 ipv4.method auto 

2) 静态设置 ip 方式(我的华为路由器默认是 192.168.3.0 网段):

$ nmcli c modify br0 ipv4.method manual ipv4.address 192.168.3.10 
$ nmcli c modify br0 ipv4.gateway 192.168.3.1
$ nmcli c modify br0 ipv4.dns 192.168.3.1

3. 删除原来的有线网卡连接(如果有的话)

$ nmcli c delete eno1

4. 绑定网卡连接到桥接设备

$ nmcli c add type bridge-slave autoconnect yes con-name eno1 ifname eno1 master br0

这里的网卡连接名为 eno1,网卡设备名为 eno1,桥接设备为 br0,如果 con-name 名字设置为网卡名字,则 ifname 还可以省略,也就是上面的语句可以省略写成:

$ nmcli c add type bridge-slave autoconnect yes con-name eno1 master br0

5. 重启 NetworkManager

$ systemctl restart NetworkManager

至此,主机用网桥方式上网设置成功,并能正常上网。可以通过 ip addr 查看 ip地址信息,发现网桥设备 br0 被赋予了 ipv4 地址,而 eno1 确实绑定至 br0 (master br0)的状态

$ ip addr
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
    link/ether 38:2c:4a:b8:cf:f9 brd ff:ff:ff:ff:ff:ff
    altname enp0s25
4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether aa:03:4d:ba:ce:a9 brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.103/24 brd 192.168.3.255 scope global dynamic noprefixroute br0
       valid_lft 85102sec preferred_lft 85102sec
    inet6 fe80::36c0:32b9:c068:161/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

而虚拟机系统网络连接也很简单,只需要将网卡设置为桥接设备,设备名称为主机桥接设备 br0 即可,如下图所示:

在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐