Я настраиваю новый сервер с 18,04 на основе инструкций, записанных для 14,04. Я имею до этих шагов:
/sbin/iptables -A FORWARD -p tcp --destination-port 80 -j ACCEPT
/sbin/iptables -t nat -A PREROUTING -j REDIRECT -p tcp --destination-port 80 --to-ports 8080
/sbin/iptables-save
# To save permanently (reset-persistent):
sudo sh -c "iptables-save > /etc/iptables.rules"
# Modify in /etc/network/interfaces
# Add this line:
pre-up iptables-restore < /etc/iptables.rules
# As below:
# The loopback network interface
auto lo
iface lo inet loopback
pre-up iptables-restore < /etc/iptables.rules
# The primary network interface
auto eth0 eth1
iface eth0 inet static
address XXX.XXX.XX.XXX
netmask 255.255.255.0
gateway XXX.XXX.XX.1
dns-nameservers 8.8.4.4 8.8.8.8 XXX.XXX.0.3
iface eth1 inet static
address XX.XXX.67.47
netmask 255.255.0.0
Но оказывается, что 18.04 делает вещи другой путь, с помощью чего-то названного netplan.
Я нашел вопросы и ответы связанными с тем, как вернуться назад к тому, как вещи были сделаны в 14,04, но я задаюсь вопросом, лучше ли сделать то же самое новый путь.
Как я могу сделать то, что делается старый способ использовать netplan?
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