
Ubuntu 20.04 で興味深い OpenVPN / UFW の問題が発生しています。
tun0: 経由の送信トラフィックを許可するルールを設定しています。UFW のデフォルトでは、in と out: & のufw insert 1 allow out on tun0 from any to any
両方が拒否に設定されています。ufw default deny outgoing
ufw default deny incoming
VPN に接続するたびに次のような奇妙な手順を踏むと、UFW が実行中の状態で tun0 経由でのみトラフィックをルーティングできるようになります。
ufw disable
(当然ながら、VPN がサーバーに接続できるようにするには、UFW を無効にします)- VPN に接続します (接続が正常に確立されます)
ufw enable
(UFWを再度有効にする) -これまでのところ、予想どおりです。これで、トラフィックは問題なく tun0 経由で送信されるはずですが、そうではありません。次の操作を実行する必要があります...- 任意のインターフェースを介したすべての送信接続を許可するルールを追加します。
ufw insert 1 allow out from any to any
- どこでも接続を確立します - 例
ping 1.1.1.1
:これは重要なステップです。これがないと、tun0を介したその後の接続は失敗します。 - ルール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
この奇妙な動作が発生する理由について何か考えはありますか?