Чем Anycast отличается от классического Unicast DNS
При обычной (Unicast) схеме у каждого DNS-сервера свой уникальный IP-адрес, и все резолверы мира обращаются к одному и тому же физическому серверу. Anycast меняет правила игры: один и тот же IP-адрес анонсируется по протоколу BGP сразу из нескольких точек присутствия (PoP). Маршрутизаторы в интернете сами выбирают ближайший по числу автономных систем узел, поэтому запрос пользователя из Франкфурта и запрос из Нью-Йорка физически попадают на разные серверы, хотя оба обращались к одному IP.
Это снижает задержку (RTT) при резолвинге и одновременно повышает отказоустойчивость: если один узел падает или перегружен DDoS-трафиком, BGP просто перестаёт анонсировать маршрут через него, и трафик перетекает на соседние точки без изменения зоны и без участия администратора.
Как работает GeoDNS и чем он отличается от Anycast
GeoDNS работает на другом уровне — не в маршрутизации пакетов, а в логике самого DNS-сервера. Авторитативный сервер определяет географическое положение резолвера (по его IP или по EDNS Client Subnet, RFC 7871) и в ответе на запрос A или AAAA отдаёт разный IP-адрес в зависимости от региона. Anycast — это один и тот же адрес, доставленный кратчайшим маршрутом. GeoDNS — это разные адреса для разных регионов, отдаваемые с одного логического сервера.
Технологии не конкурируют, а дополняют друг друга: крупные CDN и DNS-провайдеры анонсируют DNS-серверы через Anycast, а поверх используют GeoDNS-политики, чтобы направить пользователя не просто на ближайший DNS-узел, а на ближайший веб-сервер или дата-центр с контентом.
Когда нужен Anycast, а когда достаточно GeoDNS
Anycast имеет смысл, если у вас несколько собственных авторитативных серверов в разных сетях и вы хотите устойчивость к отказу одной точки и снижение задержки резолвинга по всему миру. Для этого нужен собственный ASN и блок IP-адресов — подробнее об основе такой инфраструктуры в статье про свой авторитативный сервер на BIND 9.
GeoDNS достаточно, если у вас один сайт, но несколько зеркал контента или дата-центров (например, в Германии, США и Франции), и задача — направить посетителя на географически ближний сервер приложения. Для этого подходит DNS-провайдер с GeoIP-политиками или собственный сервер PowerDNS с GeoIP-бэкендом.
Как проверить, что DNS-провайдер отвечает через Anycast
Самый надёжный признак Anycast-инфраструктуры — поддержка EDNS-опции NSID (RFC 5001), которая возвращает идентификатор конкретного узла, ответившего на запрос. Проверить это можно командой:
dig @ns1.example.com example.com +nsidЕсли из разных стран запрос возвращает разные значения NSID при одном и том же IP-адресе сервера — перед вами Anycast. Второй способ — сравнить время отклика (RTT) с разных континентов через публичные looking glass сервисы: для настоящего Anycast RTT будет стабильно низким везде, а не только рядом с одним дата-центром.
Настройка GeoDNS-политик: практический пример
Типичная GeoDNS-политика описывается таблицей соответствия «регион → адрес»:
| Регион резолвера | Возвращаемый IP | Дата-центр |
|---|---|---|
| Европа | 203.0.113.10 | Германия |
| Северная Америка | 198.51.100.20 | США |
| Прочие регионы | 192.0.2.30 | Франция (fallback) |
Проверить, какой адрес получит резолвер из конкретной подсети, можно через EDNS Client Subnet:
dig @8.8.8.8 example.com +subnet=203.0.113.0/24Такой запрос эмулирует резолвер, за которым стоят клиенты из указанной подсети, и показывает, какой ответ GeoDNS-сервер посчитает для них правильным.
Типичные ошибки при переходе на Anycast или GeoDNS
- Низкий TTL забыли увеличить перед миграцией — подробности в статье про DNS Failover и переключение резервных серверов.
- GeoDNS настроен только по IP резолвера, а не по EDNS Client Subnet — пользователи публичных DNS вроде 8.8.8.8 получают адрес дата-центра, ближнего к резолверу Google, а не к самому пользователю.
- Anycast-узлы анонсируют разные версии зоны из-за рассинхронизации репликации — это ловится через сверку серийного номера зоны через dig с разных серверов.
- Нет мониторинга BGP-анонсов, поэтому отказ одного узла остаётся незамеченным.
Итог: чек-лист выбора схемы DNS
Перед внедрением ответьте на три вопроса: нужен ли вам собственный ASN и BGP-пиринг (тогда Anycast), нужно ли распределять пользователей по нескольким дата-центрам с разным контентом (тогда GeoDNS), и готовы ли вы поддерживать обе схемы одновременно, если у вас распределённая инфраструктура на несколько стран. Для большинства проектов с одним сайтом на нескольких зеркалах достаточно GeoDNS у провайдера с Anycast-сетью «из коробки» — так вы получаете обе выгоды без строительства собственной BGP-инфраструктуры.