まずは具体的な設定方法と動作を...
具体的な設定方法の前に、What's New in Windows 8.1(http://technet.microsoft.com/en-us/windows/dn140266.aspx) によると、Auto-triggered VPN はこういう機能です。
"When you select an app or resource that needs access through the inbox VPN – like a company’s intranet site – Windows 8.1 will automatically prompt you to sign in with one click. This feature will be available with Microsoft and third-party inbox VPN clients."
Windows 8 の場合は、VPN 接続を必要とする場合、以下のように数ステップの面倒な操作が必要でした。Auto-Triggered VPN は、VPN 接続を必要とするときにトースト通知してくれ数クリックで開始できます。資格情報を保存してあれば、自動接続してくれます。
(注! これ↑は Windows 8)
では、本題です。
Windows 8.1 Preview の[PC の詳細設定]の[ネットワーク]から VPN 接続を作成します。コントロールパネルの[ネットワークと共有センター]から VPN 接続を作成しても OK。資格情報 (ユーザー名とパスワード) を保存すると、自動接続してしまって分かりにくいので、今回は敢えて空欄にします。
ちなみに、Auto-Triggered VPN は "third-party inbox VPN clients." もサポートされるということですが、Windows 8.1 Preview は CheckPoint、SonicWALL、F5 の VPN クライアントを標準でサポートしています。これらの VPN 接続に対しても、Auto-Triggered VPN を設定できるということだと思います。
続いて、PowerShell のコマンドレット (http://technet.microsoft.com/en-us/library/jj554820(v=wps.630).aspx) を使って、VPN プロファイルにトリガーを設定します。
VPN プロファイルに DNS サフィックスのトリガーを追加します。xxx.xxx.xxx.xxx は VPN 接続後に参照するリモート ネットワークの DNS の IP アドレスです。
Add-VPNConnectionTriggerDNSConfiguration -ConnectionName MyVPN -DNSSuffix demo.contoso.com -DNSIPAddress xxx.xxx.xxx.xxx
(※このコマンドで Add-VPNConnectionTriggerTrustedNetwork -ConnectionName MyVPN -DNSSuffix demo.contoso.com の設定もしてくれる)
Add-VPNConnectionTriggerDNSConfiguration さんが言うには Auto Triggering が動作するには VPN 接続で Split Tunneling が有効になっている必要があるそうなので、有効化します。
Set-VPNConnection -ConnectionName MyVPN -SplitTunneling $true
ストア (WinRT) アプリやデスクトップ アプリの開始と同時に VPN 接続を開始したい場合は、VPN プロファイルにアプリケーション ID をトリガーとして追加します。次の例はコマンド プロンプト (cmd.exe) とリモート デスクトップ アプリ (Get-AppxPackage で PackageFamilyName を調べて指定) をトリガーに設定しています。なお、DNS サフィックスのみで VPN 接続開始を行う場合はアプリケーションのトリガー設定は不要です。
Add-VPNConnectionTriggerApplication -ConnectionName MyVPN -ApplicationID "C:\Windows\System32\cmd.exe", "Microsoft.RemoteDesktop_8wekyb3d8bbwe"
cmd.exe を実行して、"VPN 接続 (MyVPN) にはサインイン情報が必要です" とトースト通知がポップアップすれば大成功。
リモート デスクトップ アプリからやってみると、こんな感じ。
アプリケーション トリガーを設定すると、ストア アプリやデスクトップ アプリを開始した時点で VPN 接続を開始しようとしますが、アプリケーション トリガーを設定しない場合やトリガーに設定していないアプリケーションの場合、アクセス先の DNS サフィックスに基づいて VPN 接続を開始しようとします。 例えば、こんな感じ。
ちなみに、DNS サフィックスのトリガーを設定しなくても、アプリケーション トリガーだけでも動きました。
・・・ うまくいかない場合の原因と対策 ・・・
さて、昨日はうまくいかなかった Auto-Triggered VPN でしたが、ローカルの DNS 環境を設定していなかったのが原因の 1 つのようでした。手っ取り早く VPN 環境を準備するために、DNS サーバーの無いネットワークで試していましたが、ローカルの DNS が使えないと、DNS サフィックスによるトリガーが引かれないようです。
DNS サフィックスのトリガーを登録すると、名前解決ポリシー テーブル (NRPT、これまでは主に DirectAccess や DNSSEC で使われていた仕組み) に規則とポリシーが作成されていました。これを見て、DNS クライアントは VPN 接続をトリガーしているようです。
7/23 追記1) アップグレードした環境は Active Directory ドメイン メンバーという違いがありました。ワークグループ構成に変更したところ、動くようになりましたが、これが正常なのか?
7/23 追記2) 中の人らしき人によると、"Auto-triggering works only on non-domain joined machines in Windows 8.1" だそうです。 ドメイン PC は DirectAccess を使ってねということみたい。アップグレード云々は関係ありませんでした、ごめんなさい。
その後、仕様が変わったようで、最新に更新されたWindows 8.1やWindows 10では、Add-VPNConnectionTriggerDNSConfiguration による DNS サフィックスによる VPN 自動接続はできなくなってしまったようです。代わりに、アプリの自動 VPN 接続を接続中のネットワークによってオフにするために、Add-VpnConnectionTriggerTrustedNetworkを使うようです。
返信削除