我在我的服务器上运行了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
然后端口打开了。当我在此之后运行状态时,它与之前粘贴的完全相同。
答案 0 :(得分:2)
我的印象是,用ufw所做的更改尚未保存并且是暂时的。在不保存新规则的情况下重新启动会导致加载以前保存的旧规则。
使用以下命令保存新规则:
Type mismatch, expected () => Any, actual: Foo.this.Fixture with Object { ... }
这些规则应在启动时由系统自动重新加载。或者可以重新加载它们:
iptables-save > /etc/iptables.rules
答案 1 :(得分:1)
我的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
然后我的所有端口在重新启动后工作正常。它可能是解决这个问题的方法。
答案 2 :(得分:1)
真正的解决方案是卸载iptables-persistent
及其依赖项:sudo apt remove iptables-persistent
和sudo apt autoremove
。
答案 3 :(得分:0)
感谢@Nicholas的提醒。该问题确实是由iptables-persistent
引起的。但是,简单地删除iptables-persistent
不是一个好的解决方案,因为可能有其他规则通过iptables
应用。因此,如果安装了iptables-persistent
,则更好的方法可能是使用iptables-persistent
(即
sudo ufw reload
sudo netfilter-persistent save