OpenConnect のプロトコル選びは照合の作業であり、ブランド名を探すことではありません。ログイン画面に Juniper とあるゲートウェイが提供するのは Network Connect、Pulse、またはその両方で、クライアントの既定値はどちらでもありません。推測するとログインに失敗し、さらに悪いことに、プロトコルの不一致を認証情報のせいにするサポートスレッドが生まれます。プロファイルにホスト名を入力する前に、サービスを確認してください。

OpenConnect は古いプロトコルを nc、新しいほうを pulse と呼び、どちらも同じバイナリにあります。選ぶフラグが変えるのはログインのやり取りであり、接続成功後のルーティングではありません。

二つのプロトコル名は一つの製品史を共有しています

Juniper の Network Connect と後発の Pulse Secure クライアントは、一つの機器ファミリーが時代とともに提供してきた別々のプロトコルです。OpenConnect は前者に nc ハンドラ、後者に pulse ハンドラを備えました。別々のコード経路と別々のリクエスト形式であり、片方への対応はもう片方について何も語りません。

違いはログインの会話にすぐ現れます:エンドポイント、フォームの項目、拒否された二要素目をクライアントが報告する方法が、二つのハンドラで異なります。

コマンドラインでの選択は一語の変更です:Network Connect なら openconnect --protocol=nc vpn.example.com、Pulse なら openconnect --protocol=pulse vpn.example.com。どちらの試行も実際の接続試行であり、ルートと DNS を再設定しうるので、意図して実行してください。プロトコルエラーを避けるためにコマンドラインへパスワードを置いたり証明書の検証を切ったりすることは、不一致を直すのではなく隠すことになるので、しないでください。クライアントが何を送るか見たい場合は、--dump-http-traffic がやり取りを出力し、通常はゲートウェイが期待するハンドラを特定できます。

プロトコルをゲートウェイが提供するものに合わせる

機器は設定されているプロトコルにしか応答しません。Pulse 専用のサービスは有効な認証情報でも nc ログインを拒否し、古い Network Connect サービスには応答する pulse エンドポイントがありません。どのプロトコルが有効か、どのクライアントをサポートするかを管理者に尋ねてください。改名された機器、古い wiki ページ、見慣れた Web ポータルはいずれも弱い証拠です。

プロトコルが分かったら、周辺の要件を確認します:証明書またはトークンによる認証、認証グループの選択、エンドポイントのコンプライアンス検査です。これらがコマンドラインのクライアントでログインを完了できるかを決めます。

認証はプロトコルより先に疑問を解決することがあります

配備によっては、クライアント証明書、ブラウザ経由の SAML 往復、アクセス許可前にマシンを検査するホストチェッカーを要求することがあります。OpenConnect の pulse ハンドラはこうした流れの一部について互換性の限界を記録しており、nc ハンドラにも独自の不足があります。ブラウザで通るパスワードはアカウントが有効な証拠ですが、任意の CLI やデスクトッププラグインが同じ手順を完了できる証拠ではありません。ホストチェッカーが関わる場合、クライアントには管理者が用意するラッパースクリプトが必要です。それがなければログインは最初の応答の後で止まり、プロトコルの失敗に見えますが、実際にはコンプライアンス手順の欠落です。

認証グループの選択もよくあるつまずきどころです:複数のグループを持つゲートウェイは、クライアントが一つを指定することを期待します。

コマンドラインでは --authgroup="Employees" がその選択を与え、省くとアカウントを拒否する既定グループにセッションが入ることがあります。証明書を使う場合、--certificate がクライアント証明書と鍵を指し、その後もゲートウェイがトークンを要求することがあります。周囲を自動化する前に、詳細出力で手順全体を一度試してください。

デスクトップのフロントエンドが選択を表現できない場合

グラフィカルなフロントエンドは独自の機能セットを持ち、古いプラグインは必要なプロトコルより前のものかもしれません。NetworkManager の OpenConnect 連携は選択を接続データに保存するため、nmcli connection modify "Office VPN" vpn.data "protocol=pulse" でエディタが表示しない値を設定できます。編集が反映されたと判断する前に、インストール済みのプラグイン版がそのキーに対応しているか確認してください。

メニューが PPTP か L2TP しか出さない場合、一方を選んでも Pulse サービスがそのプロトコルに変わるわけではありません。メニューがたまたま並べるものに切り替えるのではなく、承認された連携を導入してください。

ログインがまだ失敗するときに記録すること

四つを記録します:選んだプロトコル、クライアントとプラグインの版、想定していた認証フロー、タイムアウトではなくステータスコードで返った最初のエラーです。この組が、誤ったハンドラを、証明書の欠落、拒否された認証グループ、遮断されたコンプライアンス検査から切り分けます。詳細出力も、症状だけでなく失敗したリクエストを示すという同じ理由で残す価値があります。

成功したら、動くコマンドまたはプロファイルをゲートウェイ名のそばに残してください。さもなければ次に接続する人が、同じブランド対プロトコルの推測を繰り返します。

関連記事