Anycast DNS (геораспределённый DNS)

Безопасность и угрозы
DNS-инфраструктура, использующая один адрес в нескольких точках присутствия для выбора близкого сервера.
← Вернуться к глоссарию

Что такое Anycast DNS?

Anycast DNS — архитектура, в которой один IP-адрес объявляется из нескольких сетевых точек. BGP и топология выбирают узел, который обычно ближе или доступнее для конкретного клиента. Это отличается от unicast, где адрес обычно указывает на одну точку.

Преимущества

Распределённые точки уменьшают задержку, помогают пережить отказ одного узла и поглощать большие объёмы запросов. Anycast особенно полезен для авторитетных DNS и публичных резолверов, но результат зависит от маршрутизации, нагрузки и политики оператора.

Согласованность

Каждая точка должна обслуживать одну и ту же зону и одинаковые версии SOA, NS, A, AAAA, MX и TXT. Ошибка репликации может дать разные ответы по регионам. Один наблюдаемый IP не доказывает, что все узлы здоровы или принадлежат одному оператору.

User Query → Specific Server IP → Fixed Location

London User → 203.0.113.1 → New York Server (high latency)

User Query → Shared IP → Nearest Server

London User → 203.0.113.1 → London Server (low latency)

Tokyo User → 203.0.113.1 → Tokyo Server (low latency)

Sydney User → 203.0.113.1 → Sydney Server (low latency)

Маршрутизация

Ближайший по географии узел не всегда имеет минимальную latency. BGP может изменить путь при аварии, перегрузке или политике peer. Поэтому диагностика должна сохранять ASN, сеть, адрес, регион и время, а не только конечный DNS-ответ.

Надёжность

Anycast не заменяет несколько независимых операторов, резервную зону и корректную DNSSEC-цепочку. Проверяйте UDP и TCP, IPv4 и IPv6, NS delegation, glue и поведение при исчезновении одной точки. Кэш рекурсивного резолвера может скрыть отказ.

Безопасность

Контролируйте BGP, доступ к конфигурации, RPKI, rate limiting и защиту от DNS flood. Anycast помогает распределить нагрузку, но не предотвращает подмену, ошибочную публикацию или компрометацию аккаунта. DNSSEC подтверждает целостность, а не безопасность приложения.

DNS Resolution Time:

Unicast: 150ms (distant server)

Anycast: 10ms (local server)

Savings: 140ms per query

For a page with 20 DNS lookups:

Total savings: 2,800ms (2.8 seconds!)

Расположение пользователяЗадержка UnicastЗадержка AnycastУлучшение
Нью-Йорк10ms5msНа 50% быстрее
Лондон120ms8msНа 93% быстрее
Токио180ms12msНа 93% быстрее
Сидней220ms15msНа 93% быстрее

Проверка

Запрашивайте одинаковые типы записей из разных сетей и сравнивайте IP, latency, TTL, SOA serial, DNSSEC и коды. SERVFAIL, timeout, 429 и несогласованность классифицируйте как unknown или partial. Не делайте вывод о владении доменом по Anycast-адресу.

Normal Operation:

London Server → Online → Serving traffic

Paris Server → Online → Serving traffic

Frankfurt Server → Online → Serving traffic

Server Failure:

London Server → OFFLINE

Paris Server → Online → Absorbs London traffic automatically

Frankfurt Server → Online → Absorbs London traffic automatically

Состояние точек

Anycast может скрыть отдельный отказ: маршрут клиента изменится, но другие сети продолжат получать ответ. Проверяйте несколько probes, traceroute с осторожностью, BGP visibility, latency и код DNS. Не делайте вывод о здоровье всей сети по одному ближайшему узлу.

Attack: 100 Gbps DDoS → Single Server → Overwhelmed → Service Down
Attack: 100 Gbps DDoS → Distributed across 20 servers

Each server receives: ~5 Gbps

Result: Attack absorbed, service continues

Данные и TTL

При изменении зоны убедитесь, что новые данные реплицированы на все точки до увеличения TTL. Разные SOA serial, DNSSEC или отрицательные ответы создают региональные расхождения. Резолверский кэш может ещё некоторое время маскировать проблему.

# Query time comparison

dig @8.8.8.8 example.com # Google's anycast DNS

# Query time: 12 msec

dig @single-server.dns.com example.com # Unicast DNS

# Query time: 145 msec

Операционная устойчивость

Используйте capacity для пиков, независимые upstream, автоматическое исключение плохих узлов и понятный rollback. Система должна отвечать корректно при потере BGP-маршрута и не возвращать устаревший или несогласованный ответ без обозначения причины.

Контроль изменений

Ограничивайте доступ к объявлениям маршрутов и конфигурации, требуйте review, MFA и audit trail. Контролируйте записи NS и DS, serial зоны, код ответа, задержку, потери пакетов и попадания в кэш. Любая аномалия должна иметь владельца и время расследования.

[Global Anycast IP: 203.0.113.1]

|

┌─────────────────────┼──────────────────────┐

| | |

[US West PoP] [Europe PoP] [Asia PoP]

- Los Angeles - London - Tokyo

- San Francisco - Frankfurt - Singapore

- Seattle - Amsterdam - Hong Kong

Интерпретация

Anycast-адрес показывает способ доставки к наблюдаемой точке. Он не доказывает регистрацию, право собственности, физическое местоположение сервера, безопасность приложения или постоянную доступность из всех регионов.

Архитектура Anycast DNS

Anycast DNS размещает один и тот же адрес сервиса на нескольких узлах в разных сетях и регионах. Маршрутизация направляет запрос к доступной точке, которая по сетевым правилам выглядит наиболее близкой. Это уменьшает задержку и позволяет пережить отказ одного узла, но не делает все ответы одинаково быстрыми и не отменяет контроль авторитетной зоны.

Example BGP Configuration:

IP Block: 203.0.113.0/24

London PoP announces: 203.0.113.1 via AS64500

New York PoP announces: 203.0.113.1 via AS64500

Tokyo PoP announces: 203.0.113.1 via AS64500

Internet routers select nearest announcement based on BGP metrics.

Как выбирается узел

Решение зависит от BGP-маршрутов, состояния объявлений, политики сети и реального здоровья узла. Близость по географии не всегда означает малую задержку: учитываются пиринг, перегрузка и путь до рекурсивного резолвера. Если узел продолжает объявляться после сбоя приложения, Anycast может привести клиентов к доступному IP, который не отвечает на DNS.

Отказоустойчивость

Для каждого узла проверяйте UDP и TCP 53, размер ответа, DNSSEC, SOA serial и одинаковость zone-файла. Система health-check должна отзывать маршрут при отказе, но сам health-check также требует независимого контроля. Резервные nameserver и разные операторы снижают риск общей ошибки конфигурации.

Провайдер DNS (название)IPv4IPv6Точки присутствия (PoP)
Cloudflare1.1.1.12606:4700:4700::1111300+
Google8.8.8.82001:4860:4860::8888100+
Quad99.9.9.92620:fe::fe150+
OpenDNS208.67.222.2222620:119:35::3525+

Кэширование и TTL

Резолверы сохраняют ответ на срок TTL, поэтому отзыв маршрута не удаляет уже выданные адреса мгновенно. Большой TTL повышает стабильность и уменьшает число запросов, но замедляет переключение. Малый TTL ускоряет реакцию, однако увеличивает нагрузку. Планируйте изменение зоны с учётом кэша и отрицательного TTL.

Anycast и безопасность

Anycast защищает доступность, но не подтверждает подлинность домена и не скрывает ошибки в данных. Проверяйте DNSSEC, ограничивайте доступ к управлению, подписывайте изменения и сравнивайте ответы из разных регионов. Важно различать отказ маршрута, SERVFAIL, NXDOMAIN, тайм-аут и корректный пустой результат.

Диагностика

Запрашивайте NS и SOA из нескольких сетей, сравнивайте serial, latency, код ответа и флаги DNSSEC. Отдельно проверяйте холодный и кэшированный запрос, IPv4 и IPv6, крупные TXT и ответы с усечением. При миграции сохраняйте старые nameserver до истечения TTL, а после переключения контролируйте метрики и аварийные уведомления.

Anycast является механизмом распределения и устойчивости, а не гарантией качества данных. Его нужно оценивать вместе с делегацией, синхронизацией зоны, мониторингом и реальной доступностью приложения.

# Cloudflare example

Name Servers:

ns1.cloudflare.com (anycast)

ns2.cloudflare.com (anycast)

example.com.    NS    ns1.cloudflare.com.

example.com. NS ns2.cloudflare.com.

example.com.    A     203.0.113.50

www A 203.0.113.50

mail MX mail.example.com.

Измерение

Проводите тесты из нескольких AS и регионов, повторяйте их в разное время и сравнивайте p50 и p95 latency. Записывайте маршрут, DNS-код, TTL, SOA serial, cache state и выбранный IP. Различие ответов должно быть воспроизводимым, прежде чем считать его drift.

nameserver 1.1.1.1

nameserver 1.0.0.1

Preferred DNS:  1.1.1.1

Alternate DNS: 1.0.0.1

Аварийный режим

При отказе точки оператор должен убрать неисправный маршрут, не меняя содержимое зоны. После восстановления проверяйте репликацию и отсутствие split-brain. Увеличение TTL во время инцидента может продлить ошибочный ответ и требует документированного плана.

Границы вывода

Anycast описывает транспорт к DNS-наблюдаемой точке. Он не говорит, где физически находится пользователь, кому принадлежит IP, насколько безопасен веб-сайт или можно ли зарегистрировать домен. Эти свойства проверяются независимыми источниками.

ХарактеристикаAnycastUnicast
МаршрутизацияБлижайший серверКонкретный сервер
ЗадержкаНизкая (локальная)Зависит от расстояния
ИзбыточностьВстроеннаяТребуются дополнительные IP
Защита от DDoSРаспределённое поглощениеУязвима одна точка
СложностьВыше (маршрутизация BGP)Простая (прямая маршрутизация)

Традиционный unicast и anycast

При unicast один IP обычно ведёт к одной площадке, а anycast объявляет один префикс из нескольких PoP. BGP выбирает маршрут по сетевой политике, а не по точному географическому расстоянию.

ХарактеристикаAnycastGeoDNS
Уровень маршрутизацииСеть (BGP)Приложение (DNS)
Аварийное переключениеАвтоматическоеНастраивается
ДетализацияБлизость сетиГеографические регионы
IP-адресОдин IP во всём миреРазные IP по регионам
СценарийГлобальная производительностьРегиональная выдача контента

Механизм маршрутизации

Каждая площадка объявляет одинаковый префикс, и маршрутизаторы направляют запрос по лучшему доступному пути. Изменение peering или политики может переключить пользователя на другой узел без изменения DNS-адреса.

Снижение задержки

Близкий сетевой маршрут часто уменьшает RTT до авторитетного сервера или резолвера. Эффект нужно измерять из разных ASN и регионов, поскольку физически ближайший PoP не всегда выбран BGP.

Test: 1000 DNS queries from various global locations

Unicast DNS (single server in US):

Average: 145ms

Min: 12ms (US queries)

Max: 340ms (Asia/Australia queries)

Anycast DNS (20 global PoPs):

Average: 18ms

Min: 5ms

Max: 45ms

Performance Improvement: 87% faster average response

Смягчение DDoS

Распределённые объявления могут разнести нагрузку по площадкам и локализовать часть атаки. Anycast не заменяет rate limiting, capacity planning, фильтрацию и аварийное отключение повреждённого узла.

# Test anycast DNS performance

for location in us-east eu-west asia-pacific; do

dig @1.1.1.1 example.com | grep "Query time"

done

# Results:

# US East: Query time: 8 msec

# EU West: Query time: 11 msec

# Asia Pacific: Query time: 14 msec

# Compare to unicast:

dig @unicast-server.com example.com | grep "Query time"

# Query time: 167 msec (from Asia)

Повышение производительности

Короткий путь и локальный кэш уменьшают время ответа, если все PoP имеют одинаковые данные и достаточные ресурсы. Сравнивайте p50, p95, потери и SERVFAIL, а не только лучший запрос.

Структура сети

Архитектура включает несколько площадок, общий IP-префикс, независимые соединения и согласованный DNS-сервис. Отказ одной сети не должен блокировать обновление остальных или источник зоны.

Настройка серверов

Узлы должны обслуживать одинаковые зоны, ключи и политики, иметь точные часы и безопасную доставку конфигурации. Локальный health check обязан исключать неготовый процесс до объявления маршрута.

Query:    User → Nearest anycast server → Response

Next Query: User → Different server (if routing changes)

Объявление BGP

Префикс публикуется через выбранных upstream и фильтры маршрутов. RPKI, max-prefix, communities и процедура withdraw уменьшают риск ошибочного объявления, но требуют регулярной проверки.

Server Failure → BGP update propagation (30-120 seconds)

During convergence: Some queries may fail

After convergence: Traffic rerouted automatically

Публичные резолверы

Anycast позволяет публичному recursive resolver использовать один запоминаемый адрес во многих регионах. Privacy, cache behavior, DNSSEC и фильтрация остаются свойствами конкретного оператора.

Поставщики авторитетного DNS

Авторитетный сервис может распределять NS-адреса по нескольким PoP. Оценивайте независимость сетей, согласованность SOA, DNSSEC, TCP и способность отвечать при частичном отказе.

# Monitor from multiple locations

curl "https://api.monitoring-service.com/dns/check?domain=example.com&locations=all"

PoP Statistics:

US East: 35% of queries

EU West: 28% of queries

Asia: 22% of queries

Other: 15% of queries

Настройка авторитетного DNS

Синхронизируйте зону и ключи, объявите общий префикс, проверьте каждый PoP напрямую и только затем публикуйте NS. Изменения должны иметь версию, serial и безопасный rollback.

# Verify anycast is working

dig +short @anycast-server.com example.com

# Test from multiple locations

for server in probe1 probe2 probe3; do

ssh $server "dig @anycast-ip example.com +short"

done

# Should see responses from geographically appropriate servers

Настройка рекурсивного DNS

Ограничьте допустимых клиентов или спроектируйте публичную службу с защитой от abuse. Кэш, DNSSEC validation, ECS и журналирование должны работать согласованно во всех точках.

Anycast и GeoDNS

Anycast выбирает сетевой путь к одному адресу, а GeoDNS может возвращать разные записи по местоположению запроса. Их можно сочетать, но ошибки геолокации и кэширование создают дополнительные состояния.

Время разрешения DNS

Измеряйте полный lookup и отдельный авторитетный запрос, разделяя cold и warm cache. Фиксируйте резолвер, ASN, протокол, код ответа, размер полезной нагрузки и время измерения.

Anycast → Fast routing to nearest DNS server

GeoDNS → Return geographically appropriate IP addresses

Требование к работе без состояния

DNS по UDP хорошо подходит для независимой обработки запросов, но TCP, DoT и длинные сессии чувствительнее к смене PoP. Состояние нельзя предполагать доступным на другом узле без явной репликации.

Асимметрия маршрутов

Запрос и ответ могут проходить разными сетями, а последовательные запросы одного клиента попадать в разные PoP. Это усложняет трассировку, rate limiting и анализ packet loss.

Время сходимости BGP

После withdraw трафик переключается не мгновенно: маршрутизаторам нужно распространить новое состояние. Планируйте ёмкость соседних PoP, проверяйте failover и публикуйте период неопределённости.

# Simulate PoP failure

# Verify traffic reroutes automatically

# Measure convergence time

# Check user impact

Применяйте эти знания на практике

Используйте API DomScan для проверки доступности доменов, их состояния и многого другого.