如果我们想要将虚拟机与物理主机同一网段,并且像物理机器一样被其他设备访问,则需要以桥接模式上网,这个时候,物理主机就必须配置为使用网桥上网了。
注意:这里我们使用了 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 即可,如下图所示: