Ubuntu 20.04 での UFW OpenVPN の問題

Ubuntu 20.04 での UFW OpenVPN の問題

Ubuntu 20.04 で興味深い OpenVPN / UFW の問題が発生しています。

tun0: 経由の送信トラフィックを許可するルールを設定しています。UFW のデフォルトでは、in と out: & のufw insert 1 allow out on tun0 from any to any両方が拒否に設定されています。ufw default deny outgoingufw default deny incoming

VPN に接続するたびに次のような奇妙な手順を踏むと、UFW が実行中の状態で tun0 経由でのみトラフィックをルーティングできるようになります。

  1. ufw disable(当然ながら、VPN がサーバーに接続できるようにするには、UFW を無効にします)
  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 によってブロックされ、明示的に許可する UFW ルールが設定されているにもかかわらず、tun0 経由で接続できません。

これが私の 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

この奇妙な動作が発生する理由について何か考えはありますか?

関連情報