Ubuntu 配置虚拟机网络桥接模式

2022-08-06 13:28:29 浏览数 (1)

在开启虚拟机时,需要宿主与虚拟机网络连通并可以上互联网,需要配置网络桥接模式,本文记录配置方法。

桥接模式

  • 桥接模式就是将主机网卡与虚拟的网卡利用虚拟网桥进行通信。
  • 类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当中,所以所有桥接下的网卡与网卡都是交换模式的,相互可以访问而不干扰。
  • 在桥接模式下,虚拟机IP地址需要与主机在同一网段,如果需要联网,则网关与DNS需要与主机网卡一致。

桥接模式下的所有虚拟机都是和主机是在同一网段的,可以把它们看成是"平等"的关系,桥接模式下虚拟机和物理的总数不能超过网段容纳的最大主机数量

实际需求

  • 当前主机网络由一根网线插入网口提供
  • 需要开启若干台虚拟机,主机与虚拟机可以相互通信
  • 宿主机与虚拟机可以上网
  • 宿主机与虚拟机有静态 IP

解决思路

  • 使用网络桥接模式,建立网桥
  • 将宿主机与虚拟机挂载在同一个网桥上共享网络
  • 为二者分别设置静态IP

解决方案

  • ifconfig 查看当前网络状态
代码语言:javascript复制
ifconfig

  • 当前没有配置网桥,本地地址为 DHCP 动态分配
建立网桥
  • 使用网络管理器创建网桥最简单的方式就是通过nm-connection-editor。这款GUI(图形用户界面)的工具允许你傻瓜式地配置一个网桥,启动nm-connection-editor。
代码语言:javascript复制
nm-connection-editor

  • 此时我们宿主机有默认的以太网连接,没有手动配置网桥
  • 点击左下角的 ,添加一个网桥,选择桥接
  • 现在,开始配置网桥,包括它的名字和所桥接的连接。如果没有创建过其他网桥,那么默认的网桥接口会被命名为bridge0
挂载本地网络
  • 创建网桥的目的是为了通过网桥共享你的以太网卡接口,所以你需要添加以太网卡接口到网桥。在图形界面添加一个新的“桥接的连接”可以实现上述目的。
  • 我们需要将宿主机的网络挂载到网桥上,点击增加按钮,选择以太网,建立从机
  • 从机配置界面,以太网选项卡中,设备选择当前的网卡:
  • 常规选项卡中勾选前两个,之后保存从机配置选项:
  • 切换到IPv4 设置标签,为网桥配置DHCP或者是静态IP地址
  • 此处我们添加静态IP,设置子网掩码、网关和DNS服务器,并保存
  • 现在新增的网桥连接被创建在桥接窗口里。因为已经从属与网桥,以前配置好的有线连接 就不再需要了,原来的有线连接可以删除了。
  • 等一会或重启宿主机可以看到网络配置默认为 bridge0 从机 1
  • 使用 ifconfig 查看网络配置:
  • 主要的网卡已经切换为 bridge0,并使用了我们设置的IP
  • 之前的网卡enp1s0已经没有 IP 了

至此,网桥已经建立,宿主机静态IP已经设置好了,接下来配置虚拟机

建立虚拟机网络
  • 使用 virt -install 创建虚拟机时,网络配置参数:
代码语言:javascript复制
--network bridge=bridge0

  • 进入虚拟机
方法一
  • 修改 /etc/netplan/*.yaml,配置虚拟网卡静态 IP,可以参考Ubuntu 20.04 设置静态IP
代码语言:javascript复制
network:
  ethernets:
    enp1s0:
      match:
        macaddress: 52:54:00:fd:fb:17
      dhcp4: false
      dhcp6: false
      wakeonlan: true
      addresses: 
        - 192.168.1.111/24
      gateway4: 192.168.1.255
      nameservers:
        addresses: [114.114.114.114, 8.8.8.8]

  • 此处我们设置IP为 111,应用配置
代码语言:javascript复制
sudo netplan apply

方法二

有时 netplan 文件夹下没有文件,可以采用如下方法

  • 需要编辑2个文件
代码语言:txt复制
- `/etc/network/interfaces`(配置IP和网关)
- `/etc/resolv.conf`(配置DNS服务器)修改 
代码语言:javascript复制
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto enp1s0
allow-hotplug enp1s0
# iface enp1s0 inet dhcp
iface enp1s0 inet static
address 192.168.1.111
netmask 255.255.255.0
gateway 192.168.1.1
broadcast 192.168.1.255

# This is an autoconfigured IPv6 interface
iface enp1s0 inet6 auto

  • 其中

配置

含义

auto enp1s0

开机自动连接网络

iface enp1s0 inet static

设置静态IP

iface enp1s0 inet dhcp

dhcp 自动获取IP

address 192.168.1.111

静态 IPv4地址

netmask 255.255.255.0

子网掩码

gateway 192.168.1.1

网关

broadcast 192.168.1.255

广播地址(也可以不写)

  • 配置 /etc/resolv.conf 文件,设置 dns
代码语言:javascript复制
nameserver 192.168.1.1
nameserver 114.114.114.114

  • 重启网络(debian 系统)
代码语言:javascript复制
service networking restart

测试
  • ifconfig 查看虚拟机网络状态
代码语言:javascript复制
$ ifconfig
enp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.111  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 2409:8a1e:8fc7:3bc0:5054:ff:fefd:fb17  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::5054:ff:fefd:fb17  prefixlen 64  scopeid 0x20<link>
        ether 52:54:00:fd:fb:17  txqueuelen 1000  (Ethernet)
        RX packets 39141  bytes 2699714 (2.5 MiB)
        RX errors 0  dropped 24226  overruns 0  frame 0
        TX packets 503  bytes 77888 (76.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 2126  bytes 818164 (798.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2126  bytes 818164 (798.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

  • 此时可以连接互联网,宿主机和虚拟机可以相互ping通,也都有各自的静态 IP

参考资料

  • https://blog.csdn.net/qq_39192827/article/details/85872025
  • https://www.jb51.net/LINUXjishu/333778.html
  • https://blog.csdn.net/nzjdsds/article/details/77197246

0 人点赞