概要(遭遇した問題)
自宅にOpenVPNサーバ機能を搭載するTP-Link製ルータを設置し、旧来よりアクセスポイントとして自宅に設置しつつ外出先から自宅内ネットワークにアクセスするためのVPNサーバとしても利用していた。
最近、リモートアクセス時に利用しているクライアント(OpenVPN GUI)を最新バージョン(v2.6.10)にアップデートしたところ、このVPNサーバに接続できなくなった。この事から原因の調査と解決策の模索をした。
本問題の解決方法(結論だけ知りたい人向け)
TP-Linkルータで生成された .ovpn ファイルをテキストエディタ等で開き、以下のように修正。
client
dev tun
proto udp
float
nobind
- cipher AES-128-CBC
+ data-ciphers-fallback AES-128-CBC
comp-lzo adaptive
resolv-retry infinite
remote-cert-tls server
persist-key
persist-tun
remote 固定IPまたはドメイン名 ポート番号
以下証明書・鍵情報
問題が発生した環境
OpenVPNサーバ:TP-Link Archer AX50(FW:1.0.14 Build 20240108 rel.42655(4A50))
※本TP-LinkルータはRTX1300配下に設置しており、2重ルーティング状態で運用しているが、本問題の根本原因とは無関係であるため、弊家の詳細なネットワーク構成については割愛する。
OS:Windows 11 Pro(23H2)
VPN接続クライアント:OpenVPN(v2.6.10)
問題の再現性
複数の固定回線、モバイルネットワーク、デバイスでテストした結果以下のよう結果となった。
OS | 接続ソフト | 接続環境 | 接続結果 |
---|---|---|---|
Windows11 Pro(23H2) | OpenVPN(v2.6.10) | 固定回線 | 失敗 |
Windows11 Home(23H2) | OpenVPN(v2.6.10) | モバイル回線 | 失敗 |
Windows11 Home(23H2) | OpenVPN(v2.5.5) | モバイル回線 | 成功 |
Android(14) | OpenVPN Connect-OpenVPN App 3.4.1 | 固定回線 | 成功 |
Android(14) | OpenVPN Connect-OpenVPN App 3.4.1 | モバイル回線 | 成功 |
本結果から、OS側の問題やネットワークの問題ではなく接続ソフトウェア側のトラブルと推測された。
エラーログ
2024-04-13 15:26:17 OPTIONS ERROR: failed to negotiate cipher with server. Configure --data-ciphers-fallback if you want to connect to this server.
2024-04-13 15:26:17 ERROR: Failed to apply push options
2024-04-13 15:26:17 Failed to open tun/tap interface
OpenVPNサーバへの接続を開始したところ、サーバへ何度も接続試行しつつ、上記エラーログを出力し続けた。
このログから、ciphers周りで何かエラーが発生していると考えられた。
試行錯誤と接続結果
TP-Link製ルータからエクスポートされた .opvnファイルの内容を以下のように書き換え接続テストを実施し、問題なく接続できるようになったことを確認した。
実施内容 | 接続結果 |
---|---|
data-ciphers AES-128-CBC 行の追加 | × |
--data-ciphers AES-128-CBC 行の追加 | × |
data-ciphers AES-128-CBC 行の追加 data-ciphers-fallback 行の追加 |
× |
data-ciphers-fallback AES-128-CBC 行の追加 | × |
data-ciphers 行の追加 data-ciphers-fallback AES-128-CBC 行の追加 |
× |
data-ciphers AES-128-CBC 行の追加 data-ciphers-fallback AES-128-CBC 行の追加 |
× |
その他多数のパターン | × |
cipher AES-128-CBC 行の削除 data-ciphers-fallback AES-128-CBC 行の追加 |
〇 |
調査して判明した事
本事象はOpenVPN 2.6系になってからのOpenSSL 3.0 の機能変更に伴うエラーだと考えられ、先述したようにOpenVPNの接続用コンフィグの内容を書き換える事により回避が可能である。
まとめ
今まで接続できていた、TP-Link製ルータ内蔵のOpen VPNサーバに接続できない時、本手法により接続できるようになる可能性がある。しかし本手法は暫定的な回避策であり将来的にこの手法は使えなくなる可能性がある。
根本的な原因解決のため、ルータ機器メーカにはファームウェアアップデート等により、OpenVPNサーバに利用しているライブラリ等を最新のものに更新していただきたい。
最後に
私の知識不足等により間違った記述をしていたり、根本的に間違っている個所等ありましたらお詫び申し上げます。
参考にしたサイト
https://qiita.com/kindlittlebird/items/dfd5f6058fc26e723c44
https://s3b.astro.ncu.edu.tw/~daisuke/notebook/Computer___Network/20230516_00.html
https://www.openvpn.jp/2023/03/29/1445/
https://gri.jp/media/entry/24555