Я использовал инструмент поиска DNS, чтобы найти Name Server
и A Records
записи для www.google.com
Вот что там сказано
www.google.com results
ns2.google.com
IN 172.217.15.68
Он показал одну запись A, а записи CNAME не были найдены. Но когда я решил www.google.com
из разных сетей он вернул мне разные IP-адреса. Как они это делают? Они используют DNS Round Robin? Но как же тогда я нашел только одну пластинку А?
$ dig www.google.com +short
172.217.21.164
$ dig www.google.com +short
216.58.211.4
$ dig www.google.com +short
172.217.20.36
Думаю, я понял это, поэтому поделюсь с другими, кому может быть интересно, как это работает.
Что ж, насколько я понимаю, Google владеет собственными авторитетными DNS-серверами имен (что означает, что он может возвращать любой IP-адрес, который хочет каждый раз), поэтому он сначала определяет местоположение вашего IP-адреса, а затем выдает случайный адрес A (или несколько адресов ) своих серверов рядом с вами.
Вот почему каждый раз, когда вы выполняете поиск в DNS для www.google.com (или из разных мест по всему миру), вы получаете другой адрес A IPv4 (или несколько адресов). Таким образом они уравновешивают нагрузку, а затем могут еще больше уравновесить ее. Это похоже на "Round Robin DNS" на стероидах.
Это небольшая картинка, которую я собрал, чтобы проиллюстрировать ее. Итак, ваш компьютер (или маршрутизатор) спрашивает DNS-сервер Resolver, для чего нужна запись A. www.google.com
есть, и если он не хранится в кеше, он свяжется с Root DNS server
и спроси это. Он вернет IP-адрес .com
DNS-сервер, чтобы Resolver DNS запросил сервер имен .com. DNS-сервер .com вернет адрес DNS-серверов Google. ns.google.com
. Потом идет и спрашивает. Он (видя, что вы из Европы / Азии / Америки) вернет вам IP-адреса ближайших к вам серверов. И затем DNS-сервер Resolver будет циклически случайным образом возвращать эти записи вам, и ваш клиент начнет с выбора первой из этого списка. Я думаю, если он не будет доступен, он выберет следующий и так далее.
Пожалуйста, поправьте меня, если я где-то ошибаюсь.