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

时间:2016-12-25 07:06:53

标签: ubuntu server firewall ufw

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

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

4 个答案:

答案 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-persistentsudo apt autoremove

按照:https://github.com/pivpn/pivpn/issues/414

答案 3 :(得分:0)

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

)来持久化ufw规则
sudo ufw reload
sudo netfilter-persistent save