Я создаю DNS-запись A через Google Cloud API, и в итоге получаю:
После подтверждения того, что запись создана и доступна для просмотра в API, я пытаюсь разрешить ее с помощью nslookup, но получаю:
$ nslookup some-subdomain.mysite.io
Server: 192.168.178.1
Address: 192.168.178.1#53
** server can't find some-subdomain.mysite.io: NXDOMAIN
Он остается таким в течение нескольких минут, пока в конечном итоге не исчезнет.
Поскольку первый поиск выполняется после того, как он был создан, я ожидаю, что он не пропустит (и, следовательно, не пропустит кеш). Могу ли я что-нибудь сделать, чтобы поиск завершился быстрее?
Если вы выполняете запрос непосредственно перед созданием записи, вы загрязняете кеш кодом возврата NXDOMAIN для записи для задержки, называемой отрицательным TTL, которая указана в записи SOA (последний элемент).
Также не следует использовать nslookup
для диагностики DNS, но dig
и вы всегда должны указывать сервер имен в своем запросе, чтобы гарантировать разделение результатов, поступающих с авторитетных серверов имен, от тех, которые кэшируются где-то на рекурсивном сервере имен.
Вы создаете запись через Google Cloud API и начинаете ее разрешать. Но вы не знаете, как часто Google обновляет свою конфигурацию DNS, может потребоваться несколько минут для обновления конфигурации зоны, поэтому она не разрешается в течение нескольких минут.
Если вы хотите узнать больше о работе DNS, вы можете прочитать Эта статья или проверить этот комикс, например.
Решение, которое мы придумали, заключалось в использовании записи DNS с подстановочными знаками. Итак, теперь у меня есть запись:
*.mysite.io -> 10.XX.XX.XX
Это означает, что любой субдомен, который мы создаем, может быть разрешен немедленно, поскольку DNS уже существует. Затем мы выполняем внутреннюю маршрутизацию на основе заголовка хоста.