Overview (EN): A macOS tool that turns the public VPN Gate academic relay directory into a ready-to-use OpenVPN connection. A Python CLI fetches the official CSV API, ranks public relays by latency/throughput/score, decodes each server's OpenVPN profile into a local
.ovpn, and (optionally) connects viaopenvpn. A SwiftUI menubar app wraps the CLI for one-click use. It stores no credentials and discards configs that embed authentication. Useful for anyone who wants a quick, scriptable way to test geographic routing or reachability through VPN Gate's free public servers. Status: stable.
VPN Gate Academic Experiment の公式CSV APIを使い、指定国の公開中継サーバー候補を取得して、OpenVPN用 .ovpn を自動生成する macOS 向け Python CLI です。
初期段階では接続エンジンを優先し、デフォルトでは接続せず .ovpn 生成まで行います。CLI に加えて、ワンクリック操作用の SwiftUI メニューバーアプリ (mac-app/) を同梱しています。
- 公式CSV API
https://www.vpngate.net/api/iphone/を使用 - HTMLスクレイピングなし
OpenVPN_ConfigData_Base64をBase64デコードして.ovpnを生成CountryShortによる国コード絞り込みPingが小さく、SpeedとScoreが高い候補を優先--prefer-tcp-443と--prefer-udpに対応--candidate-timeoutで1候補あたりの接続試行秒数を制限- 生成ファイルは
generated/、ログはlogs/に timestamp 付きで保存 - デフォルト動作は dry-run 相当
- macOS
- Python 3.9 以上
- OpenVPN 実接続時のみ
openvpnコマンド
Homebrew を使う場合:
brew install openvpn確認:
openvpn --versionmacOS では openvpn 実行時に sudo が必要な場合があります。
OpenVPN 2.5以降では、VPN Gate 側が AES-128-CBC を使うサーバーに対して data-ciphers 系の追記が必要になる場合があります。本ツールは .ovpn 生成時に互換設定を不足分だけ自動追加します。
利用可能な国コード一覧:
python3 vpngate_connect.py --list-countries米国候補の取得と .ovpn 生成:
python3 vpngate_connect.py --country US日本候補を10件表示:
python3 vpngate_connect.py --country JP --top 10TCP 443 を優先:
python3 vpngate_connect.py --country US --prefer-tcp-443このオプションは TCP 443 候補を「優先」するだけで、UDP 候補を除外しません。
UDP を優先:
python3 vpngate_connect.py --country US --prefer-udp接続まで実行:
sudo python3 vpngate_connect.py --country US --connectHomebrew の OpenVPN を Apple Silicon Mac で確実に使う場合:
sudo python3 vpngate_connect.py --country KR --top 10 --connect --openvpn-path /opt/homebrew/sbin/openvpn1候補が内部再試行ループで止まり続けないようにする例:
sudo python3 vpngate_connect.py --country KR --top 10 --connect --openvpn-path /opt/homebrew/sbin/openvpn --candidate-timeout 20--connect を明示指定しない限り、接続は行いません。--dry-run は明示用オプションで、現状のデフォルト動作と同等です。
実接続前に、生成された .ovpn の内容を確認してください。
- OpenVPN ログに
Initialization Sequence Completedが出れば、OpenVPN 接続成功と判断できます。 - VPN 側の IPv4 を厳密に確認する場合は、
curl -4 https://ifconfig.meを使ってください。 - 通常の
curl https://ifconfig.meでは IPv6 アドレスが返る場合があります。 - IPv4 の疎通確認をVPN経由に限定したい場合は、
curl -4を使って確認してください。 - 実測では、JP サーバー接続時に
curl -4 https://ifconfig.meが VPN Gate 側 IPv4 を返し、OpenVPN 接続成功を確認できました。
- 生成された OpenVPN 設定:
generated/*.ovpn - 実行ログ:
logs/run_YYYYMMDD_HHMMSS.log
既存ファイルは上書きせず、timestamp 付きファイル名で新規保存します。
- VPN Gate はボランティア提供サーバーなので、接続安定性にばらつきがあります。
- VPN Gate にはログ保存ポリシーがあるため、機密情報の送受信には向きません。
- 国や地域によっては、VPN利用に法的制限がある可能性があります。
- 本ツールは合法的な接続確認、地域表示確認、研究・検証用途を想定しています。
- 接続できない場合は、別候補へ切り替える必要があります。
- macOS で
openvpn実行にsudoが必要な場合があります。 sudo実行時は PATH が消えることがあるため、本ツールは/opt/homebrew/sbin/openvpnなどの既知パスも自動探索します。- KR / US などは TCP / UDP や死活が不安定なため、複数候補を短時間で試す必要があります。
- パスワードや認証情報はコード内に保存しません。
- 生成前に
auth-user-passなどの認証ディレクティブを検査し、埋め込み認証情報を含む設定は保存対象から除外します。 auth.txtは現段階では自動生成しません。- ログには過剰な機密情報、IP確認結果、認証情報を保存しません。
- メニューバーアプリ (
mac-app/) は CLI をラップする補助 UI で、主たる検証対象・第一の動作経路は CLI です。 --connect実行時の自動再接続制御は最小限で、候補切替の土台だけを実装しています。- 接続成功判定は
openvpnの終了コードに依存します。 - IPv6 通信は VPN を通らず、そのまま外部へ出る可能性があります。
- IPv6 無効化オプションの追加
- IPv6 リーク警告機能の追加
安定版 / 完成版 (stable)。CLI と macOS メニューバーアプリ (mac-app/) の双方が動作します。
公開リポジトリには、以下は意図的に含めていません(.gitignore で除外):
- 生成済みの
.ovpn設定ファイル (generated/*.ovpn) — VPN Gate が配布する共有証明書を含むため、実行時に各自で生成してください。 - 実行ログ (
logs/*.log) — 接続先 IP などのローカル実行記録を含むため。 - ビルド成果物 (
mac-app/.build/,mac-app/VPNGateOneClick.app/,*.zip)。 - 秘密情報・認証情報の類 (本ツールは認証情報をコードに保持しません)。
接続先サーバー情報は固定で同梱しておらず、すべて実行時に VPN Gate 公式 API から取得します。
- 本ツールは VPN Gate の匿名公開中継サーバーを利用します。VPN Gate にはログ保存ポリシーがあるため、機密通信には使用しないでください。
- パスワード・認証情報はコードにも生成ファイルにも保存しません。
auth-user-passなどの埋め込み認証ディレクティブを含む設定は保存対象から除外します。 - 国・地域によっては VPN 利用に法的制限がある場合があります。合法的な利用に限定してください。
- 実接続 (
--connect) はsudoを要する場合があります。実行前に生成された.ovpnを確認してください。
MIT License — LICENSE を参照。
本ツールは VPN Gate Academic Experiment Project(筑波大学)の公開 API を利用しますが、本プロジェクトは VPN Gate / 筑波大学とは無関係の独立した非公式ツールです。VPN Gate の利用は同プロジェクトの利用規約に従ってください。
個人による研究・検証目的で開発した OpenVPN 設定生成・接続補助ツールです。商用提供を前提としません。