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

知道為什麼會發生這種奇怪的行為嗎?

相關內容