带有静态 ips 的 Ubuntu Server 18.04 上 KVM 的 Netplan 桥接器

fre*_*o.r 5 networking kvm network-bridge netplan 18.04

我最近设置了我的第一个 ubuntu 服务器,我正在努力使用 netplan。

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

服务器有多个静态 ips 用于不同的服务或运行服务的 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]
Run Code Online (Sandbox Code Playgroud)

现在似乎我需要创建一个网桥以使其可用于来宾计算机,但我无法找到仅对 1 个地址执行此操作的解决方案。

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

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

Chr*_*rdt 3

netplan.io 上的示例(例如Bridging with 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
Run Code Online (Sandbox Code Playgroud)

而在嘉宾中

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      addresses: xxx.xxx.xxx.106/24
      gateway4: xxx.xxx.xxx.1
Run Code Online (Sandbox Code Playgroud)

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

<network>
  <name>br0</name>
  <bridge name='br0'/>
  <forward mode="bridge"/>
</network>
Run Code Online (Sandbox Code Playgroud)

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


ric*_*usa 3

Ubuntu 18.04设置仍然依赖于网络管理器,并且网络尚不支持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]
Run Code Online (Sandbox Code Playgroud)

将桥添加到 libvirt 的步骤。

创建文件 /tmp/br0.xml

<network>
  <name>br0</name>
  <forward mode='bridge'/>
  <bridge name='br0'/>
</network>
Run Code Online (Sandbox Code Playgroud)

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

virsh net-define /tmp/br0.xml
virsh net-start br0
virsh net-autostart br0
Run Code Online (Sandbox Code Playgroud)

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

virsh net-list --all

Name                 State      Autostart     Persistent
----------------------------------------------------------
br0                  active     yes           yes
default              active     yes           yes
Run Code Online (Sandbox Code Playgroud)

所有新添加的网络接口都将具有 br0 桥接选项。