我有一台 Ubuntu 16.04 主机,其中有 6 个 LXC/LXD 容器,使用路由设置双向连接到互联网。每个容器从路由 IPv4/29 子网获取一个 IPv4 地址。此外,它还从 IPv6/64 子网获取一个 IPv6 地址。
现在,当我迁移到 Ubuntu 18.04 时,我想将我的设置也迁移到 Netplan,但遇到了问题。我可以轻松为主机创建基本的 Netplan 配置。但我不知道如何创建“网桥/路由器”。任何配置网桥(第 3 层)的尝试都以某种方式失败。
我的旧配置如下:
# /etc/network/interfaces
# Loopback device:
auto lo
iface lo inet loopback
iface lo inet6 loopback
# device: eth0
auto eth0
iface eth0 inet static
address 88.99.64.130
netmask 255.255.255.192
pointopoint 88.99.64.129
gateway 88.99.64.129
iface eth0 inet6 static
address 2a01:4f9:c010:32bc::2
netmask 128
gateway fe80::1
up sysctl -p
### From here on I dont know how to do this in Netplan!!!
# Bridge router to VMs (brouter)
auto br0
iface br0 inet static
address 88.99.64.130
netmask 255.255.255.192
bridge_ports none
bridge_stp off
bridge_fd 0
# Add IPv4 subnet route
up ip route add 94.130.31.40/29 dev br0
iface br0 inet6 static
address 2a01:4f9:c010:32bc::2
netmask 128
# Add IPv6 route
up ip -6 route add 2a01:4f9:c010:32bc::/64
为了让那些不了解 LXC/LXD 的人更清楚,我还有另一台主机,其 VirtualBox 配置非常相似,我将桥接器命名为“virbr0”(而不是示例中的“br0”)。VirtualBox 中的虚拟机随后会连接到名为“virbr0”的桥接适配器。
在 VirtualBox 中运行的虚拟机中,这是一个简单的静态配置。我在虚拟机中使用 Netplan 没有任何问题。我的问题仅与主机有关。
也许有人可以发布此类路由设置的示例。
答案1
桥接
要创建一个由使用 DHCP 的单个设备组成的非常简单的桥,请写入:
network:
version: 2
renderer: networkd
bridges:
br0:
dhcp4: yes
interfaces:
- enp3s0
一个更复杂的例子是,要让 libvirtd 使用带有标记 vlan 的特定网桥,同时继续提供未标记的接口,将涉及:
network:
version: 2
renderer: networkd
ethernets:
enp0s25:
dhcp4: true
bridges:
br0:
addresses: [ 10.3.99.25/24 ]
interfaces: [ vlan15 ]
vlans:
vlan15:
accept-ra: no
id: 15
link: enp0s25
然后,通过在 /etc/libvirtd/qemu/networks/ 下的新 XML 文件中添加以下内容,将 libvirtd 配置为使用此桥接器。标签中的桥接器名称以及需要与使用 netplan 配置的桥接器设备的名称相匹配:
<network>
<name>br0</name>
<bridge name='br0'/>
<forward mode="bridge"/>
</network>