当ページのリンクには広告が含まれています。
FortiGateへ社外PCから接続する方法の1つが、FortiClientを使ったIPsecリモートアクセスVPNです。この記事では、FortiGate 60F(FortiOS 7.4.9)とMac版FortiClient 7.4.3を使い、IKEv2とEAPユーザー認証でVPN接続し、社内PCへの疎通とログまで実機で確認します。
FortiGateのIPsecウィザードは初期状態でIKEv1を使います。一方、Fortinet公式ドキュメントではFortiClient 7.4.4以降はIKEv1をサポートしないと案内されています。そのため、ウィザードで基本オブジェクトを作成したあと、IKEv2/EAPへ変更する手順まで扱います。
SSL-VPNから移行する方へ
FortiGateのリモートアクセスにはSSL-VPNもありますが、2GB RAMのFortiGate 60Fなどでは、FortiOS 7.6以降でSSL-VPNのWebモード・トンネルモードが利用できません。さらにFortiOS 7.6.3以降では、SSL-VPNトンネルモード自体が非対応となっています。
ただしFortiOS 7.4系や一部の機種では引き続き利用できる場合があります。SSL-VPNが使えるかどうかは、対象機種・搭載RAM・FortiOSバージョンの組み合わせで変わるため、必ず公式資料で確認してください。
- FortiOS 7.6.1 Release Notes(SSL VPN removed from 2GB RAM models for tunnel and web mode)
- FortiOS 7.6.3 Release Notes(SSL VPN tunnel mode replaced with IPsec VPN)
当サイトでは2019年に公開したSSL-VPN設定手順を今後保守しないため、リモートアクセスVPNはこの記事のIPsec手順を案内しています。
すでにSSL-VPNを運用中の環境で移行する場合は、既存のSSL-VPNを先に停止しないでください。設定のバックアップを取得したうえでIPsecリモートアクセスVPNを並行して構築し、疎通とログを確認して利用者を切り替えてから、旧方式を停止する順序が安全です。
今回の検証構成
今回はwan1側のLANをインターネット側に見立て、MacからFortiClientで接続しました。VPN接続後はinternal側のWindows PCへpingし、FortiGateの転送トラフィックログでも往復を確認しています。
| 機器・項目 | 設定値 |
|---|---|
| FortiGate | FortiGate 60F / FortiOS 7.4.9 |
| wan1 | 192.168.10.250/24 |
| internal | 192.168.1.99/24 |
| VPNクライアント | Mac / FortiClient 7.4.3 |
| VPNクライアント割当範囲 | 10.20.30.1~10.20.30.5 |
| 接続先PC | Windows PC / 192.168.1.111 |
IPアドレスは検証例です。実環境では、VPNクライアントの割当範囲がwan、LAN、DMZ、拠点間VPN、社内ルーティング上のネットワークと重複しないことを先に確認してください。
VPNユーザーとユーザーグループを作成する
ユーザ&認証 > ユーザ定義でVPN接続用ユーザーを作成します。続いてユーザ&認証 > ユーザグループを開き、ユーザーグループを作成して先ほどのユーザーをメンバーへ追加します。
- ユーザー名の例:
vpnuser01 - ユーザーグループ名の例:
vpn-group - パスワード:推測されにくい値を設定

IPsecウィザードでリモートアクセスVPNを作成する
1. リモートアクセスとFortiClientを選択する
VPN > IPsecウィザードを開き、次の値を指定します。
- 名前:
remote-vpn - テンプレートタイプ:リモートアクセス
- リモートデバイスタイプ:クライアントベース
- クライアント:FortiClient

2. 認証設定を入力する
着信インターフェースにwan1、認証方式に事前共有鍵、ユーザーグループにvpn-groupを指定します。事前共有鍵は記事や設定資料へ平文で残さず、安全な方法でFortiClient利用者へ共有してください。

3. ポリシーとクライアントアドレス範囲を指定する
ローカルインターフェースにinternal、ローカルアドレスに社内LANのアドレスオブジェクトを指定します。クライアントアドレス範囲には、ほかのネットワークと重複しない10.20.30.1-10.20.30.5を使用しました。
| ローカルインターフェース | internal |
| ローカルアドレス | internal-subnet(192.168.1.0/24) |
| クライアントアドレス範囲 | 10.20.30.1~10.20.30.5 |
| スプリットトンネル | 有効 |
設定確認画面では、Phase1、Phase2、クライアントアドレス、スプリットトンネル用グループ、ファイアウォールポリシーが作成されることを確認して「作成」を選択します。


ウィザードの設定をIKEv2/EAPへ変更する
FortiOS 7.4.9のIPsecウィザードはIKEv1で設定を作成します。FortiClient 7.4.4以降との互換性を考慮し、作成後にIKEv2とEAPへ変更します。CLIコンソールまたはSSHで次の設定を投入します。
config firewall address
edit "remote-vpn_range"
set type iprange
set start-ip 10.20.30.1
set end-ip 10.20.30.5
next
end
config vpn ipsec phase1-interface
edit "remote-vpn"
set ike-version 2
set peertype any
set net-device disable
set mode-cfg enable
set proposal aes128-sha256 aes256-sha256
set dhgrp 20
set eap enable
set eap-identity send-request
set authusrgrp "vpn-group"
set ipv4-start-ip 10.20.30.1
set ipv4-end-ip 10.20.30.5
set dns-mode auto
set ipv4-split-include "remote-vpn_split"
next
end
config vpn ipsec phase2-interface
edit "remote-vpn"
set proposal aes128-sha256 aes256-sha256
set dhgrp 20
next
end
set ike-version 2へ変更した際にモードコンフィグが無効化される場合があるため、set mode-cfg enableとクライアントアドレス範囲を明示しています。事前共有鍵はウィザードで設定済みなので、このコマンドには記載していません。

FortiClientでIKEv2接続を作成する
FortiClient VPNでIPsec VPN接続を作成し、FortiGateと同じ値を指定します。
| リモートGW | FortiGateのwan1側IPまたはFQDN |
| 認証方法 | 事前共有鍵 |
| 認証(EAP) | ユーザー名入力 |
| IKE | バージョン2 |
| オプション | モードコンフィグ |
| Phase1プロポーザル | AES256/SHA256、AES128/SHA256 |
| Phase1 DHグループ | 20 |
| Phase2プロポーザル | AES256/SHA256、AES128/SHA256 |
| PFS / DHグループ | 有効 / 20 |
今回のFortiClient 7.4.3では、IKEバージョンを2へ切り替えたときにプロポーザルがDES/SHA1系へ戻りました。IKEバージョンを変更したあと、Phase1とPhase2の暗号方式・認証方式・DHグループを再確認してください。

VPNへ接続して疎通とログを確認する
FortiClientの接続画面でVPNユーザー名とパスワードを入力し、「接続」を選択します。接続後、VPNクライアントIPとして10.20.30.1が割り当てられました。

Macのルートと社内PCへのpingを確認する
% netstat -rn -f inet | grep 192.168.1
192.168.1 10.20.30.1 UGSc utun8
% ping -c 5 192.168.1.111
PING 192.168.1.111 (192.168.1.111): 56 data bytes
64 bytes from 192.168.1.111: icmp_seq=0 ttl=127 time=6.934 ms
64 bytes from 192.168.1.111: icmp_seq=1 ttl=127 time=9.203 ms
64 bytes from 192.168.1.111: icmp_seq=2 ttl=127 time=4.776 ms
64 bytes from 192.168.1.111: icmp_seq=3 ttl=127 time=4.534 ms
64 bytes from 192.168.1.111: icmp_seq=4 ttl=127 time=4.223 ms
5 packets transmitted, 5 packets received, 0.0% packet loss
VPNイベントを確認する
ログ&レポート > システムイベントを開き、右上のイベント種別を「VPNイベント」へ変更します。tunnel-up、phase2-up、install_saと、ステータスsuccessを確認します。

転送トラフィックログを確認する
ログ&レポート > 転送トラフィックでは、送信元10.20.30.1、宛先192.168.1.111、アプリケーションPING、結果「許可」を確認できました。接続済み表示だけでなく、実際の社内向け通信がポリシーを通過していることまで確認します。

トンネルは接続済みなのに通信できない場合
VPNクライアント範囲が既存ネットワークと重複していないか
今回、最初に指定した10.10.10.1-10.10.10.5はFortiGateのDMZ(10.10.10.0/24)と重複していました。その結果、VPNクライアント向けの動的/32ルートが有効にならず、受信カウンタだけ増えて返信を暗号化できない状態になりました。重複しない10.20.30.1-10.20.30.5へ変更して解消しています。
Phase1とPhase2のプロポーザルが一致しているか
FortiGateのVPNイベントにpeer SA proposal not match local policyと表示される場合は、FortiGateとFortiClientの暗号方式、認証方式、DHグループを比較します。今回の環境ではFortiClient側がDESへ戻っていたため、AES/SHA256とDHグループ20へ揃えると接続できました。
動的ルートと送受信カウンタを確認する
diagnose vpn ike gateway list
diagnose vpn tunnel list name remote-vpn_0
get router info routing-table details 10.20.30.1
version: 2になっているか- EAPユーザーと割当IPが表示されているか
- IKE SAとIPsec SAがestablishedか
10.20.30.1/32 via remote-vpnのルートが有効かdecとencの両方が増えているか
diagnose vpn tunnel listの完全な出力にはIPsec SAの鍵情報が含まれます。画面共有、記事、チケットへ貼る場合は、必要な状態とカウンタだけを抜粋し、鍵情報を公開しないでください。
社内PCのファイアウォールを確認する
VPNトンネルとFortiGateポリシーが正常でも、接続先PCのファイアウォールが別サブネットからのICMPや業務ポートを拒否していると応答は返りません。今回のWindows PCはVPNクライアント範囲からのICMPを拒否したため、疎通証跡の取得時だけVPNポリシーのNATを有効にしました。
本番構成では、必要な送信元とサービスだけを端末側で許可し、VPNクライアントIPをログやアクセス制御に利用できるよう、NATを使わない設計も含めて検討してください。
検証後にVPN設定を削除する
検証用設定を削除する場合は、依存関係の逆順で削除します。ポリシーIDは環境ごとに異なるため、事前に一覧で確認してください。
config firewall policy
delete <VPNポリシーID>
end
config vpn ipsec phase2-interface
delete "remote-vpn"
end
config vpn ipsec phase1-interface
delete "remote-vpn"
end
config firewall addrgrp
delete "remote-vpn_split"
end
config firewall address
delete "remote-vpn_range"
delete "internal-subnet"
end
config user group
delete "vpn-group"
end
config user local
delete "vpnuser01"
end
まとめ
- FortiOS 7.4.9のIPsecウィザードはIKEv1で作成されるため、現行FortiClientを見据えてIKEv2/EAPへ変更する
- VPNクライアントのアドレス範囲は、wan、LAN、DMZ、拠点間ネットワークと重複させない
- FortiGateとFortiClientのPhase1/Phase2プロポーザルとDHグループを一致させる
- 接続済み表示だけでなく、動的ルート、VPNイベント、転送ログ、実通信まで確認する
今回の実機では、IKEv2/EAPでVPN接続し、割当IP10.20.30.1からinternal側PC192.168.1.111へのping、FortiGateのVPNイベントと転送トラフィックログまで確認できました。

コメント