Как настроить интерфейсы tun и tap в системах, которые используют netplan?
Обычно вы использовали бы pre-up в / etc / network / interfaces для вызова ip tuntap для создания интерфейса, но я не нашел ничего в документации netplan для этого.
Я столкнулся с этой проблемой, когда обновление до 18.04 сломало мой сервер OpenVPN, основанный на ответах. Это очень раздражает, когда безголовый сервер просто перестает работать, потому что Ubuntu отказался от поддержки определения мостов в / etc / network / interfaces. Уже есть несколько примеров, но в значительной степени вам нужно создать файл.yaml в / etc / netplan, который выглядит примерно как одна из конфигураций ниже. Обратите внимание, что вам понадобится установленный пакет bridge-utils
.
Замените eth0
именем вашего Ethernet-устройства. Вы можете найти это, используя ifconfig -a
.
Кроме того, вы можете установить MAC-адрес моста, используя параметр macaddress: xx: xx: xx: xx: xx: xx
где xx: xx: xx: xx: xx: xx
заменяется адресом, который вы хотите использовать.
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
dhcp6: no
bridges:
br0:
interfaces: [eth0]
dhcp4: true
dhcp6: no
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
Я не нашел способа сделать интерфейс tap из файла netplan yaml, я думаю, вам придется подробно прочитать справочное руководство с веб-страницы. Возможно, туннельный интерфейс с режимом gretap должен стать решением. В любом случае, мой совет: используйте команду ip в сценарии загрузки в systemd, например, если вы хотите быстро настроить ее.
/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