Anycast DNSの概要
- 10/23/2020
- 7 読むべき分
-
- g
- e
適用先:Windows Server(半期チャネル)、Windows Server2016、Windows Server2019
このトピックでは、Anycast DNSがどのように機能するかについて説明します。
Anycastとは何ですか?
Anycastは、それぞれ同じIPアドレスが割り当てられたエンドポイントのグループに複数のルーティングパスを提供する技術です。 グループ内の各デバイスはネットワーク上で同じアドレスをアドバタイズし、ルーティングプロトコルを使用して最適な宛先を選択します。
Anycastを使用すると、同じIPアドレスの背後に複数のノードを配置し、等コストマルチパス(ECMP)ルーティングを使用してこれらのノード間のトラフィックを指示することにより、DNSやHTTPなどのステートレスサービスをスケールすることができます。 Anycastは、各エンドポイントが独自の個別のIPアドレスを持つunicastとは異なります。
なぜDNSでAnycastを使用するのですか?
Anycast DNSを使用すると、DNSクライアントの地理的位置に基づいてDNSクエリに応答するために、DNSサーバーまたはサーバーのグループを有効にすることができます。 これにより、DNS応答時間が強化され、DNSクライアントの設定が簡素化されます。 Anycast DNSは冗長性の余分な層を提供し、DNSサービス拒否攻撃から保護するのに役立ちます。
Anycast DNSの仕組み
Anycast DNSは、Border Gateway Protocol(BGP)などのルーティングプロトコルを使用して、優先DNSサーバーまたはDNSサーバーのグループにDNSクエリを送信することによって: ロードバランサーによって管理されるDNSサーバーのグループ)。 これにより、クライアントに最も近いDNSサーバーからDNS応答を取得することで、DNS通信を最適化できます。
Anycastを使用すると、複数の地理的な場所に存在するサーバーは、それぞれ単一の同一のIPアドレスをローカルゲートウェイ(ルーター)にアドバタイズします。 DNSクライアントがAnycastアドレスへのクエリを開始すると、使用可能なルートが評価され、DNSクエリが優先される場所に送信されます。 一般的に、これはネットワークトポロジに基づいて最も近い場所です。 次の例を参照してください。
図1:ネットワーク上の異なるサイトにある四つのDNSサーバーが、それぞれ同じAnycast IPアドレス(黒い矢印)をネットワークに通知します。 DNSクライアントデバイスは、Anycast IPアドレスに要求を送信します。 ネットワークデバイスは利用可能なルートを分析し、クライアントのDNSクエリを最も近い場所に送信します(青い矢印)。
Anycast DNSは、今日では多くのグローバルDNSサービスのDNSトラフィックをルーティングするために一般的に使用されています。 たとえば、ルートDNSサーバーシステムはAnycast DNSに大きく依存します。 Anycastはまたいろいろな旅程の議定書を使用し、イントラネットで専ら使用することができる。
Windows Server native BGP Anycast demo
次の手順は、Windows Server上のネイティブBGPをAnycast DNSで使用する方法を示しています。
要件
- Hyper-Vの役割がインストールされている1つの物理デバイス。
- Windows Server2012R2、Windows10、またはそれ以降。
- 2 クライアントVm(任意のオペレーティングシステム)。
- digなどのDNS用のBINDツールのインストールをお勧めします。
- 3 サーバー Vm(Windows Server2016またはWindows Server2019)。
- Windows PowerShell LoopbackAdapterモジュールがサーバー Vm(DC001、DC002)にまだインストールされていない場合、このモジュールをインストールするには一時的にインターネットアクセスが必要
Hyper-Vセットアップ
Hyper-Vサーバーを次のように構成します:
- 2 プライベート仮想スイッチネットワークは、
- モックインターネットネットワーク131.253.1.0/24
- モックイントラネットネットワーク10.10に構成されています。10.0/24
- 2 クライアントVmは131.253.1.0/24ネットワークに接続されています
- 2サーバー Vmは10.10.10.0/24ネットワークに接続されています
- 1サーバーはデュアルホームで、131.253.1.0/24と10.10.10.0/24ネットワークの両方に接続されています。
仮想マシンのネットワーク構成
次の設定で仮想マシンのネットワーク設定を構成します:
- クライアント1、クライアント2
- クライアント1:131.253.1.1
- クライアント2:131.253.1.2
- サブネットマスク:255.255.255.0
- DNS:51.51.51.51
- : 131.253.1.254
- ゲートウェイ(Windows Server)
- NIC1:131.253.1.254,サブネット255.255.255.0
- NIC2:10.10.10.254,サブネット255.255.255.0
- DNS:51.51.51.51
- ゲートウェイ:131.253.1.100(デモのために無視することができます)
- DC001(Windows Server)
- NIC1:10.10.10.1
- サブネット:255.255.255.0
- DNS:10.10.10.1
- ゲートウェイ: 10.10.10.254
- DC002(Windows Server)
- NIC1:10.10.10.2
- サブネット255.255.255.0
- DNS:10.10.10.2*
- ゲートウェイ: 10.10.10.254
*Dc002のドメイン参加を実行するときは、最初にDNSに10.10.10.1を使用して、DC001でActive Directoryドメインを検索できるようにします。
DNSの構成
サーバーマネージャーとDNS管理コンソールまたはWindows PowerShellを使用して、次のサーバーの役割をインストールし、2つのサーバーのそれぞれに静的DNSゾーンを作成します。
- DC001,DC002
- Active Directoryドメインサービスをインストールし、ドメインコントローラに昇格する(オプション)
- DNSロールをインストールする(必須)
- ゾーンという名前の静的ゾーン(非AD統合)DC001とDC002の両方のtst
- タイプ”TXT”のゾーンに単一の静的レコードネームサーバーを追加します。
- DC001=DC001
- DC002=DC002のTXTレコードのデータ(テキスト)
ループバックアダプタの構成
DC001およびDC002の昇格されたWindows PowerShellプロンプトで次のコマンドを入力して、ループバックアダプタを構成します。
注
Install-Moduleコマンドにはインターネットアクセスが必要です。 これは、Hyper-Vの外部ネットワークにVMを一時的に割り当てることによって実行できます。
$primary_interface = (Get-NetAdapter |?{$_.Status -eq "Up" -and !$_.Virtual}).Name$loopback_ipv4 = '51.51.51.51'$loopback_ipv4_length = '32'$loopback_name = 'Loopback'Install-Module -Name LoopbackAdapter -MinimumVersion 1.2.0.0 -ForceImport-Module -Name LoopbackAdapterNew-LoopbackAdapter -Name $loopback_name -Force$interface_loopback = Get-NetAdapter -Name $loopback_name$interface_main = Get-NetAdapter -Name $primary_interfaceSet-NetIPInterface -InterfaceIndex $interface_loopback.ifIndex -InterfaceMetric "254" -WeakHostReceive Enabled -WeakHostSend Enabled -DHCP DisabledSet-NetIPInterface -InterfaceIndex $interface_main.ifIndex -WeakHostReceive Enabled -WeakHostSend EnabledSet-NetIPAddress -InterfaceIndex $interface_loopback.ifIndex -SkipAsSource $TrueGet-NetAdapter $loopback_name | Set-DNSClient –RegisterThisConnectionsAddress $FalseNew-NetIPAddress -InterfaceAlias $loopback_name -IPAddress $loopback_ipv4 -PrefixLength $loopback_ipv4_length -AddressFamily ipv4Disable-NetAdapterBinding -Name $loopback_name -ComponentID ms_msclientDisable-NetAdapterBinding -Name $loopback_name -ComponentID ms_pacerDisable-NetAdapterBinding -Name $loopback_name -ComponentID ms_serverDisable-NetAdapterBinding -Name $loopback_name -ComponentID ms_lltdioDisable-NetAdapterBinding -Name $loopback_name -ComponentID ms_rspndr
仮想マシンのルーティング構成
ルーティングを構成するには、Vmで次のWindows PowerShellコマンドを使用します。
Install-WindowsFeature RemoteAccess -IncludeManagementToolsInstall-RemoteAccess -VpnType RoutingOnlyAdd-BgpRouter -BgpIdentifier "10.10.10.254" -LocalASN 8075Add-BgpPeer -Name "DC001" -LocalIPAddress 10.10.10.254 -PeerIPAddress 10.10.10.1 -PeerASN 65511 –LocalASN 8075
- DC001
Install-WindowsFeature RemoteAccess -IncludeManagementToolsInstall-RemoteAccess -VpnType RoutingOnlyAdd-BgpRouter -BgpIdentifier "10.10.10.1" -LocalASN 65511Add-BgpPeer -Name "Labgw" -LocalIPAddress 10.10.10.1 -PeerIPAddress 10.10.10.254 -PeerASN 8075 –LocalASN 65511Add-BgpCustomRoute -Network 51.51.51.0/24
- DC002
Install-WindowsFeature RemoteAccess -IncludeManagementToolsInstall-RemoteAccess -VpnType RoutingOnlyAdd-BgpRouter -BgpIdentifier "10.10.10.2" -LocalASN 65511Add-BgpPeer -Name "Labgw" -LocalIPAddress 10.10.10.2 -PeerIPAddress 10.10.10.254 -PeerASN 8075 –LocalASN 65511Add-BgpCustomRoute -Network 51.51.51.0/24
概要図
図2:ネイティブBGP Anycast DNSデモのラボセットアップ
Anycast DNSデモ
-
ゲートウェイサーバー
でのBGPルーティングの確認PS C:>Get-BgpRouteInformation
DestinationNetwork NextHop LearnedFromPeer State LocalPref MED
—————— ——- ————— —– ——— —
51.51.51.0/24 10.10.10.1 DC001Best
51.51.51.0/24 10.10.10.2DC002Best -
client1およびclient2で、51.51.51.51
に到達できることを確認しますPS C:>ping51.51.51.51
Ping51.51.51.51
Ping51.51.51.51 32バイトのデータで:
51.51.51.51からの応答:bytes=32time<1ms TTL=126 1ms TTL=126 1ms TTL=126 1ms TTL=126 1ms TTL=126 1ms TTL=126 1ms TTL=126 1ms TTL=126 1ms TTL=126 1ms TTL=126 1ms TTL=126 1ms TTL=126 1ms TTL=126 1ms TTL=126 1ms TTL=126 1ms TTL=126 1ms TTL=126: 32time<1ms TTL=126 51.51.51.51からの応答:バイト数=32time<1ms TTL=126 51.51.51.51のPing統計:
パケット数:送信=4、受信=4、損失=0(0%の損失)、ラウンドトリップの概算時間(ミリ秒):
•最小=0ms、最大=0MS、平均=0ms•最大=0MS、平均=0ms•最大=0MS、平均=0ms•最大=0MS、平均=0ms•最大=0MS、平均=0ms•最大=0MS、平均=0ms•最大=0MS、平均=0ms•最大=0MS、平均=0ms•最大=0MS•最大=0MS•最大=0MS•最大=0MS•最大=0MS•最大=0MS•最大=0MS•最大=0MS•平均=0ms -
client1およびclient2では、NSLOOKUPまたはdigを使用してTXTレコードを照会します。 両方の例を以下に示す。
PS C:>digサーバー。ゾーンtst TXT+short
PS C:>nslookup-type=txtサーバー。ゾーンtst51.51.51.51一方のクライアントは”DC001″と表示され、もう一方のクライアントは”DC002″と表示され、Anycastが正常に動作していることを確認します。 ゲートウェイサーバーからクエリを実行することもできます。
-
次に、DC001のイーサネットアダプタを無効にします。
PS C:>(Get-NetAdapter).Name
Loopback
Ethernet2
PS C:>Disable-NetAdapter”Ethernet2″
Confirm
このアクションを本当に実行しますか?
Disable-NetAdapter’Ethernet2′
YesすべてにYesいいえすべてにNo Suspendヘルプ(デフォルトは”Y”):
PS C:>(Get-NetAdapter).ステータス
アップ
無効 -
以前にDC001からの応答を受信していたDNSクライアントがDC002に切り替えられたことを確認します。
PS C:>nslookup-type=txtサーバー。ゾーンtst51.51.51.51
サーバー:不明
アドレス: 51.51.51.51サーバー。ゾーンTST text=
“DC001”
PS C:>nslookup-type=txtサーバー。ゾーンtst51.51.51.51
サーバー:不明
アドレス:51.51.51.51サーバー。ゾーンtstテキスト=
“DC002”
-
ゲートウェイサーバーでGet-BgpStatisticsを使用して、DC001でBGPセッションがダウンしていることを確認します。
-
DC001のイーサネットアダプタを再度有効にし、BGPセッションが復元され、クライアントがDC001からDNS応答を再度受信することを確認します。
注
ロードバランサーが使用されていない場合、個々のクライアントは同じバックエンドDNSサーバーが使用可能であればそれを使用します。 これにより、クライアントの一貫性のあるBGPパスが作成されます。 詳細については、セクション4.4を参照してください。RFC4786の3:等コストパス。
よくある質問
Q:Anycast DNSはオンプレミスのDNS環境で使用するのに適したソリューションですか?
A:Anycast DNSはオンプレミスDNSサービスとシームレスに動作します。 ただし、DNSサービスを拡張するためにAnycastは必要ありません。
Q:ドメインコントローラの数が多い環境(例:>50)でAnycast DNSを実装すると、どのような影響がありますか?
A:機能に直接的な影響はありません。 ロードバランサーを使用する場合、ドメインコントローラの追加構成は必要ありません。
: Anycast DNS構成はMicrosoft customer serviceでサポートされていますか?
A:Microsoft以外のロードバランサーを使用してDNSクエリを転送する場合、MICROSOFTはDNSサーバーサービスに関連する問題をサポートします。 DNS転送に関連する問題については、ロードバランサーのベンダに相談してください。
Q:ドメインコントローラの数が多い(例:>50)Anycast DNSのベストプラクティスは何ですか?
a:各地理的な場所でロードバランサーを使用することをお勧めします。 ロードバランサーは、通常、外部ベンダーによって提供されます。
: Anycast DNSとAzure DNSには同様の機能がありますか?
A:Azure DNSはAnycastを使用します。 Azure DNSでAnycastを使用するには、要求をAzure DNSサーバーに転送するようにロードバランサーを構成します。