На одном из VPS столкнулся с тем, что UFW не запускается вместе с системой (Ubuntu 20.04), хотя было выполнено:
ufw enable
Firewall is active and enabled on system startup
А systemd рапортует, что сервис включен, но «вышел»:
systemctl status ufw
● ufw.service - Uncomplicated firewall
Loaded: loaded (/lib/systemd/system/ufw.service; enabled; vendor preset: enabled)
Active: active (exited) since Tue 2022-09-20 15:58:47 MSK; 44s ago
Docs: man:ufw(8)
Process: 315 ExecStart=/lib/ufw/ufw-init start quiet (code=exited, status=0/SUCCESS)
Main PID: 315 (code=exited, status=0/SUCCESS)
Проверил статус автостарта нужных сервисов:
service --status-all
[ + ] netfilter-persistent
[ + ] ufw
netfilter-persistent необходим для управления сохранённым состоянием iptables.
Проблема крылась в том, что UFW запускался после netfilter-persistent.
Исправляем:
cd /lib/systemd/system/
sudo cp ufw.service ufw.service.original
cat /lib/systemd/system/ufw.service
[Unit]
Description=Uncomplicated firewall
Documentation=man:ufw(8)
DefaultDependencies=no
Before=network.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/lib/ufw/ufw-init start quiet
ExecStop=/lib/ufw/ufw-init stop
[Install]
WantedBy=multi-user.target
Добавляем строку After=netfilter-persistent.service в раздел [Unit] файла описания сервиса:
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
Перезагружаемся, проверяем что всё стартовало автоматически sudo ufw status