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-persistent
和sudo 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端口