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
Используя "сервисный" сценарий для запуска это, кажется, не работает:
$ sudo service ufw start
$ sudo ufw status
Status: inactive
Если я вызову перезагрузку, то она будет работать просто великолепно:
$ sudo ufw reload
Firewall reloaded
$ sudo ufw status
Status: active
И после этого "сервисный" сценарий работает просто великолепно:
$ 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
отчеты:
$ journalctl -u ufw
...<snip>...
-- Reboot --
May 26 12:53:36 matt-laptop systemd[1]: Started Uncomplicated firewall.
Таким образом, конечно, кажется, что это пытается запустить ufw... просто кажется, что это на самом деле не делает этого!
Фиксация проста; мы должны сказать операционной системе загружать ufw после netfilter-персистентного
sudo nano /lib/systemd/system/ufw.service
[Unit]
Description=Uncomplicated firewall
Documentation=man:ufw(8)
DefaultDependencies=no
Before=network.target
After=netfilter-persistent.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/lib/ufw/ufw-init start quiet
ExecStop=/lib/ufw/ufw-init stop
[Install]
WantedBy=multi-user.target
Источник https://devtidbits.com/2019/07/31/ufw-service-not-loading-after-a-reboot /
Я предложил своего рода решение. Я сделал это редактирование к /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, всегда включается после того, как я загружаюсь. Я не знаю - ли это лучший способ сделать вещи. Я волнуюсь, что существует маленькое окно времени между сетевым запуском и брандмауэром, запускающимся..., но по крайней мере это запускается, который лучше, чем прежде!
Возможно, кто-то может предложить лучшее решение. Или возможно это - корректный способ сделать вещи - в этом случае действительно ли это - ошибка, что это принимает значение по умолчанию к запуску перед сетью?
Править:
Еще лучшее решение:
$ 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/
сеть-pre.target имеет эту цель:
"Это - основная цель, для использования с сервисами брандмауэра, которые хотят установить брандмауэр, прежде чем любой сетевой интерфейс возрастет"
Который действительно заставляет меня задаться вопросом, почему это не было установлено на это по умолчанию. Установка его к этому значению, кажется, решает все мои проблемы.
Отредактируйте файл:
/etc/ufw/ufw.conf
Набор к да для запуска на начальной загрузке. При установке этого удаленно, несомненно, добавят правило позволить удаленное соединение прежде, чем запустить ufw. Например: ufw allow 22/tcp
ENABLED=yes
ufw allow 22/tcp
Используйте ufw
управляйте для установки loglevel. Например:
ufw logging medium
См. 'человека ufw' для деталей.
LOGLEVEL=low
У меня есть обычная версия Debian, а не Ubuntu, но это был лучший пост, который я смог найти, чтобы заставить ufw загружаться при запуске. Предложения здесь не сработали для меня, но дали мне достаточно подсказок, чтобы в конечном итоге заставить его работать.
В итоге мне пришлось изменить только одну строку . Все остальное я оставил в покое.
ufw.service
. Before = network.target
на After = network-online.target
Сохранено, перезагружено и запущен ufw
Обратите внимание, что если вы отключите ufw и перезагрузитесь, он будет быть отключенным. Если ufw включен и вы перезагрузитесь, он будет включен.