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

Posted

技术标签:

【中文标题】UFW 会阻止大多数端口,直到禁用并在重启后重新启用【英文标题】:UFW blocks most ports until disabled and re-enabled after reboot 【发布时间】:2017-05-10 05:06:32 【问题描述】:

我的服务器上正在运行 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

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

【问题讨论】:

我也遇到了同样的问题,您找到解决方法了吗? 不,还是有同样的问题。 【参考方案1】:

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

sudo ufw reload
sudo netfilter-persistent save

【讨论】:

【参考方案2】:

我的 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 相同的问题。我实现了上面建议的服务并且对我有用,但我想知道为什么 ufw 的行为如此,因为这似乎不是 ufw 应该如何工作的。【参考方案3】:

真正的解决方案是卸载iptables-persistent及其依赖:sudo apt remove iptables-persistentsudo apt autoremove

根据:https://github.com/pi***/pi***/issues/414

【讨论】:

如果我有时间我会检查一下,感谢您的回复。【参考方案4】:

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

保存新规则:

iptables-save > /etc/iptables.rules

系统应在引导时自动重新加载这些规则。或者它们可以重新加载:

iptables-restore < /etc/iptables.rules

【讨论】:

以上是关于UFW 会阻止大多数端口,直到禁用并在重启后重新启用的主要内容,如果未能解决你的问题,请参考以下文章

UFW不允许Kurento Media Server 6.7通过ws_uri连接

vmware workstation linux 如何开启21端口

UFW防火墙配置

单击通知后,已禁用的 Keyguard Lock 会重新启用自身

linux 重启后无法连接22端口

C#winform程序卡死后 自动关闭后重启 怎么做