2013/07/19

Windows 8.1 Preview > Auto-Triggered VPN (自動 VPN 接続) できました

Windows 8.1 Preview の新機能である Auto-Triggered VPN (自動 VPN 接続?)、やっと成功しました。昨日 1 日かけて試して失敗し続けましたが、今日はすんなりできました。原因と対策は後半で。

まずは具体的な設定方法と動作を...

具体的な設定方法の前に、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 は、PowerShell で設定する以外に、System Center 2012 R2 Configuration Manager (現在、Preview) の VPN プロファイルとしてクライアントに配布することもできるようです。ただし、ConfigurationManager では、DNS サフィックスのトリガーしか設定できないみたいです。アプリケーション トリガーの設定は見当たりません。


・・・ うまくいかない場合の原因と対策 ・・・

さて、昨日はうまくいかなかった Auto-Triggered VPN  でしたが、ローカルの DNS 環境を設定していなかったのが原因の 1 つのようでした。手っ取り早く VPN 環境を準備するために、DNS サーバーの無いネットワークで試していましたが、ローカルの DNS が使えないと、DNS サフィックスによるトリガーが引かれないようです。

DNS サフィックスのトリガーを登録すると、名前解決ポリシー テーブル (NRPT、これまでは主に DirectAccess や DNSSEC で使われていた仕組み) に規則とポリシーが作成されていました。これを見て、DNS クライアントは VPN 接続をトリガーしているようです。

もう 1 つの原因 (だと思うもの) は、Windows 8 から Windows 8.1 Preview にアップグレードした PC だとダメっぽいこと。もう 1 つの原因は、ワークグループ環境では利用できないこと。Auto-Triggered VPN を設定すると、VPN 接続の UI がワイヤレス接続と同じように、自動接続のオプションが追加されます (以下の上の画面)。Windows 8 からアップグレードしたドメイン メンバーの環境だと、Auto-Triggered VPN を設定してもこのオプションが出てきませんでした (以下の下の画面)。私の環境だけの問題かもしれませんが、2 台あるアップグレード環境はどちらもこのとおりでした。最初、この機能を試すのに、アップグレードした PC で奮闘していました。

7/23 追記1) アップグレードした環境は Active Directory ドメイン メンバーという違いがありました。ワークグループ構成に変更したところ、動くようになりましたが、これが正常なのか?
7/23 追記2) 中の人らしき人によると、"Auto-triggering works only on non-domain joined machines in Windows 8.1" だそうです。 ドメイン PC は DirectAccess を使ってねということみたい。アップグレード云々は関係ありませんでした、ごめんなさい。




1 件のコメント:

山市 良 さんのコメント...

その後、仕様が変わったようで、最新に更新されたWindows 8.1やWindows 10では、Add-VPNConnectionTriggerDNSConfiguration による DNS サフィックスによる VPN 自動接続はできなくなってしまったようです。代わりに、アプリの自動 VPN 接続を接続中のネットワークによってオフにするために、Add-VpnConnectionTriggerTrustedNetworkを使うようです。