Ubuntu 20.04 上的 UFW OpenVPN 问题

Ubuntu 20.04 上的 UFW OpenVPN 问题

我在 Ubuntu 20.04 上遇到了一个有趣的 OpenVPN / UFW 问题。

我设置了一条规则以允许通过 tun0 传出的流量:ufw insert 1 allow out on tun0 from any to any。 UFW 默认设置为拒绝进出:ufw default deny outgoing& ufw default deny incoming

如果我每次想要连接到 VPN 时都经历以下奇怪的过程,那么我只能在运行 UFW 的情况下通过 tun0 路由流量:

  1. ufw disable(如您所愿,禁用 UFW,以允许 VPN 连接到服务器)
  2. 连接到 VPN(连接成功建立)
  3. ufw enable(重新启用 UFW)-到目前为止,一切如预期 - 现在我希望流量能够通过 tun0 发送出去而不会出现任何问题...但事实并非如此。我现在必须执行以下操作...
  4. 添加一条规则以允许通过任何接口的所有传出连接:ufw insert 1 allow out from any to any
  5. 在任何地方建立连接--例如ping 1.1.1.1这是至关重要的一步——如果没有这个步骤,通过 tun0 的后续连接将会失败
  6. 删除规则 I刚刚添加允许通过任何接口进行所有传出连接(因为这显然不是我们想要的 - 我们的目的是根据现有规则将连接限制到 tun0):ufw delete 1

现在,我能够按预期通过 VPN 隧道建立连接。但是,如果没有步骤 4 和 5,所有连接都会被 UFW 阻止;我无法通过 tun0 进行连接 - 即使设置了明确的 UFW 规则以允许它。

这是我的 UFW user.rules 文件(我也有 SSH 规则):

*filter
:ufw-user-input - [0:0]
:ufw-user-output - [0:0]
:ufw-user-forward - [0:0]
:ufw-before-logging-input - [0:0]
:ufw-before-logging-output - [0:0]
:ufw-before-logging-forward - [0:0]
:ufw-user-logging-input - [0:0]
:ufw-user-logging-output - [0:0]
:ufw-user-logging-forward - [0:0]
:ufw-after-logging-input - [0:0]
:ufw-after-logging-output - [0:0]
:ufw-after-logging-forward - [0:0]
:ufw-logging-deny - [0:0]
:ufw-logging-allow - [0:0]
:ufw-user-limit - [0:0]
:ufw-user-limit-accept - [0:0]
### RULES ###

### tuple ### allow any 22 0.0.0.0/0 any 192.168.0.0/16 in
-A ufw-user-input -p tcp --dport 22 -s 192.168.0.0/16 -j ACCEPT
-A ufw-user-input -p udp --dport 22 -s 192.168.0.0/16 -j ACCEPT

### tuple ### allow any any 0.0.0.0/0 any 0.0.0.0/0 out_tun0
-A ufw-user-output -o tun0 -j ACCEPT

### tuple ### deny any any 0.0.0.0/0 any 0.0.0.0/0 out
-A ufw-user-output -j DROP

### tuple ### deny any any 0.0.0.0/0 any 0.0.0.0/0 in
-A ufw-user-input -j DROP

### END RULES ###

### LOGGING ###
-A ufw-after-logging-input -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
-A ufw-after-logging-output -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
-A ufw-after-logging-forward -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
-I ufw-logging-deny -m conntrack --ctstate INVALID -j RETURN -m limit --limit 3/min --limit-burst 10
-A ufw-logging-deny -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
-A ufw-logging-allow -j LOG --log-prefix "[UFW ALLOW] " -m limit --limit 3/min --limit-burst 10
### END LOGGING ###

### RATE LIMITING ###
-A ufw-user-limit -m limit --limit 3/minute -j LOG --log-prefix "[UFW LIMIT BLOCK] "
-A ufw-user-limit -j REJECT
-A ufw-user-limit-accept -j ACCEPT
### END RATE LIMITING ###
COMMIT

知道为什么会发生这种奇怪的行为吗?

相关内容