/etc/netplan/00-bridge.yaml

/etc/netplan/00-bridge.yaml

如何在使用 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

相关内容