ufw не запускается для загрузки. Мой файл /etc/ufw/ufw.conf выглядит так:
# /etc/ufw/ufw.conf
#
# Set to yes to start on boot. If setting this remotely, be sure to add a rule
# to allow your remote connection before starting ufw. Eg: 'ufw allow 22/tcp'
ENABLED=yes
# Please use the 'ufw' command to set the loglevel. Eg: 'ufw logging medium'.
# See 'man ufw' for details.
LOGLEVEL=low
Итак, кажется, что он должен начать нормально. Однако сразу после загрузки я всегда получаю это:
$ sudo ufw status
Status: inactive
Использование сценария «service» для запуска, похоже, не работает:
$ sudo service ufw start
$ sudo ufw status
Status: inactive
Если я заставляю перезагружать его будет работать нормально:
$ sudo ufw reload
Firewall reloaded
$ sudo ufw status
Status: active
И после этого скрипт «service» работает просто отлично:
$ sudo ufw status
Status: active
$ sudo service ufw stop
$ sudo ufw status
Status: inactive
$ sudo service ufw start
$ sudo ufw status
Status: active
Как мне запустить UFW при загрузке?
Изменить:
Я использую Ubuntu 18.04, поэтому используется systemd. systemctl is-enabled сообщает следующее:
$ sudo ufw status verbose
Status: inactive
$ sudo systemctl is-enabled ufw.service
enabled
Я также пробовал это:
$ sudo systemctl enable ufw
Synchronizing state of ufw.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable ufw
$ sudo ufw status verbose
Status: inactive
И после перезагрузки он остается неактивным. journalctl -p err ничего интересного не сообщает. journalctl -u ufw reports:
$ journalctl -u ufw
...<snip>...
-- Reboot --
May 26 12:53:36 matt-laptop systemd[1]: Started Uncomplicated firewall.
Так что, конечно, кажется, что он пытается запустить uufw ... кажется, что на самом деле это не так!
Я придумал решение. Я сделал это редактирование на /lib/systemd/system/ufw.service:
$ diff -u ufw.service.orig ufw.service
--- ufw.service.orig 2018-05-26 13:45:48.696356561 +0100
+++ ufw.service 2018-05-26 13:46:04.443673265 +0100
@@ -2,7 +2,7 @@
Description=Uncomplicated firewall
Documentation=man:ufw(8)
DefaultDependencies=no
-Before=network.target
+After=network.target
[Service]
Type=oneshot
Итак, это приводит к тому, что ufw запускается после того, как сеть вставлена вместо нее. Кажется, что это трюк - ufw всегда включен после загрузки. Я не знаю, лучше ли это делать. Я беспокоюсь, что между запуском сети и запуском брандмауэра существует небольшое окно времени ... но по крайней мере оно начинается, которое лучше, чем раньше!
Возможно, кто-то может придумать лучшее решение. Или, может быть, это правильный способ сделать вещи - в этом случае это ошибка, которую по умолчанию она запускает перед сетью?
Edit:
Еще лучшее решение: [ ! d4] $ diff -u ufw.service.orig ufw.service
--- ufw.service.orig 2018-05-26 13:45:48.696356561 +0100
+++ ufw.service 2018-05-26 14:17:22.030681670 +0100
@@ -2,7 +2,7 @@
Description=Uncomplicated firewall
Documentation=man:ufw(8)
DefaultDependencies=no
-Before=network.target
+After=network-pre.target
[Service]
Type=oneshot
Согласно этой странице
https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/
network-pre. Цель этой цели:
«Это основная цель для использования с службами брандмауэра, которые хотят установить брандмауэр до того, как какой-либо сетевой интерфейс встанет»
Что действительно заставляет меня задаться вопросом, почему это было По умолчанию это значение не установлено. Установка этого значения, похоже, решает все мои проблемы.
Я придумал решение. Я сделал это редактирование на /lib/systemd/system/ufw.service:
$ diff -u ufw.service.orig ufw.service
--- ufw.service.orig 2018-05-26 13:45:48.696356561 +0100
+++ ufw.service 2018-05-26 13:46:04.443673265 +0100
@@ -2,7 +2,7 @@
Description=Uncomplicated firewall
Documentation=man:ufw(8)
DefaultDependencies=no
-Before=network.target
+After=network.target
[Service]
Type=oneshot
Итак, это приводит к тому, что ufw запускается после того, как сеть вставлена вместо нее. Кажется, что это трюк - ufw всегда включен после загрузки. Я не знаю, лучше ли это делать. Я беспокоюсь, что между запуском сети и запуском брандмауэра существует небольшое окно времени ... но по крайней мере оно начинается, которое лучше, чем раньше!
Возможно, кто-то может придумать лучшее решение. Или, может быть, это правильный способ сделать вещи - в этом случае это ошибка, которую по умолчанию она запускает перед сетью?
Edit:
Еще лучшее решение: [ ! d4] $ diff -u ufw.service.orig ufw.service
--- ufw.service.orig 2018-05-26 13:45:48.696356561 +0100
+++ ufw.service 2018-05-26 14:17:22.030681670 +0100
@@ -2,7 +2,7 @@
Description=Uncomplicated firewall
Documentation=man:ufw(8)
DefaultDependencies=no
-Before=network.target
+After=network-pre.target
[Service]
Type=oneshot
Согласно этой странице
https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/
network-pre. Цель этой цели:
«Это основная цель для использования с службами брандмауэра, которые хотят установить брандмауэр до того, как какой-либо сетевой интерфейс встанет»
Что действительно заставляет меня задаться вопросом, почему это было По умолчанию это значение не установлено. Установка этого значения, похоже, решает все мои проблемы.