我最近设置了我的第一个 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>
很多细节取决于您的需求,但这应该概述了要走的路。我相信,如果您能用最终有效的配置更新您的帖子,当您让它运行时,人们会很感激的。