OpenVPN Connect と OpenVPN GUI:Windows がプロファイルを保存する場所
二つの Windows クライアント、二つのプロファイルモデル。GUI はフォルダー内の .ovpn ファイルを一覧表示し、Connect はインポートストアを保持します。その後、正しく削除またはインポートしてください。
Windows では「自分の OpenVPN プロファイルはどこにあるのか」に 二つの異なる答えがあり、間違った方を選ぶと半日が台無しになります。コミュニティ版 OpenVPN GUI はディレクトリをプロファイル一覧として扱います。設定したフォルダー内のすべての .ovpn ファイルがトレイメニューに表示され、そのフォルダーから削除したファイルは消えます。OpenVPN Connect はインポートストアから動作するため、ディスクから削除したプロファイルを保持し、コピーしたファイルは無視します。以下の比較は、何かに触れる前にどちらのフォルダーを開くかを決めるために私が使っているものです。
フォルダー一覧とインポートストア
コミュニティ版 GUI は起動時にファイルを列挙します。インストール時に選んだ 一つの設定ディレクトリを読み込み、そこにある .ovpn ファイルがプロファイルです。クライアントを閉じ、そのフォルダーにファイルをコピーし、再度起動すると、項目がメニューに表示されます。
Connect は代わりに、インポート時に書き込んだレコードから一覧を構築します。そのためコピーしたファイルは表示されず、インポートしたプロファイルは元のダウンロードを削除しても残ります。この 一つの違いが、二つのクライアントがプロファイルを別の場所に保存するという報告のほとんどを説明します。実際にそうだからです。
コミュニティ版 GUI:実際に使われるフォルダー
重要なフォルダーは 二つです。ユーザーごとのインストールは %USERPROFILE%\OpenVPN\config を読み、全ユーザーのインストールは C:\Program Files\OpenVPN\config、クライアントが 32-bit の場合は x86 のパスを読みます。プロファイルが 一つの Windows アカウントにしか表示されない場合、それはユーザーごとのフォルダーにあり、もう一方のアカウントからは決して見えません。
インストーラーからパスを推測しないでください。GUI は --config_dir 引数を受け付け、起動時のディレクトリを記憶するため、ショートカットがまったく別の場所を指していることがあります。ファイルを作成する前に、ショートカットのターゲットと Start in フィールド、または GUI の設定を確認してください。
削除とはファイルの削除です。まず GUI を閉じてメモリ内に項目を保持させないようにし、.ovpn をその隣に置かれた証明書やキーのファイルと一緒に削除してから、クライアントを再度起動します。
全ユーザーのフォルダーには管理者権限での削除が必要です。そこで何も起きない削除は UAC のせいであり、クライアントの不具合ではありません。
Connect:インポートストアと二重の AppData の罠
現在の 2.x と 3.x のビルドは %APPDATA%\OpenVPN Connect\profiles にプロファイルを保存します。2.5 前後のビルドは代わりに %ProgramFiles(x86)%\OpenVPN Technologies\OpenVPN Client\etc\profile を使っていたため、古いフォーラムの回答と新しい回答が矛盾して見えます。その場でアップグレードしたマシンには両方が残っていることがあります。
パスは語り直されるうちに崩れます。%AppData% はすでに AppData\Roaming に解決されるため、%AppData%\Roaming\OpenVPN Connect\profiles と書くと AppData\Roaming\Roaming に展開され、どこも指しません。変数かリテラルのパスのどちらかを使い、両方を混ぜないでください。
クライアント経由で削除します。Profiles を開き、鉛筆アイコンを使って Delete を選びます。これでレコードと保存されたコピーが一緒に削除されます。Connect の実行中にフォルダーを削除すると、何も開かないレコードが残ることがあり、これが「profile still shows up」という苦情の別の形です。
インポートされたコピーがクライアントの実行するものです。Downloads に残った .ovpn を編集しても何も変わりません。Connect は保存されたコピーを読むからです。remote や cipher を変えるには、クライアント内でプロファイルを編集するか、ファイルを編集して再インポートしてください。
削除したプロファイルが戻ってくる理由
同じクライアントファミリーの 二つのインストールがよくある理由です。ユーザーごとの GUI と全ユーザーの GUI は別々の設定ディレクトリを持つため、片方から削除してももう片方は無傷で、トレイにはまだ名前が表示されます。両方がインストールされているかは Programs and Features で確認します。
二つ目の理由は、確認したフォルダーに一度もなかったプロファイルです。ネットワーク共有や Downloads フォルダーから .ovpn を一度開くと、ユーザーごとの設定ディレクトリにコピーされることがあり、インポートされた Connect プロファイルは AppData にしか存在しません。何かを編集する前に、%USERPROFILE% と %APPDATA% の両方でファイル名を検索してください。プロファイルのフォルダーには通常 .ovpn の隣に秘密鍵があるため、どのプロファイルを削除したかを証明するためにフォルダーをチケットやチャットに貼り付けないでください。代わりにファイル名とタイムスタンプを記載します。
古い GUI のビルドはクライアントの設定をレジストリにも保存します。ファイルが消えた後もトレイに名前が表示され、インストールが 一つしかない場合は、クライアントを一度再起動し、レジストリキーに触れることを検討する前にショートカットの設定ディレクトリを再確認してください。
二つのトンネルを同時に:まずアダプター、次にルート
GUI は複数の接続を保持でき、仮想アダプターごとに 一つです。TAP-Windows6 をインストールする Start メニューの項目からアダプターを追加し、Network Connections で数を確認してください。同時に 二つのトンネルを動かすには 二つのアダプターが必要で、どちらも自動的にアドレスを取得する必要があります。ルーティングの方が難しい制限です。すべてのトラフィックをリダイレクトする 二つのプロファイルは既定のルートを争い、所有できるのは 一つだけなので、二つの動作するトンネルではなく断続的な失敗が発生します。一つのフルトンネルを維持し、二つ目には自分のサブネットだけをプッシュする split-tunnel プロファイルを割り当ててください。
重複するプライベート範囲はアダプターを追加しても修正できません。両方のサーバーが 10.8.0.0/24 を配布すると、二つ目のトンネルはアドレスレベルで衝突し、どんなクライアント設定でもそれらを分離できません。
アダプター名を見れば何を見ているかがわかります。PowerShell の Get-NetAdapter は TAP-Windows アダプターと Wintun アダプターを名前で一覧表示します。トンネルが間違ったアダプターで上がったときに Network Connections でアイコンを数えるより速い方法です。
スクリプトから名前付きプロファイルを起動する
GUI はプロファイル名を設定ディレクトリからの相対で受け取るため、ランチャーは次のようになります: "C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --connect "myvpn.ovpn"。絶対パスや、別の作業ディレクトリで起動したプロセスは静かに失敗します。そのため、ダブルクリックで動くショートカットが Task Scheduler の下では壊れます。
期待するのではなく作業ディレクトリを設定してください。AutoHotkey のランチャーでは SetWorkingDir, C:\Program Files\OpenVPN\config、Task Scheduler ではアクションの Start in フィールドです。同じパスで --config_dir を渡せば、ランチャーはどちらにも依存しません。
終える前にプロファイルをエクスポートし、そのアダプター、サブネット、ルーティングするサブネットを記録し、各顧客の証明書をそれぞれのサブフォルダーに保管してください。次に、フォルダーが実際に実行しているクライアントのものであることを確認し、そのクライアントにインポートストアがある場合はクライアント経由で削除します。この順序で行うことが、次回の再起動後に同じプロファイルが再び現れるのを防ぎます。