ポータルの URL を貼り付けると openfortivpn のログインが失敗する理由
/ext のようなポータルのパスは realm ではありません。ゲートウェイを host と port で指定し、realm は別に設定し、ホスト名を残して TLS 検証が通るようにします。
この失敗は認証情報の問題に見えます:openfortivpn がパスワードを要求して送信すると、ゲートウェイは拒否を返すか、ログインページへリダイレクトします。そこで利用者はパスワードを打ち直し、ドメイン付きのアカウント名を試し、最後にはブラウザのポータル URL を host 欄に貼り付けます。この最後の一手が、小さな設定ミスを紛らわしい問題に変えてしまいます。
https://vpn.example.com/ext のような Fortinet のポータルアドレスは、複数の情報を同時に含んでおり、そのうち VPN クライアントに属するのは一部だけです。
エンドポイントと realm は別の入力です
openfortivpn は host または host:port の形式のエンドポイントに加えて、アカウントと、配備が使う場合は realm の値を受け取ります。realm はアカウントを評価する前に、どの認証ポリシーを適用するかをゲートウェイに伝えます。これは独立したフィールドであり、クライアントが URL から切り出す接尾辞ではありません。
運用者が realm は ext だと確認している配備では、秘密でない呼び出しは openfortivpn vpn.example.com:443 --username=alice --realm=ext のようになります。同じ値は設定ファイルの host、port、username、realm の項目に入ります。パスワードはどちらの形式にも書かず、シェル履歴や誰でも読めるファイルに残らないよう、クライアントに尋ねさせてください。最初のクライアントがまだトンネルを保持している間の二回目の試行は、realm とは無関係な理由で失敗します。
openfortivpn のマニュアル には両方のオプションが載っているので、サポートに電話する前に正確な綴りを確認できます。ただし、あなたのゲートウェイにどの realm が設定されているかまでは分かりません。
パスのセグメントが自動的に realm になるわけではありません
ポータルの URL は、ホスト名の後にログインアプリケーション、言語セレクター、リダイレクト先、セッション識別子など、さまざまなものを集めています。最後のパスセグメントを切り取って realm と呼ぶ方法は、危険なほど頻繁にうまくいってしまいます。設定された値は運用者に確認するか、組織が配布しているプロファイルから読んでください。
realm は、ユーザー名のドメイン接尾辞や、ゲートウェイが置かれている地域とも同じではありません。配備によっては alice を求め、別の配備は alice@corp を求めるので、どちらを受け入れるかは realm が決めます。誤った realm を補うためにアカウント形式を変えると、たいていは二度目の、より情報の少ない拒否になります。
realm のエラーを host の変更で直さないでください
ホスト名を IP アドレスに置き換えるのは、層を一つ外すように感じられますが、直す以上に壊します。TLS の名前検証は証明書をクライアントが使った名前と比較し、IP アドレスが証明書の SAN に現れることはほとんどありません。サーバー名表示はアドレスとともに変わるため、一つのアドレスで複数のポータルを提供するゲートウェイは間違った方を返すことがあります。認証パラメーターを直す間は、ホスト名と信頼の設定をそのままにしてください。
環境で証明書が信頼されていない場合は、信頼ストアを直すか、想定する証明書を意図的にピン留めしてください。realm のエラーを避けるために検証を切るのは、ログインの問題を静かな傍受のリスクと引き換えにすることです。
拒否されたログインと失敗したトンネルを切り分けてください
認証の失敗とトンネルの失敗は届く時点が異なり、メッセージも違います。名前解決のエラーは TLS ハンドシェイクの前に起こります。TLS の拒否は認証情報を送る前に起こります。realm やアカウントの拒否は、ポータルからの HTTP レベルの応答として返ります。これらの段階を経て初めて PPP のネゴシエーションが始まり、そのときになってようやく ルーティングと DNS の問題 が現れます。
正しい realm は欠けたルートを作りませんし、未対応のサインイン方式を動かすようにもなりません。ポータルがブラウザー経由のフローを求めるなら、パスワード交換を繰り返してセッションが一致することを期待するのではなく、そのフローに対してクライアントが対応している経路を使ってください。
値は次の起動が見つけられる場所に置いてください
接続に成功したら、gateway、port、account、realm をシェルのエイリアスではなく管理されたプロファイルに書き込んでください。リポジトリや構成管理システムに置かれたプロファイルなら、次の起動が別のプロファイルの realm を黙って拾うことはありません。
接続を一つ、最初から最後まで再テストし、適用されたポリシーと、本当に必要なリソースへのアクセスの両方を確認してください。認証の成功はその確認の始まりであって、終わりではありません。