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クエリが優先される場所に送信されます。 一般的に、これはネットワークトポロジに基づいて最も近い場所です。 次の例を参照してください。

異なるサイトにある四つのDNSサーバーが、同じAnycast IPアドレスをネットワークに通知

図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. クライアント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
  1. ゲートウェイ(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(デモのために無視することができます)
  1. DC001(Windows Server)
  • NIC1:10.10.10.1
  • サブネット:255.255.255.0
  • DNS:10.10.10.1
  • ゲートウェイ: 10.10.10.254
  1. 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ゾーンを作成します。

  1. 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
  1. 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

  1. 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

概要図

ネイティブBGP Anycast DNSデモのラボセットアップ

図2:ネイティブBGP Anycast DNSデモのラボセットアップ

Anycast DNSデモ

  1. ゲートウェイサーバー

    での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

  2. 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

  3. client1およびclient2では、NSLOOKUPまたはdigを使用してTXTレコードを照会します。 両方の例を以下に示す。

    PS C:>digサーバー。ゾーンtst TXT+short
    PS C:>nslookup-type=txtサーバー。ゾーンtst51.51.51.51

    一方のクライアントは”DC001″と表示され、もう一方のクライアントは”DC002″と表示され、Anycastが正常に動作していることを確認します。 ゲートウェイサーバーからクエリを実行することもできます。

  4. 次に、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).ステータス
    アップ
    無効

  5. 以前に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”

  6. ゲートウェイサーバーでGet-BgpStatisticsを使用して、DC001でBGPセッションがダウンしていることを確認します。

  7. 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サーバーに転送するようにロードバランサーを構成します。