[체계]
Virgin DigitalOcean Droplet Ubuntu 18.04.2 LTS(GNU/Linux 4.15.0-52-generic x86_64)에는 모든 최신 Virtualmin 업데이트만 포함되어 있습니다.
제가 이 일을 하라고 어떻게 제안하시나요?
[문제] 재부팅 후 아래와 같이 D-Bus 및 FirewallD가 30%의 시간 동안 실패합니다.
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의 신호를 수신합니다."
[이론] 따라서 networkd-dispatcher.service가 서비스 신호에 의존하는 DBus가 시작되지 않습니다... "systemd-networkd에 대한 디스패처 데몬을 시작할 수 없습니다"라고 하면 방화벽이 덜거덕거립니다. 다른 일이 있을 수 있을 것 같습니다.
[패턴] 이러한 오류가 발생할 때 패턴을 발견했습니다.
[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
방금 방화벽을 비활성화하고 차단한 후 IPTables로 돌아왔습니다. 그 후에는 아무런 문제가 없었습니다.
주석을 통해 IPTables를 사용하려면 fall2ban을 변경해야 했습니다.
# banaction=firewallcmd-ipset
in /etc/fail2ban/jail.d/00-firewalld.conf
- 파일을 삭제하지 않습니다.
그런 다음 종료 시 IPTable을 저장 및 복원하고 다음과 같이 다시 시작하는 새 서비스를 설정했습니다.
Ubuntu 18.04를 종료/다시 시작할 때 명령 실행
그렇게 하지 않은 이유 는 iptables를 임시 파일로 사용 하여 iptables를 편집하는 iptables-persistent
Webmin과 IPTables를 통합하고 싶었기 때문입니다 ./etc/webmin/firewall/iptables.save
/etc/webmin/firewall6/ip6tables.save
내 사용자 정의 서비스를 사용하면 webmin을 사용하여 iptables를 편집하고 적용할 수 있으며 종료/다시 시작 시 iptables를 저장하고 복원할 수 있습니다.
마지막으로 f2b가 재부팅 시 다시 추가하므로 모든 Fail2ban 체인과 규칙이 지워지도록 서비스에 수정 사항을 추가해야 했습니다. 이를 위해 여기에서 내 솔루션을 따를 수 있습니다.