Ubuntu Server 18.04 上具有静态 IP 的 KVM Netplan 桥接器

Ubuntu Server 18.04 上具有静态 IP 的 KVM Netplan 桥接器

我最近设置了我的第一个 ubuntu 服务器并且正在为 netplan 而苦苦挣扎。

由于我需要 Windows 来运行 Linux 上没有的一项服务,因此我尝试设置 KVM。

该服务器有多个静态 IP 用于不同的服务或运行服务的 docker 容器,所以我的 netplan 配置如下所示:

 network:
 version: 2
 renderer: networkd
 ethernets:
   enp30s0:
     dhcp4: no
     addresses: [xxx.xxx.xxx.100/24, xxx.xxx.xxx.102/24, xxx.xxx.xxx.105/24, ...]
     gateway4: xxx.xxx.xxx.1
     nameservers:
       addresses: [xxx.xxx.xxx.1]

现在看来我需要创建一个网络桥接器以使其可用于客户机,但我无法找到仅针对 1 个地址的解决方案。

有什么方法可以实现这一点,或者我在这里犯了一个概念错误?

任何帮助都将不胜感激!谢谢。

答案1

Ubuntu 18.04 设置仍然依赖于网络管理器,并且 networkd 尚不支持 wifi/3G。以下示例对所有接口使用网络管理器。

/etc/netplan/01-netcfg.yaml

---
network:
  version: 2
  # if specified globally, can only realistically have that value,
  # as networkd cannot render wifi/3G.
  renderer: NetworkManager
  ethernets:
    enp42s0:
      gateway4: 192.168.1.1
      dhcp4: false
      # Specify static address, and netmask.
      addresses: [192.168.1.10/24, '2001:1::10/64']
  bridges:
    br0:
      dhcp4: false
      interfaces: [enp42s0]

向 libvirt 添加桥接器的步骤。

创建文件 /tmp/br0.xml

<network>
  <name>br0</name>
  <forward mode='bridge'/>
  <bridge name='br0'/>
</network>

现在让 libvirt 添加新的网络,并自动启动它。

virsh net-define /tmp/br0.xml
virsh net-start br0
virsh net-autostart br0

br0.xml 文件位于 /etc/libvirt/qemu/networks 中。默认 NAT 网络文件也位于此处。检查 br0 是否已成功添加。

virsh net-list --all

Name                 State      Autostart     Persistent
----------------------------------------------------------
br0                  active     yes           yes
default              active     yes           yes

所有新添加的网络接口都会有一个 br0 桥接选项。

答案2

netplan.io 上的示例如下与 Libvirt 桥接应该是可行的方法。您需要在与外部接口(在本例中为 enp30s0)链接的主机中设置一个桥接器。然后告诉 libvirt 使用该桥接器,您的客户机将在此获得设备。

然后,您将需要在主机中设置 libvirt/dnsmasq,以便为客户机提供您想要范围内的 IP,或者在客户机中静态配置客户机为您希望它们使用的地址。

就像是

network:
  version: 2
  renderer: networkd
  bridges:
    br0:
      dhcp4: no
      addresses: [xxx.xxx.xxx.100/24, xxx.xxx.xxx.102/24, xxx.xxx.xxx.105/24, ...]
      gateway4: xxx.xxx.xxx.1
      interfaces:
        - enp30s0

在客人

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      addresses: xxx.xxx.xxx.106/24
      gateway4: xxx.xxx.xxx.1

对于 libvirt 网络,使用系统提供的桥接器:

<network>
  <name>br0</name>
  <bridge name='br0'/>
  <forward mode="bridge"/>
</network>

很多细节取决于您的需求,但这应该概述了要走的路。我相信,如果您能用最终有效的配置更新您的帖子,当您让它运行时,人们会很感激的。

相关内容