Источник контента:22 июля 2017 г. Чжоу Фэн, инженер по эксплуатации и техническому обслуживанию компании Hujiang, выступил с докладом на тему «Эволюция DNS Hujiang в httpdns» на «Технологическом салоне Ele.me [Девятый] Шанхайский научно-исследовательский центр · Сессия по эксплуатации и техническому обслуживанию» . IT Dajiashuo (идентификатор WeChat: itdakashuo), как эксклюзивный видео-партнер, имеет право публиковать видео после просмотра организатором и спикерами.
Количество слов для чтения:2354 | 5 минут чтения
Резюме
Служба HttpDNS — это решение, которое может эффективно решить проблему захвата доменных имен, широко используется на различных крупных фабриках и стало довольно зрелым продуктом.Это совместное использование в основном сосредоточено на эволюции Hujiang от DNS к HTTPDNS.Принесите немного вдохновения.
Введение в DNS
Полное имя DNS — система доменных имен, и ее цель — преобразовать доменное имя в IP-адрес. Базовый DNS будет использовать порт 53 протокола TCP/UDP.По умолчанию используется протокол UDP.Если требования к качеству обслуживания относительно высоки, рекомендуется использовать TCP.
Зачем нам нужен DNS?
В IP-протоколе TCP согласовано, что связь между хостами должна проходить через IP. Однако IP-адреса трудно запомнить, поэтому доступ к веб-сайтам обычно осуществляется через доменные имена. И поскольку программа не может записать мертвый IP при вызове доменного имени, необходимо использовать метод FQDN.
Глоссарий
Возьмем, к примеру, mail.cctv.com, его доменное имя верхнего уровня — .com, доменное имя второго уровня — cctv, а доменное имя третьего уровня — mail, которое также является поддоменом cctv. Имя последнего корневого домена — «.», но обычно оно не пишется.
Авторитетный DNSДругими словами, «конечный» сервер обычно используется, чтобы сообщить пользователю, к какому IP-адресу разрешается доменное имя;Кэш DNSОсновная цель состоит в том, чтобы кэшировать результаты доменных имен, запрошенные пользователями, для разрешения на их собственной стороне, чтобы уменьшить нагрузку на авторитетный DNS;Рекурсивный DNS — LocalDNSОбычно он используется на стороне оператора для получения рекурсивных запросов от пользователей и последующего самостоятельного выполнения итерационных запросов;Переадресация DNSПодобно рекурсивному DNS, он сначала проверит, есть ли авторитетная запись в его собственном DNS, если она будет запрошена, она будет возвращена пользователю напрямую, в противном случае он рекурсивно выйдет и перекинет ее на другой DNS;публичный DNSЭто также основа httpdns, некоторых общедоступных DNS: Baidu: 180.76.76.76, Ali: 223.5.5.5/233.6.6.6, Tencent: 119.29.29.29.
Схема рекурсивного запроса(дайте мне ответ): A->B, B->C, C->D, D->C->B->A;Диаграмма итеративного запроса(дайте мне ответ или подсказку): A->B, A->C, A->D, D->A.
Как работает DNS?
Когда пользователь посещает http://mail.cctv.com/, рабочий процесс DNS:
Когда пользователь инициирует запрос разрешения доменного имени, запрос будет отправлен непосредственно в рекурсивный DNS, а затем рекурсивный DNS инициирует итеративный запрос к корневому домену NS, а затем корневой домен вернет NS домена com. . После того, как рекурсивный DNS получит его, он инициирует итеративный запрос к NS домена com. После запроса NS домена com возвращается NS cctv.com. Наконец, рекурсивный DNS инициирует итеративный запрос к NS домена cctv.com, чтобы получить окончательный результат — mail.cctv.com.
В случае, если клиент кэшировал DNS, описанный выше процесс будет пропущен, а результат будет возвращен напрямую.
Введение в HTTPS
HTTPDNS — это служба, установленная поверх DNS, которая также преобразует доменные имена в IP-адреса. Разница в том, что HTTPDNS использует порт 80/443 протокола HTTP/HTTPS.
Зачем нам нужен HTTPDNS?
HTTPDNS может заполнить ямы LocalDNS оператора, такие как захват доменного имени, медленный доступ, парсинг и переадресация и т. д.
Как работает HTTPDNS?
Уменьшите сложность операций компании и улучшите использование ресурсов. Kubernetes чаще всего используется в сфере ИТ, и кадровый резерв растет. Сообщество быстро реагирует на потребности пользователей.
Когда HTTPDNS недоступен, он переключается на альтернативную линию и использует для ее получения обычный LocalDNS.
HTTPDNS получает IP-адрес пользователя через рекурсивный DNS, в то время как оператор интернет-провайдера получает адрес LocalDNS, который подвержен отклонениям в позиционировании.
How We Use HTTPDNS
Для служб интерфейса кластера HTTPDNS рекомендуется использовать BGP Anycast, что может помочь пользователям получить доступ к ближайшему серверу HTTPDNS. Вы также можете настроить IP-адрес общедоступного интерфейса.
Используется основной/резервный/резервный метод вызова. Когда один HTTPDNS недоступен, вызывается следующий. Когда все HTTPDNS недоступны, переключитесь на обычный метод LocalDNS. Кроме того, существует метод списка IP-адресов.В SDK программы делается несколько запросов HTTPDNS ping, и узел с наименьшей задержкой отдает приоритет запросу.
Существует два метода запроса: HTTP и HTTPS. HTTPS может предотвратить перехват контента.
Если IP-адрес используется для инициации запроса к HTTPDNS, имя хоста не может быть запрошено. Для этого необходимо добавить хост в заголовок запроса и указать желаемое имя хоста.
DNS-эволюция Хуцзяна
Первобытное общество: ХОЗЯИНЫ
Самый ранний метод — использовать HOSTS для разрешения доменных имен.Файлы HOSTS хранятся в C:\Windows\System32\dirvers\etc\hosts в Windows и /etc/hosts в Linux. Преимущества HOSTS — простота, грубость и скрытность, а недостатки более очевидны, такие как большие файлы, медленная передача, потребление кредита и согласованность.
Общество рабов: Microsoft DNS
Преимущество Microsoft DNS заключается в том, что он прост в использовании, но у него также есть проблемы, такие как черный ящик, масштабируемость, параллелизм, безопасность, плохие возможности централизованного управления и нестабильная синхронизация master-slave.
Феодальное общество: СВЯЗАТЬ
После отказа от Microsoft DNS мы использовали BIND, программное обеспечение DNS с открытым исходным кодом, которое на сегодняшний день является наиболее распространенной реализацией DNS. Использование BIND компанией Hujiang разделено на два этапа: первый этап — развертывание сервисов BIND, а второй этап — оптимизация и преобразование распределенного кластера BIND.
На этапе развертывания у нас есть три линии, и когда пользователь инициирует запрос DNS, он инициирует запрос опроса DNS к этим трем DNS. Это в основном удовлетворяет потребности пользователей, но есть и много проблем. Во-первых, авторитетный DNS допускает рекурсию и переадресацию, что увеличивает нагрузку на DNS-серверы. Тогда изменение записей выполняется вручную, функция разрешения зон отсутствует, а авторитетный DNS — это единственная точка. Наконец, внутренняя и внешняя сети не разделены, а авторитетный DNS действует как кеширующий DNS.
На этапе оптимизации и преобразования кластера мы оборудовали каждую компьютерную комнату двумя авторитетными DNS для обеспечения высокой доступности, а затем отдельно развернули кеш-DNS. из авторитетного DNS.Разделение DNS для чтения и записи.
Преимущества каждого узла DNS
Авторитетный DNS играет роль в обеспечении ротации журналов и интеллектуального разрешения.
Точка оптимизации авторитетной DNS на стороне хозяина: авторитетная DNS закрывает рекурсию и переадресацию, использует ключ + nsupdate для изменения записей и динамически обновляет записи синтаксического анализа.
Авторитетная точка оптимизации подчиненной стороны DNS: добавлен интерфейс-интервал1, который используется для обнаружения дрейфа vip кластеров кардиостимуляторов.Если синхронизация ведущий-ведомый несовместима, каждая подчиненная запись изменяется отдельно.
Кэш-разделение DNS: ограничить объем разрешенных запросов — интрасеть, включить рекурсию. Управление бэкэнд-логикой
Капиталистическое общество: HTTPDNS
Hujiang в основном выполняла две задачи при разработке HTTPDNS: первая — это выбор служб интерфейса HTTPDNS и выбор между собственными службами HTTPDNS и сторонними службами. После выбора службы интерфейса необходимо преобразовать мобильный SDK, что является второй задачей.
DNS-яма
Время разрешения DNS долгое
Основная причина заключается в том, что DNS поддерживает службы рекурсии и переадресации, но не выполняет распределение и разделение чтения и записи и развертывается на одной линии интернет-провайдера.
Проблемы безопасности DNS
Распространенные методы DNS-атак включают флуд DNS-запросов, udp-флуд, рефракционную атаку и атаку с усилением.
Противодействие этому заключается в приобретении сторонних сервисов для защиты от атак с большим объемом трафика, увеличении пропускной способности общедоступной сети DNS, установке стратегии белого списка для авторитетных DNS и ограничении скорости DNS для повышения производительности параллелизма DNS.
После настройки разрешения DNS клиент не вступает в силу
Некоторые клиентские приложения, которые полагаются на такие платформы, как java/.net/python, такие как salt-minion, не могут быть обновлены сразу после настройки разрешения DNS.
Причина в том, что программа не запускает модуль RES_INIT () клиентского DNS Resolver Glibc для работы. Python Socket.getAddrinfo использует только вызовы RES_INIT (), когда программа начинается впервые, и считывает содержимое / etc / resolv.conf.
Решение состоит в том, чтобы перезапустить клиентскую программу, чтобы заставить клиентский преобразователь DNS работать. Или клиентская программа напрямую использует базовую функцию разрешения доменных имен вместо сторонней платформы.
Неточное разрешение зоны DNS
Это может быть связано с проблемой переадресации разрешения LocalDNS или авторитетной библиотеки IP-адресов DNS.
Неверная запись NS у регистратора DNS
В это время вам необходимо немедленно изменить значение связующих записей регистратора доменного имени на правильное значение или попросить регистратора доменного имени обновить связующие записи, которые влияют на доменное имя отдельно.
Загрязнение DNS
Само собой разумеется, используйте HTTPDNS!