近年では、カフェやホテル、空港だけでなく、居酒屋や薬局など、ありとあらゆる所で「フリーWi-Fi」が提供されていますので、外出先でも気軽にWi-Fiを利用する事が可能になりました。
少し時間が空いたタイミングがあると、スマホのパケットを使用せず、高速通信が可能になるので、「フリーWi-Fi」は非常に便利です。
しかし、暗号化されていないWi-Fiや、信頼性の低いアクセスポイントでは、通信内容を盗み見られるリスクがあり、フリーWi-Fiは安全とは言えません。
ささそのような安全性の低い「フリーWi-Fi」を安全に利用する為、「VPN」を利用します。
前回、Windows PCから、FortiGateへの「IKEv2/IPsec」を利用した、リモートVPN接続方法をご紹介しました。
こちらの記事にしておりますので、是非ご参照ください。


ただし、そもそものお話「IKEv2/IPsec」で接続を考えたのには、以下の理由がありました。
「IKEv2/IPsec」で接続を検討した理由
Android OSで利用出来るVPNでは、以下がサポートされなくなった為です。
- 「L2TP over IPsec」は、Android 12以降サポートされなくなりました
- 「IKEv1/IPsec」も、同様にサポートされなくなりました
Android OSの「L2TP over IPsec」サポート外についても、以下記事にしております。是非ご参照ください。


私の利用するスマホはAndroid 16ですが、VPN接続設定を確認してみると、L2TPもIKEv1も利用出来なくなっている事が確認出来ます。


そんな理由で、FortiGateを利用した「IKEv2/IPsec」で接続を試していくことにしたのですが・・
Android OSでは「IKEv2/IPsec」接続は難しい
タイトルでは、「(FortiGate 60F)IKEv2/IPsecリモートアクセスVPN接続設定方法 <Android編>」としておきながら、詐欺のような内容となり、大変恐縮なのですが、
- Android OS標準VPNクライアント
- Android版FortiClinet
上記、いずれを利用した場合も、「IKEv2/IPsec」でのVPN接続を行う事ができませんでした。
Windows PCでは接続する事が出来た事から、同様の設定で、Android OSから接続を行うと、接続に失敗してしまいます。ログを確認すると、
Phase1 Error Reason:「gateway validation failed」
このエラーですが、直訳すると「ゲートウェイの検証に失敗しました」となり、ちょっと意味不明だったので、Microsoft Copilotで確認してみると、以下でした。
Copilotからの回答
Android FortiClient の IKEv2 は以下の仕様です:
❌ PSK + Username/Password(EAP-MSCHAPv2)
→ Android FortiClient は非対応
❌ PSK のみ
→ FortiClient Android は非対応
✔ 証明書ベース(EAP‑TLS)
→ Android FortiClient が唯一サポートする方式
あなたが Windows 用に作った IKEv2-VPN は PSK+ID/Password の EAP-MSCHAPv2 であるため、Android は必ず Phase1 で拒否します。
ログの「gateway validation failed」は、まさにこの状況で発生する典型的なエラーです。との事
Android OSで「IKEv2/IPsec」接続を行う為には、証明書ベースの接続が必要で、別途「サーバー証明書」「CA証明書」が必須です。
「サーバー証明書」はどうにかなりますが、「CA証明書」の準備はたやすくないので、今回は、Android OSでの「IKEv2/IPsec」接続は諦める事としました。
その代わり、FortiClientを使用した、「IKEv1/IPsec」接続 を行っていきたいと思います。
FortiClientを利用した「IKEv1/IPsec」接続
FortiGateへの、VPN設定の流れは以下です。
- VPNユーザーの作成
- VPNウィザード設定
- Proxy Arp設定
1. VPNユーザーの作成
IKEv1/IPsec VPN接続用のユーザーを作成します。
設定手順
① ユーザ&認証 → ユーザ定義を開き、「新規作成」をクリックします


② ユーザ作成ウィザードで、ユーザタイプ → ローカルユーザを選択します。


③ ユーザー名、パスワードを入力し、設定を進め、作成を完了させます。


④ VPN接続用グループを作成し、ユーザをメンバーにします。


2. VPNウィザード設定
FortiGate 60Fで、IKEv1/IPsec VPN設定は、「VPNウィザード」を使用して設定していきます。
① VPN → ウィザードを選択。トンネル名(IKEv1-VPN)、リモートアクセスを選択します。




② VPNトンネル設定を行います。
- VPNクライアントの種類 :FortiClient
- 認証方式 :事前共有鍵
- 事前共有鍵 :任意の文字列
- IKE :バージョン1
- NATトラバーサル:有効
- ユーザー認証方法 :フェーズ1インターフェース。先程作成したIKEv1グループ選択
- DNSサーバ :システムDNSを使う


③ リモートエンドポイント設定を行います。
- リモートエンドポイント
- 割り当てるアドレス:192.168.1.130-192.168.1.139
- サブネット:255.255.255.0


④ ローカルFortiGate設定を行います。
私の環境はちょっと特殊で、FortiGateは、WAN1⇔WAN2間のVirtual Wire Pairでセキュリティ検査を行い、外部とのアクセスは、internalインターフェースからのみ行います。ワンアーム構成となっている為、着信・ローカルインターフェースが同じになっているという事情があります。
- 着信インターフェース :internal
- ローカルインターフェース :internal
- ローカルアドレス :all


⑤ VPNトンネル(IKEv1-VPN)が作成されました。


⑥ Phase1とPhase2のDHグループを変更します。
Android版FortiClientのDHグループ設定が既定値5となっているので、合わせます。




⑥ ファイアウォールポリシーを確認して修正します。
VPNウィザードでVPNトンネルを作成すると、併せて「アドレスオブジェクト」や「ファイアウォールポリシー」が作成されますが、ファイアウォールポリシーを確認すると、何故か、NATが有効化されて作成されますので、ここでNATは無効に変更します。


2. Proxy Arp設定
自宅環境のインターネットGWルーターは、「F660A」です。
これは、NURO光を契約すると送られてくる、レンタルルーターなのですが、機能が少なく、スタティックルートの設定が行えません!!
その為、VPN接続してくる端末にも、自宅LAN内のアドレス(192.168.1.130-192.168.1.139)を割り当てることで、ルート追加をしなくても良いように設計しています。
NURO光レンタルルーターの機能については、以下記事で紹介してますので、宜しければご連絡ください。


その代わり、Proxy Arp設定を行う事で、同一ネットワークアドレスによるVPNアクセスでも、ARP不一致が発生しないようにする必要があります。
① Proxy Arp設定を追加します
以下コマンドを入力します
config system proxy-arp
edit 1
set interface "internal"
set ip 192.168.1.130
set end-ip 192.168.1.139
next
end
以上で、VPN設定は完了です。
Android版 FortiClientでIKEv1 VPNを設定する
「Google Play」より、「FortiClient VPN」をダウンロードし、インストールします。


VPN追加設定
FortiClientのインストールが終了したら、VPN設定を追加していきます。
設定手順
① 「FortiClient VPN」を開き、新規VPNをクリックします


② 新しいVPN接続を作成します
任意のVPN名を入力し、VPNタイプ「IPsec VPN」を選択し、作成をクリックします。


③ サーバ設定を入力します
- Servers :自宅のグローバルIPv4アドレスを入力
- IKE Version :Version1
- 認証方式 :共有キー
- 共有キー :任意の文字列
- ローカルID :空欄
- IKEモード :アグレッシブモード


④ IPsecフェーズ1設定
特に設定変更はしません
⑤ IPsec XAuth設定
FortiGateで作成した、IKEv1用のユーザー名、パスワードを入力します


⑥ IPsecフェーズ2設定
特に設定変更はしません
以上でFortiClientの設定は完了です。


VPN接続の確認
早速、VPN接続を行います。
VPN接続を確認
「接続」ボタンをクリックすると、すんなりVPN接続が完了しました。
IPアドレスもFortiGateで設定した、アドレスレンジから払い出されている事が確認出来ます。


グローバルIPを確認
VPN接続前後、以下のようなサイトをグローバルIPアドレスを確認します。
接続後に 自宅回線のグローバルIPアドレス が表示されており、NURO光回線からアクセスしている事も確認できました。


まとめ
今回は、Android版FortiClientを利用して、 IKEv1/IPsecリモートアクセスVPN を構築する方法を解説しました。
当初は、「IKEv2/IPsec」での接続を想定してはじめましたが、私の知識不足もあり、最終的には、「IKEv1/IPsec」での接続とさせていただきました。
今のところ、私の環境では「IKEv1/IPsec」でも問題なく使用出来る為、しばらくは、この設定で使っていこうと思います。

コメント