Как я заставляю ufw запускаться на начальной загрузке?

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... просто кажется, что это на самом деле не делает этого!

3
задан 26 May 2018 в 15:16

4 ответа

Фиксация проста; мы должны сказать операционной системе загружать 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 /

0
ответ дан 1 December 2019 в 15:49

Я предложил своего рода решение. Я сделал это редактирование к /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 имеет эту цель:

"Это - основная цель, для использования с сервисами брандмауэра, которые хотят установить брандмауэр, прежде чем любой сетевой интерфейс возрастет"

Который действительно заставляет меня задаться вопросом, почему это не было установлено на это по умолчанию. Установка его к этому значению, кажется, решает все мои проблемы.

5
ответ дан 1 December 2019 в 15:49

Отредактируйте файл:

/etc/ufw/ufw.conf

Набор к да для запуска на начальной загрузке. При установке этого удаленно, несомненно, добавят правило позволить удаленное соединение прежде, чем запустить ufw. Например: ufw allow 22/tcp

ENABLED=yes
ufw allow 22/tcp 

Используйте ufw управляйте для установки loglevel. Например:

ufw logging medium

См. 'человека ufw' для деталей.

LOGLEVEL=low
-1
ответ дан 1 December 2019 в 15:49

У меня есть обычная версия Debian, а не Ubuntu, но это был лучший пост, который я смог найти, чтобы заставить ufw загружаться при запуске. Предложения здесь не сработали для меня, но дали мне достаточно подсказок, чтобы в конечном итоге заставить его работать.

В итоге мне пришлось изменить только одну строку . Все остальное я оставил в покое.

  • Отредактируйте раздел UNIT в файле ufw.service .
  • Измените Before = network.target на After = network-online.target

Сохранено, перезагружено и запущен ufw

Обратите внимание, что если вы отключите ufw и перезагрузитесь, он будет быть отключенным. Если ufw включен и вы перезагрузитесь, он будет включен.

2
ответ дан 8 March 2020 в 05:33

Другие вопросы по тегам:

Похожие вопросы: