Обзор DNS для любой рассылки
В этом разделе содержатся сведения о том, как работает служба Anycast DNS.
Что такое Anycast?
Anycast — это технология, которая предоставляет несколько путей маршрутизации группе конечных точек, которым назначен один и тот же IP-адрес. Каждое устройство в группе объявляет один и тот же адрес в сети, а протоколы маршрутизации используются для выбора лучшего назначения.
Anycast позволяет масштабировать службу без отслеживания состояния, например DNS или HTTP, разместив несколько узлов за одинаковым IP-адресом и используя маршрутизацию с равными затратами (ECMP) для прямого трафика между этими узлами. Anycast отличается от одноадресной рассылки, в которой каждая конечная точка имеет собственный отдельный IP-адрес.
Зачем использовать Anycast с DNS?
С помощью Anycast DNS можно включить DNS-сервер или группу серверов для реагирования на DNS-запросы на основе географического расположения DNS-клиента. Это может повысить время отклика DNS и упростить параметры клиента DNS. Любая рассылка DNS также предоставляет дополнительный уровень избыточности и может помочь защитить от атак типа "отказ в обслуживании DNS".
Принцип работы DNS для любой рассылки
Любая рассылка DNS работает с помощью протоколов маршрутизации, таких как протокол BGP, для отправки DNS-запросов в предпочтительный DNS-сервер или группу DNS-серверов (например, группу DNS-серверов, управляемых подсистемой балансировки нагрузки). Эта конструкция может оптимизировать обмен данными DNS, получая ответы DNS от DNS-сервера, ближайшего к клиенту.
При использовании Anycast серверы, существующие в нескольких географических расположениях, объявляют один идентичный IP-адрес локальному шлюзу (маршрутизатору). Когда DNS-клиент инициирует запрос к адресу Anycast, оцениваются доступные маршруты, а DNS-запрос отправляется в предпочтительное расположение. Как правило, это расположение является ближайшим на основе топологии сети. См. следующий пример.
Рис. 1. Пример сети Anycast
- Четыре DNS-сервера (синие круги), расположенные на разных сайтах в сети, каждый объявляет один и тот же IP-адрес Anycast на локальном устройстве маршрутизации (не отображается).
- Маршруты используются для устройств в сети (черные стрелки).
- Dns-клиентское устройство (зеленый круг) отправляет DNS-запрос на IP-адрес Anycast.
- Dns-запрос клиента получается устройством маршрутизации в сети (не показано).
- Устройство маршрутизации анализирует доступные маршруты по IP-адресу Anycast и направляет DNS-запрос с помощью кратчайшего доступного маршрута.
- DNS-запрос отправляется на ближайший DNS-сервер (синяя стрелка).
Любой рассылки DNS обычно используется сегодня для маршрутизации ТРАФИКА DNS для многих глобальных служб DNS. Например, корневая система DNS-сервера сильно зависит от DNS-сервера Anycast. Anycast также работает с множеством различных протоколов маршрутизации и может использоваться исключительно в интрасетях.
Демонстрация BGP Anycast на собственном языке Windows Server
В следующей процедуре показано, как собственный BGP на Windows Server можно использовать с DNS-службой Anycast.
Требования
- Одно физическое устройство с установленной ролью Hyper-V.
- Windows Server 2012 R2, Windows 10 или более поздней версии.
- 2 клиентские виртуальные машины (любая операционная система).
- Рекомендуется установить средства BIND для DNS, например для поиска.
- 3 серверные виртуальные машины (Windows Server 2016 или Windows Server 2019).
- Если модуль Windows PowerShell LoopbackAdapter еще не установлен на виртуальных машинах сервера (DC001, DC002), для установки этого модуля временно требуется доступ к Интернету.
Настройка Hyper-V
Настройте сервер Hyper-V следующим образом:
- Настроены 2 частные сети виртуальных коммутаторов
- Макет сети Интернета 131.253.1.0/24
- Макет сети интрасети 10.10.10.0/24
- 2 клиентские виртуальные машины подключены к сети 131.253.1.0/24
- 2 серверные виртуальные машины подключены к сети 10.10.10.0/24
- 1 сервер является двойным и подключен к сетям 131.253.1.0/24 и 10.10.10.0/24.
Конфигурация сети виртуальной машины
Настройте параметры сети на виртуальных машинах со следующими параметрами:
- Client1, client2
- Client1: 131.253.1.1
- Client2: 131.253.1.2
- Маска подсети: 255.255.255.0
- DNS: 51.51.51.51
- Шлюз: 131.253.1.254
- Шлюз (Windows Server)
- Сетевой адаптер1: 131.253.1.254, подсеть 255.255.255.0
- Сетевой адаптер2: 10.10.10.254, подсеть 255.255.255.0
- DNS: 51.51.51.51
- Шлюз: 131.253.1.100 (можно игнорировать для демонстрации)
- DC001 (Windows Server)
- Сетевой адаптер1: 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
*Используйте 10.10.10.1 для DNS изначально при присоединении домена к DC002, чтобы найти домен Active Directory в DC001.
Настройка DNS
Используйте диспетчер сервера и DNS-консоль управления или Windows PowerShell для установки следующих ролей сервера и создания статической зоны DNS на каждом из двух серверов.
- DC001, DC002
- Установка служб домен Active Directory и повышение уровня контроллера домена (необязательно)
- Установка роли DNS (обязательно)
- Создание статической зоны (не интегрированной с AD) zone.tst в DC001 и DC002
- Добавьте один статический сервер имен записей в зону типа TXT.
- Данные (текст) записи TXT в DC001 = DC001 = DC001
- Данные (текст) для записи TXT в DC002 = DC002
Настройка адаптеров обратного цикла
Введите следующие команды в командной строке Windows PowerShell с повышенными привилегиями в DC001 и DC002 для настройки адаптеров замыкания.
Примечание.
Для команды Install-Module требуется доступ к Интернету. Это можно сделать, временно назначив виртуальную машину внешней сети в Hyper-V.
$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 -Force
Import-Module -Name LoopbackAdapter
New-LoopbackAdapter -Name $loopback_name -Force
$interface_loopback = Get-NetAdapter -Name $loopback_name
$interface_main = Get-NetAdapter -Name $primary_interface
Set-NetIPInterface -InterfaceIndex $interface_loopback.ifIndex -InterfaceMetric "254" -WeakHostReceive Enabled -WeakHostSend Enabled -DHCP Disabled
Set-NetIPInterface -InterfaceIndex $interface_main.ifIndex -WeakHostReceive Enabled -WeakHostSend Enabled
Set-NetIPAddress -InterfaceIndex $interface_loopback.ifIndex -SkipAsSource $True
Get-NetAdapter $loopback_name | Set-DNSClient –RegisterThisConnectionsAddress $False
New-NetIPAddress -InterfaceAlias $loopback_name -IPAddress $loopback_ipv4 -PrefixLength $loopback_ipv4_length -AddressFamily ipv4
Disable-NetAdapterBinding -Name $loopback_name -ComponentID ms_msclient
Disable-NetAdapterBinding -Name $loopback_name -ComponentID ms_pacer
Disable-NetAdapterBinding -Name $loopback_name -ComponentID ms_server
Disable-NetAdapterBinding -Name $loopback_name -ComponentID ms_lltdio
Disable-NetAdapterBinding -Name $loopback_name -ComponentID ms_rspndr
Конфигурация маршрутизации виртуальных машин
Чтобы настроить маршрутизацию, используйте следующие команды Windows PowerShell на виртуальных машинах.
- Шлюз
Install-WindowsFeature RemoteAccess -IncludeManagementTools
Install-RemoteAccess -VpnType RoutingOnly
Add-BgpRouter -BgpIdentifier “10.10.10.254” -LocalASN 8075
Add-BgpPeer -Name "DC001" -LocalIPAddress 10.10.10.254 -PeerIPAddress 10.10.10.1 -PeerASN 65511 –LocalASN 8075
Add-BgpPeer -Name "DC002" -LocalIPAddress 10.10.10.254 -PeerIPAddress 10.10.10.2 -PeerASN 65511 –LocalASN 8075
- DC001
Install-WindowsFeature RemoteAccess -IncludeManagementTools
Install-RemoteAccess -VpnType RoutingOnly
Add-BgpRouter -BgpIdentifier “10.10.10.1” -LocalASN 65511
Add-BgpPeer -Name "Labgw" -LocalIPAddress 10.10.10.1 -PeerIPAddress 10.10.10.254 -PeerASN 8075 –LocalASN 65511
Add-BgpCustomRoute -Network 51.51.51.0/24
- DC002
Install-WindowsFeature RemoteAccess -IncludeManagementTools
Install-RemoteAccess -VpnType RoutingOnly
Add-BgpRouter -BgpIdentifier "10.10.10.2" -LocalASN 65511
Add-BgpPeer -Name "Labgw" -LocalIPAddress 10.10.10.2 -PeerIPAddress 10.10.10.254 -PeerASN 8075 –LocalASN 65511
Add-BgpCustomRoute -Network 51.51.51.0/24
Сводная схема
Рис. 2. Настройка лаборатории для собственной демонстрации BGP Anycast DNS
Демонстрация любой рассылки DNS
Проверка маршрутизации BGP на сервере шлюза
PS C:\> Get-BgpRouteInformation
DestinationNetwork NextHop LearnedFromPeer State LocalPref MED
------------------ ------- --------------- ----- --------- ---
51.51.51.0/24 10.10.10.1 DC001 best
51.51.51.0/24 10.10.10.2 DC002 BestВ client1 и client2 убедитесь, что вы можете достичь 51.51.51.51
PS C:\> ping 51.51.51.51
Проверка pinging 51.51.51.51 с 32 байтами данных:
Ответ от 51.51.51.51: байт=32 time<1ms TTL=126
Ответ от 51.51.51.51: байт=32 time<1ms TTL=126
Ответ от 51.51.51.51: байт=32 time<1ms TTL=126
Ответ от 51.51.51.51: байт=32 time<1ms TTL=126Статистика ping для 51.51.51.51:
Пакеты: Sent = 4, Received = 4, Lost = 0 (0% потеря),
Приблизительное время кругового пути в миллисекундах:
Minimum = 0ms, Maximum = 0ms, Average = 0msПримечание.
Если сбой проверки ping, также проверьте отсутствие правил брандмауэра, блокирующих ICMP.
В client1 и client2 используйте nslookup или dig to query the TXT record. Показаны примеры обоих.
PS C:\> dig server.zone.tst TXT +short
PS C:\> nslookup -type=txt server.zone.tst 51.51.51.51
Один клиент отображает "DC001", а другой клиент отображает "DC002", проверяя правильность работы Anycast. Вы также можете запросить с сервера шлюза.
Затем отключите адаптер Ethernet на DC001.
PS C:\> (Get-NetAdapter).Name
Замыкание на себя
Ethernet 2
PS C:\> Disable-NetAdapter "Ethernet 2"
Confirm
Вы уверены, что хотите выполнить это действие?
Disable-NetAdapter "Ethernet 2"
[Y] Да [A] Да для всех [N] Нет [L] Нет для всех [S] Приостановить [?] Справка (по умолчанию — "Y"):
PS C:\> (Get-NetAdapter).Status
Up
ВыключеноУбедитесь, что DNS-клиенты, которые ранее получали ответы от DC001, переключились на DC002.
PS C:\> nslookup -type=txt server.zone.tst 51.51.51.51
Сервер: UnKnown
Адрес: 51.51.51.51Текст server.zone.tst =
"DC001"
PS C:\> nslookup -type=txt server.zone.tst 51.51.51.51
Сервер: UnKnown
Адрес: 51.51.51.51Текст server.zone.tst =
"DC002"
Убедитесь, что сеанс BGP отключен на DC001 с помощью Get-BgpStatistics на сервере шлюза.
Снова включите адаптер Ethernet в DC001 и убедитесь, что сеанс BGP восстановлен, а клиенты снова получают ответы DNS от DC001.
Примечание.
Если подсистема балансировки нагрузки не используется, отдельный клиент будет использовать тот же внутренний DNS-сервер, если он доступен. Это создает согласованный путь BGP для клиента. Дополнительные сведения см. в разделе 4.4.3 RFC4786: пути с равными затратами.
Часто задаваемые вопросы
Вопрос. Является ли любой рассылкой DNS хорошим решением для использования в локальной среде DNS?
Ответ. Любая рассылка DNS работает без проблем с локальной службой DNS. Тем не менее, Anycast не требуется для масштабирования службы DNS.
Вопрос. Что такое влияние реализации Anycast DNS в среде с большим числом (например, >50) контроллеров домена?
Ответ. Нет прямого влияния на функциональные возможности. Если используется подсистема балансировки нагрузки, то никакой другой конфигурации на контроллерах домена не требуется.
Вопрос. Поддерживается ли конфигурация DNS для любой рассылки службой клиентов Майкрософт?
Ответ. При использовании подсистемы балансировки нагрузки, отличной от Майкрософт, для пересылки DNS-запросов корпорация Майкрософт поддерживает проблемы, связанные со службой DNS-сервера. Обратитесь к поставщику подсистемы балансировки нагрузки для проблем, связанных с пересылкой DNS.
Вопрос. Что рекомендуется использовать для Anycast DNS с большим числом (например, >50) контроллеров домена?
Ответ. Рекомендуется использовать подсистему балансировки нагрузки в каждом географическом расположении. Подсистемы балансировки нагрузки обычно предоставляются внешним поставщиком.
Вопрос. Имеют ли какие-либо функции DNS и Azure DNS для любой рассылки?
Ответ. Azure DNS использует Anycast. Чтобы использовать Anycast с Azure DNS, настройте подсистему балансировки нагрузки для пересылки запросов на DNS-сервер Azure.