Ubuntu UFW会阻止大多数端口,直到禁用并在重新启动后重新启用
我的服务器上正在运行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
$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似乎不应该这样工作。如果我很快有时间,我会检查它,感谢您的回复。