Я использовал предварительную настройку в / etc / network / interfaces. Странно, у меня два сервера Ubuntu, один ПК, а другой VPS. Этот метод работает на моем ПК, но не на моем VPS.
Это / etc / network / interfaces на моем ПК
# ifupdown has been replaced by netplan(5) on this system. See
# /etc/netplan for current configuration.
# To re-enable ifupdown on this system, you can run:
# sudo apt install ifupdown
auto dsl-provider
iface dsl-provider inet ppp
pre-up /bin/ip link set eno1 up # line maintained by pppoeconf
provider dsl-provider
#auto eno1
#iface eno1 inet manual
pre-up iptables-restore < /etc/iptables.rules
Это / etc / network / interfaces на моем VPS
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
pre-up iptables-restore < /etc/iptables.rules
source /etc/network/interfaces.d/*
Netplan не поддерживает сценарии рычага:
https://netplan.io/faq#use-pre-up-post-up-etc-hook-scripts
Обходное решение должно использовать networkd-диспетчера. Вышеупомянутый FAQ дает пример о том, как сделать это.
Следующее является примером использования networkd-диспетчера для выполнения существующих рычагов ifup с помощью сценария, установленного в/etc/networkd-dispatcher/routable.d/50-ifup-hooks:
#!/bin/sh
for d in up post-up; do
hookdir=/etc/network/if-${d}.d
[ -e $hookdir ] && /bin/run-parts $hookdir
done
exit 0
Точно так же вот пример рычага ifdown, установленного в/etc/networkd-dispatcher/off.d/50-ifdown-hooks:
#!/bin/sh
for d in down post-down; do
hookdir=/etc/network/if-${d}.d
[ -e $hookdir ] && /bin/run-parts $hookdir
done
exit 0