Windows 10 常時接続と Fortinet

こんにちは、私たちは常時接続用のVPNを立ち上げているところで、既に解決しようとしている珍しい障害に直面しています。Windows 10 VPNクライアントの設定は簡単にできるのですが、接続にPSKを設定する必要があり、これはWindows 10がIKEv2接続にはサポートしていません。

PSKを不要にし、Microsoftの認証スタックを利用して認証をユーザーに透過的に処理させるようにしたいと思っていました。ですが、現状、設定からフェーズ1の認証を削除できない状況にあるようで、私は専門家ではありません。

誰か常時接続のバックエンドを設定した経験はありますか?暗号交渉の部分は既に解決済みで、FortigateがなぜPSKを要求するのか理解できていません。

これは少し長くて密度が高いですが、参考になれば幸いです。

FortiOS 6.2デバイス(Win 10ユーザートンネル)の例:

FortiOS CLI

Windows 10関連:

デバイステunnelについて考慮すべき点:

Windows 10でデバイストンネルの状態を有効にする:

名前解決ポリシーテーブル:

https://serverfault.com/questions/925901/windows-10-always-on-vpn-split-dns-nrpt-and-how-to-configure-which-dns-server

トラブルシューティング:

クライアント情報:

デバイストンネルVPN接続の状態を取得

Get-VpnConnection -AllUserConnection

VPNトンネルが存在するかどうかは、GUIのネットワークアダプタ一覧を見るとわかります。ネットワークアダプタとして表示されます。GUI経由でアダプタの設定を変更しないでください。

サービス’IKE and AuthIP IPsec Keying Modules’ (IKEEXT)は、VPNが動作するために自動起動に設定しておく必要があります。このサービスはしばしば無効になっています。アップデート後や月次パッチ適用後に手動や無効に戻されていることもあります。したがって、GPOで自動起動に設定することが推奨されます。

Set-Service -Name "IKEEXT" -StartupType Automatic

Start-Service -Name "IKEEXT"

Get-Service -Name "IKEEXT"

PowerShellモジュールが必要で、これを使ってシステムユーザとしてVPNをインストール/更新します(psexecを使わずに)。

Install-Module -Name Invoke-CommandAs

VPN接続を作成または上書き:

Invoke-CommandAs -ScriptBlock {c:\AOVPN\New-AovpnDeviceTunnel.ps1 -xmlFilePath c:\AOVPN\AOVPN.xml} -AsSystem

デバイストンネルVPN接続を手動で削除:

rasdial.exe "Always On VPN Device Tunnel" /disconnect

Remove-VPNConnection -Name "Always On VPN Device Tunnel" -AllUserConnection -Force -PassThru

デバイストンネルをGUIで見えるようにするにはレジストリキーを追加:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Flyout\VPN]
"ShowDeviceTunnelInUI"=dword:00000001

常時接続VPNの修復(デバイステンネル含む)と状況確認:

Write-Host "IKEEXTサービスの修復"
Set-Service -Name "IKEEXT" -StartupType Automatic
Start-Service -Name "IKEEXT"
Get-Service -Name "IKEEXT"
Write-Host "レジストリキーをインポートしてVPNをタスクバーの接続リストに表示"
reg import "C:\AOVPN\VPNStatusForUser.reg"
Write-Host "AutoTriggerDisabledProfileListレジストリキーを確認し、必要なら削除"
$regkeypath="HKLM:\SYSTEM\CurrentControlSet\Services\RasMan\Config"
$regkeyitem="AutoTriggerDisabledProfilesList"
$regkeyvalue="Always On VPN Device Tunnel"
$value1 = (Get-ItemProperty $regkeypath).$regkeyitem -eq $regkeyvalue
If ($value1 -eq $False) {Remove-ItemProperty -Path $regkeypath -Name $regkeyitem}
Else {Write-Host "値は存在しません"}
Write-Host "他のスクリプトとともにこれらの設定をリセットします。"
pause
Write-Host "全NICのIPv4, IPv6, Winsock設定をリセット"
netsh int ip reset
netsh int ipv6 reset
netsh winsock reset
pause

追記:約束した内容の一部を追加しました。