楽天モバイル回線でForticlientによるSSL-VPNを行うと、下記の98%の状態で止まり、しばらく待つとエラーメッセージもなく未接続状態に戻ってしまう。

楽天モバイル回線以外でやってみると正常に接続できる。
ちなみに他の回線でも発生する場合はデバイスマネージャのネットワークアダプタにある「WAN Miniport (IP)」をアンインストールし、Windows再起動することで再作成させることで治ることが多いようだ。

楽天モバイルの場合の事例についてぐぐるとIPv6を無効化するといける、という話があるので、そこらへんにヒントがあるな、と調べて見た。
調査方法は SSL-VPN接続先として指定するホスト名の名前解決を調べて見る
C:\> nslookup vpn.domain.local サーバー: Unknown Address: 192.168.43.1 権限のない回答: 名前: vpn.domain.local Address: 64:ff9b::xxxx:xxxx xxx.xxx.xxx.xxx C:\>
IPv6アドレスは設定されていないはずなのにIPv6アドレスの応答があるとは何事???
Google DNSで名前解決を調べて見ると、こちらは想定通りのIPv4アドレスのみの応答となる。
C:\> nslookup vpn.domain.local 8.8.8.8 サーバー: dns.google Address: 8.8.8.8 権限のない回答: 名前: vpn.domain.local Address: xxx.xxx.xxx.xxx C:\>
この設定していないはずのIPv6アドレス「64:ff9b::xxxx:xxxx」が何者なのか調べたところ、NAT64用に予約されているアドレス帯であることが判明。
JPNIC ニュースレターNo.64「NAT64/DNS64」
楽天モバイル網ではIPv6ベースで通信を行うため、IPv4のみの接続先についてIPv6に変換したアドレスを用意している、ということになるようだ。
ただ、FortiClientの実装上それでは都合が悪いようだ。
FortiClientのSSL-VPN接続先のサーバ指定を、サーバ名表記から、IPv4アドレス表記に変更し、「無効なサーバ証明書を非表示」に設定することで接続が完了することを確認した。
「無効なサーバ証明書を非表示」に設定する理由は、SSL証明書はホスト名に対して発行されており、IPアドレスに対しては発行されていないためです。(以前はIPアドレスに対しても発行できたが、現在は禁止されている)