如何在使用 netplan 的系统上设置 tun 和 tap 接口?
通常您会使用 /etc/network/interfaces 中的 pre-up 来调用 ip tuntap 来创建接口,但我在 netplan 文档中没有找到任何可以执行此操作的内容。
答案1
当升级到 18.04 时,我的基于 tap 的 OpenVPN 服务器崩溃了,我遇到了这个问题。当无头服务器停止工作时,这非常烦人,因为 Ubuntu 不再支持在 /etc/network/interfaces 中定义网桥。已经有几个示例,但您几乎需要在 /etc/netplan 中创建一个 .yaml 文件,该文件看起来类似于下面的配置之一。请注意,您需要bridge-utils
安装该软件包。
替换eth0
为您的以太网设备的名称。您可以使用 找到它ifconfig -a
。
此外,您还可以使用选项设置网桥的 MAC 地址,macaddress: xx:xx:xx:xx:xx:xx
其中xx:xx:xx:xx:xx:xx
将其替换为您要使用的地址。
/etc/netplan/00-bridge.yaml
对于 DHCP:
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
dhcp6: no
bridges:
br0:
interfaces: [eth0]
dhcp4: true
dhcp6: no
对于静态 IP:
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
dhcp6: no
bridges:
br0:
interfaces: [eth0]
dhcp4: no
addresses: [10.0.0.5/24]
gateway4: 10.0.0.1
nameservers:
addresses: [8.8.8.8]
dhcp6: no
答案2
我没有找到从 netplan yaml 文件创建 tap 接口的方法,我认为你必须深入阅读网页上的参考手册。使用 gretap 模式的隧道接口可能是一个解决方案。无论如何,我的建议是,如果你想快速配置它,请在 systemd 中的启动脚本中使用 ip 命令。
/usr/bin/tap.sh
#!/bin/bash
ip link add name br0 type bridge;
for i in `seq 0 5`; do
ip tuntap add name tap$i mode tap;
ip link set up dev tap$i;
ip link set tap$i master br0;
done;
/lib/systemd/system/tap.service
[Unit]
Description=TAP Interfaces
After=network.target
[Service]
Type=oneshot
User=root
ExecStart=/usr/bin/tap.sh
[Install]
WantedBy=multi-user.target
$ sudo systemctl enable tap.service
Created symlink /etc/systemd/system/multi-user.target.wants/tap.service → /lib/systemd/system/tap.service.
Netplan 文档:https://netplan.io/reference/#properties-for-device-type-tunnels%3A