在一台机器上,我准备了一个firewall.service
在运行 Debian 9.5 的机器上运行良好的 systemd 服务。
现在我正在设置另一台机器,也运行 Debian 9.5,使用完全相同的脚本,但在启动时拒绝运行,我似乎找不到任何关于原因的迹象。
启动后,这是一些输出,仅向我表明 systemd 从未尝试过首先启动该服务:
[root@bigbrother ~]# journalctl -u firewall
-- No entries --
[root@bigbrother ~]# systemctl status firewall
● firewall.service - Firewall setup via /etc/iptables.rules
Loaded: loaded (/etc/systemd/system/firewall.service; enabled; vendor preset: enabled)
Active: inactive (dead)
防火墙服务在/etc/systemd/system/firewall.service
两台机器上,如下所示:
[Unit]
Description=Firewall setup via /etc/iptables.rules
After=network.target
[Service]
Type=oneshot
ExecStart=/sbin/iptables-restore /etc/iptables.rules
[Install]
WantedBy=network-online.target
如您所见,它只是运行一个iptables-restore command
,仅此而已。我以前曾经运行/etc/rc.local
过这个,但我想一个人必须跟上时尚并使用systemd
这些东西(这很好,当它工作时)。
该服务确实已启用:
[root@bigbrother ~]# systemctl disable firewall
Removed /etc/systemd/system/network-online.target.wants/firewall.service.
[root@bigbrother ~]# systemctl enable firewall
Created symlink /etc/systemd/system/network-online.target.wants/firewall.service → /etc/systemd/system/firewall.service.
手动运行时效果很好:
[root@bigbrother ~]# systemctl start firewall
[root@bigbrother ~]# systemctl status firewall
● firewall.service - Firewall setup via /etc/iptables.rules
Loaded: loaded (/etc/systemd/system/firewall.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Sep 09 17:10:52 bigbrother systemd[1]: Starting Firewall setup via /etc/iptables.rules...
Sep 09 17:10:53 bigbrother systemd[1]: Started Firewall setup via /etc/iptables.rules.
我错过了什么?
我在这里查看了一些类似的问题,但给我最大希望的问题实际上是一个错字,所以我现在完全迷失了。这是我在不同服务器上运行的同一版本的 Debian,所以我很难相信这与服务的顺序有关。即便如此,我很乐意就此提出建议。
WantedBy=network-online.target
默认情况下它不是依赖链的一部分,你不应该那样使用它。如果您真的需要在网络启动后启动该脚本,我建议您这样做:
https://www.freedesktop.org/software/systemd/man/systemd.special.html#network.target https://www.freedesktop.org/software/systemd/man/systemd.special.html#network-online 。目标
也许它运行得太早了。本文档解释了如何在关机时正确订购东西
network.target
的主要目的。相反,它
network-pre.target
的主要目的是用于防火墙服务。想要在配置网络之前运行的服务应该使用这就是我在 Fedora 24 的
firewalld.service
Unit 中看到的,我相信它是iptables
.