![订购周期 - FirewallD 和 DBusException](https://linux22.com/image/155925/%E8%AE%A2%E8%B4%AD%E5%91%A8%E6%9C%9F%20-%20FirewallD%20%E5%92%8C%20DBusException.png)
[系统]
Virgin DigitalOcean Droplet Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-52-generic x86_64) 包含最新 Virtualmin 的所有更新,仅此而已。
您建议我如何进行此操作?
[问题] 重新启动后,30% 的情况下,D-Bus 和 FirewallD 会失败,如下所示:
Jun 20 09:28:35 ns1 networkd-dispatcher[679]: dbus.exceptions.DBusException: org.freedesktop.DBus.Error.FileNotFound: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
Jun 20 09:28:35 ns1 systemd[1]: networkd-dispatcher.service: Main process exited, code=exited, status=1/FAILURE Jun 20 09:28:35 ns1 systemd[1]: networkd-dispatcher.service: Failed with result 'exit-code'.
Jun 20 09:28:35 ns1 systemd[1]: Failed to start Dispatcher daemon for systemd-networkd.
将此与它成功的时代进行比较:
Jun 20 09:30:16 ns1 networkd-dispatcher[678]: No valid path found for iwconfig
Jun 20 09:30:16 ns1 networkd-dispatcher[678]: No valid path found for iw
Jun 20 09:30:16 ns1 networkd-dispatcher[678]: WARNING: systemd-networkd is not running, output will be incomplete.
Jun 20 09:30:16 ns1 systemd[1]: Started Dispatcher daemon for systemd-networkd.
Jun 20 09:30:16 ns1 systemd[1]: Started firewalld - dynamic firewall daemon.
[背景]“Networkd-dispatcher 是一个用于 systemd-networkd 连接状态更改的调度程序守护进程......该守护进程通过 dbus 监听来自 systemd-networkd 的信号”
[理论] 所以 DBus 不会启动,networkd-dispatcher.service 依赖它来服务信号...当“无法启动 systemd-networkd 的调度程序守护进程”时,firewalld 会发出嘎嘎声,我猜可能还有其他事情。
[模式] 我注意到这些故障发生时会出现一种模式。
[FirewallD reports:] Failed to list zones : Error: DBUS_ERROR: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
Jun 21 05:54:11 ns1 kernel: [ 8.398419] systemd[1]: firewalld.service: Found ordering cycle on dbus.socket/start
Jun 21 05:54:11 ns1 kernel: [ 8.404282] systemd[1]: firewalld.service: Found dependency on sysinit.target/start
Jun 21 05:54:11 ns1 kernel: [ 8.424332] systemd[1]: firewalld.service: Found dependency on cloud-init.service/start
Jun 21 05:54:11 ns1 kernel: [ 8.438320] systemd[1]: firewalld.service: Found dependency on systemd-networkd-wait-online.service/start
Jun 21 05:54:11 ns1 kernel: [ 8.497168] systemd[1]: firewalld.service: Found dependency on systemd-networkd.service/start
Jun 21 05:54:11 ns1 kernel: [ 8.505811] systemd[1]: firewalld.service: Found dependency on network-pre.target/start
[FirewallD reports:] Failed to list zones : FirewallD is not running
Jun 21 05:44:39 ns1 kernel: [ 7.396133] systemd[1]: network-pre.target: Found ordering cycle on firewalld.service/stop
Jun 21 05:44:39 ns1 kernel: [ 7.408784] systemd[1]: network-pre.target: Found dependency on basic.target/start
Jun 21 05:44:39 ns1 kernel: [ 7.418770] systemd[1]: network-pre.target: Found dependency on sockets.target/start
Jun 21 05:44:39 ns1 kernel: [ 7.455484] systemd[1]: network-pre.target: Found dependency on lxd.socket/start
Jun 21 05:44:39 ns1 kernel: [ 7.470305] systemd[1]: network-pre.target: Found dependency on sysinit.target/start
Jun 21 05:44:39 ns1 kernel: [ 7.476614] systemd[1]: network-pre.target: Found dependency on cloud-init.service/start
答案1
我只是禁用并屏蔽了firewalld,然后返回到IPTables。之后就没有问题了。
我必须通过注释来更改fail2ban以与IPTables一起使用:
# banaction=firewallcmd-ipset
in /etc/fail2ban/jail.d/00-firewalld.conf
- 不删除该文件。
然后我设置了一项新服务来在关机和重新启动时保存和恢复 IPTables,如下所述:
我没有使用的原因iptables-persistent
是因为我想将 IPTables 与 Webmin 集成,Webmin 使用/etc/webmin/firewall/iptables.save
和/etc/webmin/firewall6/ip6tables.save
作为临时文件来编辑 iptables。
通过使用我的自定义服务,我可以使用 webmin 编辑和应用 iptables,并且在关闭/重新启动时我保存了 iptables 并将其恢复。
最后,我必须向我的服务添加修复程序,以便清除所有fail2ban 链和规则,因为重新启动时 f2b 会再次添加它们。为此,您可以在这里遵循我的解决方案: