Windows の OpenVPN プロファイルが Ubuntu で失敗する: 三つの層
プッシュされた Windows 専用の行は警告にすぎません。同じプロファイルが端末から失敗するのは、まず権限の問題、次にリゾルバ補助プログラムの不在によるものです。
同じプロファイルを端末から起動すると、多くの人がコピーするメッセージは警告であり、クライアントが停止した理由ではありません。ここでは、Linux ビルドが実装していないプッシュされたディレクティブ、tun デバイスの作成に必要な権限、接続を機能する DNS に変えるリゾルバ補助プログラムという三つの独立した層が失敗します。それぞれが次の層を隠す可能性があるため、順に片付けてください。
新しくダウンロードすると変更が黙って元に戻るため、ダウンロードは届いたまま保存し、コピーを編集してください。
責める前に警告を読む
block-outside-dns は Windows のフィルタリング プラットフォームを通じて DNS を固定しますが、Linux クライアントには対応させるものがありません。プッシュされたオプションは致命的とはみなされないため、サーバーがこれをプッシュすると、クライアントはそのプッシュされた項目について不明なオプションの行を出力して続行します。しかし 自分のファイルにある同じ行 は別の話で、そこではパーサーが停止します。実行を終わらせるのは片方だけなので、何かに触れる前にどちらなのかを判断してください。
ノイズを消すには、その名前に対する pull-filter ignore の項目、または行がローカルファイルにある場合は --ignore-unknown-option を解析の前に使います。どちらも、すでに読んだ行を黙らせるだけで、診断していない不具合を直すものではありません。
権限が何よりも先に失敗する
tun デバイスとそれに伴うルートは特権を持つオブジェクトで、通常のアカウントでは作成できません。--user オプションがこの分担を説明しており、デーモンは特権作業が終わった後にだけ特権を手放します。root として、またはそのように起動する unit を通して起動し、証明書を見る前に権限エラーを探してください。プロファイルのファイル権限を緩めても、プロセスに足りない権限は与えられません。
TLS エラーは、クライアントがこの層を通過したことを意味します。デバイスやルートの苦情は、上の層にまったく届かなかったことを意味します。
GUI がして端末がしないこと
すべての名前解決が失敗したまま接続だけ成功するのが三つ目の層です。NetworkManager は独自にリゾルバの処理を行うため、プロファイルの up スクリプトが一度も成功していなくても、デスクトップからのインポートが DNS を配れます。openvpn --config コマンドは --up が指定するものを実行し、その補助プログラムがないと、インターフェースは現れるものの問い合わせは以前のサーバーに送られ続けます。何かをインストールする前に、二つの経路のスクリプトを比較してください。
ブログ記事からコピーしたスクリプトは通常別のリゾルバを対象にしているため、使っているディストリビューションのパッケージ版補助プログラムを使ってください。systemd-resolved 向けに提供される連携は汎用の vpnc 形式のスクリプトではなく、それぞれがクライアントから独自の引数と変数を期待します。ユーザー定義の up スクリプトも、クライアントが実行する前に script-security 2 を必要とします。
次の実行で層を切り分ける
--verb 4 を付けて一度実行し、デバイスの作成、ルート、TLS ハンドシェイク、そして up スクリプトの出力という順にログを読んでください。その順序で最初の失敗が直す価値のあるもので、その後はたいてい結果にすぎません。リゾルバが機能しないままトンネルが確立すると三つ目の層にいることになり、証明書は無関係です。比較している間は、ダウンロードしたプロファイルをそのままにしてください。
運用者の調整のたびに拒否される行が増えるなら、そのファイルは別のプラットフォーム向けです。恒久的なフィルター一覧を作るのではなく、Linux 向けのエクスポートを依頼してください。
同じファイルを渡された次の人も警告で止まってしまうため、どの層が失敗し、何がそれを変えたのかを記録してください。