Почему моя запись A в Google Cloud DNS не может быть разрешена сразу после создания?
Я создаю запись DNS A через API Google Cloud, которая заканчивается:
- DNS-имя: some-subdomain.mysite.io
- Наберите "А
- TTL: 1
- IP: 35.XXX.XXX.XX
После того, как запись подтверждена как созданная и видимая в 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
Он остается таким в течение нескольких минут, пока в конечном итоге не разрешится.
Поскольку первый поиск выполняется после того, как он был создан, я ожидал, что он не будет пропущен (и, следовательно, не будет пропущен кэш). Могу ли я что-нибудь сделать, чтобы поиск был быстрее?
3 ответа
Решение, которое мы придумали, заключалось в использовании записи DNS с подстановочными знаками. Итак, теперь у меня есть запись:
*.mysite.io -> 10.XX.XX.XX
Это означает, что любой поддомен, который мы создаем, может быть разрешен немедленно, так как DNS уже существует. Затем мы осуществляем внутреннюю маршрутизацию на основе заголовка узла.
Если вы выполняете запрос непосредственно перед созданием записи, вы загрязняете кэш кодом возврата NXDOMAIN для записи для задержки, называемой отрицательным TTL, который указан в записи SOA (последний элемент).
Кроме того, вы не должны использовать nslookup
для диагностики DNS, но dig
и вы всегда должны указывать сервер имен в своем запросе, чтобы убедиться, что результаты, полученные от авторитетных серверов имен, отделены от результатов, кэшируемых где-то в рекурсивном сервере имен.
Вы создаете запись через API Google Cloud и начинаете ее разрешать. Но вы не знаете, как часто Google обновляет свою конфигурацию DNS, может потребоваться несколько минут, чтобы обновить конфигурацию зоны, поэтому она не разрешается в течение нескольких минут.
Если вы хотите узнать больше о работе DNS, вы можете прочитать эту статью или проверить этот комикс, например.