久しぶりにADFSの環境を構築しようとして、検証環境でConnect-MsolServiceコマンドレットでWindows Azure Active Directoryに接続しようとしたところ、なぜか以下のエラーが出て接続できない事象が発生するようになりました。
PS C:> Connect-MsolService -Credential $LiveCred Connect-MsolService : 要求チャネルは、応答を待機してから 00:00:59.8905882 後に タイムアウトしました。Request の呼び出しに渡すタイムアウト値を増やすか、Binding の SendTimeout 値を増やしてください。この操作に割り当てられた時間は、より長い タイムアウト時間の一部であった可能性があります。 発生場所 行:1 文字:1 + Connect-MsolService -Credential $LiveCred + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OperationStopped: (:) [Connect-MsolService], Tim eoutException + FullyQualifiedErrorId : System.TimeoutException,Microsoft.Online.Adminis tration.Automation.ConnectMsolService Connect-MsolService : 種類 'Microsoft.Online.Administration.Automation.Microsof tOnlineException' の例外がスローされました。 発生場所 行:1 文字:1 + Connect-MsolService -Credential $LiveCred + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OperationStopped: (:) [Connect-MsolService], Mic rosoftOnlineException + FullyQualifiedErrorId : Microsoft.Online.Administration.Automation.Micro softOnlineException,Microsoft.Online.Administration.Automation.ConnectMsol Service
他の環境から実行したところ特に問題く接続できるので、クラウド側の障害とかでは無さそうに思えます。下の方のレイヤでの障害が疑われるので、とりあえずWireSharkでパケットを追ってみると、何となくそれらしい所が見つかりました。
Connect-MsolServiceでは、まずlogin.microsoftonline.com(実体はlogin.microsoftonline.com.nsatc.net)に接続しに行った後、provisioningapi.microsoftonline.com(実体はprd-provisioning.msods.nsatc.net)に接続しにいくのですが、このprd-provisioning.msods.nsatc.netがAAAAレコードを持っているというところがポイントの様です。
というのも、この検証環境のOSはデフォルトの構成で適当に組んでいるので内部セグメントではIPv6が有効化されており、ドメコン上のDNSサーバで名前解決もできるのですが、ルーターやFirewall、回線はIPv6対応していなく、IPv6でインターネットに向けて通信ができないという、ちょっと特殊な環境です。
ご存じの通り、Windowsでは同一ホスト名に対してIPv4とIPv6の両方で接続ができる場合、IPv6での接続を優先的に試みます。今回、IPv6の通信がタイムアウトで失敗してIPv4にフェールバックされてくる前に、PowerShellの接続モジュールの方が耐えきれなくなってタイムアウトしている…という状況のようです。
…というわけで、IPv6を切ったら何の問題も無く繋がるようになりました。
Office365も段々とIPv6対応してくるサービスが増えてくるようなので、もう少ししっかりIPv6の構成をオンプレでも見直していった方が良いかもしれませんね。
Pingback: Exchange OnlineのIPv6 | 日々徒然