Packetixのオープンソース版、SoftetherVPNでは、以前よりAndroidからSoftehter VPNへの接続方法が書かれています。
Android からの接続方法
SoftetherVPN
ここでは、SoftEther VPN Server (L2TP over IPsec 機能を有効化済み) に対して Android 2.x / 3.x / 4.x から VPN 接続する方法について解説します。
L2TPを使う設定でマニュアルが書かれており、Androidバージョンがかなり古い事が分かります。
今現在でも、iPhoneからのSoftetherVPNへの接続は可能です。
なぜAndroidからの接続ができなくなったのか原因を調査してみました。
AndroidOSが11は、VPNプロトコルはL2TP/IPsecをサポートしていました。しかしAndroid12からL2TPをサポートしなくなりました。
つまり、Android12からは、L2TPでのVPN接続を作成する事ができなくなり、OS標準のアプリケーションではPacketixVPNに接続できなくなったという事です。
OpenVPN接続を利用します。
PacetixVPNサーバには、OpenVPNサーバ互換機能が備わっており、OpenVPNクライアント用サンプル設定ファイル自動作成ツールも準備されています。
OpenVPN クライアントソフトはAndroid アプリで提供されており、上記で作成したクライアント用設定ファイルを利用して接続が可能になります。
OpenVPNクライアント設定用ファイルは、l2とl3の2種類が作成されます。Android端末をクライアントとしてVPNに接続したい場合はl3を利用します。
openvpn_remote_access_l3.ovpn
SoftEtherVPNサーバのOpenVPNサーバ互換機能に対して、Windowsから接続しようとすると、エラーが吐かれて接続ができない。
ログには
open vpn Failed to open tun/tap interface
と記載されています。
原因はOpenVPN 2.6系になってからOpenSSL 3.0 が使われるようになったようで、幾つかの cipher がデフォルトの設定がつかえなくなったらしい。
OpenVPN 接続時 failed to negotiate cipher with server になる
解決方法として設定ファイルに、
data-ciphers AES-128-CBC
を追記したら接続できるようになりました。
Windows11 から、ブリッジモードで接続し、PacketixVPNで接続してきたクライアントにリモートデスクトップできました。
ブリッジモードは tap になります。
# To connect to the VPN Server as a bridging equipment of "Site-to-Site VPN",
# specify 'dev tap'. (Layer-2 Ethernet Bridgine Mode)
dev tap
tap接続はAndroidでやろうとしてもできない。
■ tap形式のトンネルがサポートされていないのはなぜですか?
現時点で、Android VPN APIではtun形式のトンネルしかサポートされていません。これはAndroidプラットフォームの制約です。tapベースのトンネルを使ったプロファイルで接続しようとすると、「現在レイヤー3のトンネルのみサポートされています」というエラーが表示されます。
もしOpenVPN Connectでtap形式のトンネルをサポートして欲しい、ということであれば、ぜひGoogle Androidチームにコンタクトして、VpnService APIがtap形式をサポートするように要望してください。VpnService APIにこの変更が加えられない限り、OpenVPN Connectのような非rootアプリケーションでtap形式のトンネルを利用することは不可能です。
つまり、Androidではtun接続しかできないため、同じ仮想HUB内にあるネットワークのリモートデスクトップサーバにはアクセスできないって事になります。少なくても
VpnHUB01 – Windowsサーバ:PacketixVPNにて接続
しているところに、OpenVPNでWindowsからtun接続しても、Andoridからtun接続しても、通信ができませんでした。
問題の概要:
OpenVPNを使用してtun接続を行うと、同じセグメント内にあるリモートデスクトップサーバにアクセスできないことがあります。
具体的な状況:
問題点:
このように、OpenVPNのtun接続を使用する場合、同じ仮想HUB内にあるリモートデスクトップサーバにアクセスできないことがあるという問題が発生します。これが問題の概要です。
TAPはブリッジ生成に使われ、TUNはルーティングに使われます。
TUNしかサポートしてないので、TUN接続してルーティング設定しないといけないという事になります。
AndroidからPacketixVPNを使ってWindowsサーバにリモートデスクトップ接続する場合、次の手順が必要です:
このように設定することで、リモートデスクトップ接続が可能になります。
この接続方式でしたら、、10.1.1.0/16ネットワークにあるリモートデスクトップサーバにアクセスする事ができました。
同じサーバ上に複数仮想HUBがある場合は、
ユーザ名:ユーザ名@仮想ハブ名
とする事で、接続可能です。
例えば AndroidHUB上にuser01 というユーザを作成した場合は
user01@AndroidHUB
というユーザ名でアクセスします。