[我的配置] Ubuntu 18.04 - digitalocean droplet/server
[背景] 根据我的研究,我推测自 18.04 起 /etc/network/intefaces 已被弃用,并引入了名为 netplan 的东西。桌面获得 NetworkManager,而 server-Netplan 将控制权交给 systemd-networkd。
[问题] 让脚本在关机/重启时运行。我计划在 /etc/network/interfaces 中使用 pre-up/post-down,但由于上述原因,这对我不起作用。
具体来说,我要运行的脚本与在关机和重启时保存和恢复 iptables 有关。
[iptables-persistent] 请不要让我安装 iptables-persistent,因为即使在这种情况下,我仍然需要将 iptables 保存和恢复到单独的文件中,比如缓冲区。如果 iptables-persistent 可以以某种方式将其文件保存在不同的位置并在重新启动时加载该文件,我会考虑它。
有任何想法吗?
[我试过了]
我在 /etc/NetworkManager/dispatcher.d/01firewall 中创建了一个可执行文件没有结果。这是因为如上所述 NetworkManager 未在服务器安装中使用吗?
我在 /lib/systemd/system/ 中创建了一个服务:
[Unit] Description=ipres [Service] ExecStart=/bin/sh -c '/sbin/iptables-save -c > /etc/blah/firewall/up.save' ExecStop=/bin/sh -c '/sbin/iptables-save -c > /etc/blah/firewall/down.save' [Install] WantedBy=multi-user.target
部分成功,因为文件已创建但为空(是因为 iptables-save 功能太晚/太早了吗?)
最后我在文件中使用了这个服务定义
/etc/systemd/system/ipres.service
:并像这样使用 my.program
/usr/local/bin/my.program
(chroot rwx):不要忘记启动并启用您的服务。
非常适合我。
该命令是否在您的服务器上手动运行,您是否通过以下方式启用了该服务:
我已经在默认安装的 ubuntu 16.04 和 18.04 上尝试了你的服务文件,一切似乎都正常工作;)