Ubuntu UFW会阻止大多数端口,直到禁用并在重新启动后重新启用

Ubuntu UFW会阻止大多数端口,直到禁用并在重新启动后重新启用,ubuntu,server,firewall,ufw,Ubuntu,Server,Firewall,Ufw,我的服务器上正在运行UFW。重新启动时: $sudo ufw status Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 1194/udp ALLOW Any

我的服务器上正在运行UFW。重新启动时:

$sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
1194/udp                   ALLOW       Anywhere                  
5550                       ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
443/tcp                    ALLOW       Anywhere                  
8000                       ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
1194/udp (v6)              ALLOW       Anywhere (v6)             
5550 (v6)                  ALLOW       Anywhere (v6)             
80/tcp (v6)                ALLOW       Anywhere (v6)             
443/tcp (v6)               ALLOW       Anywhere (v6)             
8000 (v6)                  ALLOW       Anywhere (v6)
但是,当我尝试运行它时,我的端口8000和1194当前被阻止

当我跑步时:

$sudo ufw disable
$sudo ufw enable

然后端口就打开了。之后我运行status时,它与之前粘贴的完全相同。

我的http和https端口存在相同的问题,它们在重新启动时被ufw阻止。禁用和启用UFW后,所有端口都将根据我的UFW防火墙规则运行。与sudo ufw reload命令相同

所以我用我的机器创建了一个变通方法,并创建了一个system.d服务,它在/etc/systemd/system/firewall.service中启动一个简单的脚本

[Unit]
Description=Firewall restart blocking solution.

[Service]
Type=simple
ExecStart=/var/scripts/firewall.sh

[Install]
WantedBy=multi-user.target
那么我的脚本很简单

#!/bin/bash
sudo ufw reload
至少我设置了在启动时启动init.d

sudo systemctl enable firewall.service

然后我的所有端口在重新启动后正常工作。这可能是这个问题的一个解决办法。

我的印象是,使用ufw所做的更改没有保存,只是暂时的。重新启动而不保存新规则会导致加载以前保存的旧规则

将新规则保存为:

iptables-save > /etc/iptables.rules
这些规则应该在引导时由系统自动重新加载。或者,它们可以重新加载:

iptables-restore < /etc/iptables.rules
iptables还原
真正的解决方案是卸载
iptables persistent
及其依赖项:
sudo-apt-remove-iptables persistent
sudo-apt-autoremove


根据:

感谢@Nicholas的提醒。问题确实是由
iptables持久性
引起的。但是,简单地删除
iptables persistent
并不是一个好的解决方案,因为可能通过
iptables
应用了其他规则。因此,如果安装了
iptables persistent
,更好的方法可能是使用
iptables persistent
持久化ufw规则,即

sudo ufw reload
sudo netfilter-persistent save

我遇到了相同的问题,您找到解决方案了吗?没有,仍然存在相同的问题。在重新启动服务器后,我看到ufw出现了相同的问题。我实现了上面建议的服务,这对我来说很有效,但我想知道为什么ufw的行为如此,因为ufw似乎不应该这样工作。如果我很快有时间,我会检查它,感谢您的回复。