Настройка частного DNS в облаке Google

#google-cloud-platform #dns #nslookup #google-cloud-dns

# #google-облачная платформа #dns #nslookup #google-cloud-dns

Вопрос:

2 года назад Google внедрил частный DNS, что очень важно для внутренней связи доменов.

Я настраиваю частный DNS, чтобы узнать о DNS, используя приведенное ниже руководство по документации https://cloud.google.com/sdk/gcloud/reference/dns/managed-zones/create
https://www.jhanley.com/google-cloud-private-dns-zones /

Ниже приведены шаги, необходимые для создания примерной зоны

Создана частная зона «private-zone»

 gcloud dns managed-zones create --dns-name="example.com" --description="Private Zone" --visibility=private --networks=default "private-zone"
 

Затем создал виртуальную машину в облаке Google и запустил nslookup для доменного имени.
Но это не разрешило

 testdns:~$ nslookup example.com
Server:         169.254.169.254
Address:        169.254.169.254#53
Non-authoritative answer:
*** Can't find example.com: No answer
 

Я использую ОС Debian на созданном экземпляре виртуальной машины

 Linux testdns 4.19.0-12-cloud-amd64 #1 SMP Debian 4.19.152-1 (2020-10-18) x86_64 GNU/Linux
 

Это две записи A, отличные от записей NS и SOA в

 test.example.com.   A   300  192.0.0.9
www.example.com.    A   300  192.0.0.91
example.com.        A   3600 192.0.1.1
 

Был протестирован приведенный ниже пример

nslookup, когда «example.com » Запись не была добавлена

 mymach@testdns:~$ nslookup example.com ns-gcp-private.googledomains.com
Server:         ns-gcp-private.googledomains.com
Address:        169.254.169.254#53
Non-authoritative answer:
*** Can't find example.com: No answer
 

#копать example.com используя сервер имен, была добавлена запись ‘A’

 testdns:~$ dig example.com @ns-gcp-private.googledomains.com
; <<>> DiG 9.11.5-P4-5.1 deb10u2-Debian <<>> example.com @ns-gcp-private.googledomains.com
;; global options:  cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41534
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;example.com.                   IN      A
;; ANSWER SECTION:
example.com.            3600    IN      A       192.0.1.1
;; Query time: 12 msec
;; SERVER: 169.254.169.254#53(169.254.169.254)
;; WHEN: Tue Dec 08 23:03:58 UTC 2020
;; MSG SIZE  rcvd: 56
 

nslookup снова после добавления example.com

 testdns:~$ nslookup example.com ns-gcp-private.googledomains.com
Server:         ns-gcp-private.googledomains.com
Address:        169.254.169.254#53
Non-authoritative answer:
Name:   example.com
Address: 192.0.1.1
 

копать

 testdns:~$ dig example.com 
; <<>> DiG 9.11.5-P4-5.1 deb10u2-Debian <<>> example.com
;; global options:  cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24673
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;example.com.                   IN      A
;; ANSWER SECTION:
example.com.            3600    IN      A       192.0.1.1
;; Query time: 11 msec
;; SERVER: 169.254.169.254#53(169.254.169.254)
;; WHEN: Tue Dec 08 23:06:30 UTC 2020
;; MSG SIZE  rcvd: 56
 

копайте с помощью локального хоста

 dig example.com @127.0.0.1
; <<>> DiG 9.11.5-P4-5.1 deb10u2-Debian <<>> example.com @127.0.0.1
;; global options:  cmd
;; connection timed out; no servers could be reached
 

Я пропустил какой-то шаг?

Комментарии:

1. Вы изменяли /etc/resolv.conf или вносили какие-либо другие изменения в DNS или DHCP в экземпляре, на котором выполняется эта команда? Что вы ожидаете example.com решить? Если вы не создали записи ресурсов DNS, example.com не имеет ничего, что можно было бы вернуть.

2. @JohnHanley; Спасибо за ответ, я не изменял файл resolv.conf, я ожидаю, что это даст мне IP-адрес, который я получил в рамках настройки частного домена в записи

3. Отредактируйте свой вопрос, указав подробные сведения о записях A. Также вы на самом деле используете example.com или это просто заполнитель? Какая ОС и версия? Опубликуйте результат этой команды nslookup example.com 127.0.0.1

4. Перейдите в облачную консоль Google -> Сетевые службы -> Сведения о зоне. Найдите значение для записи ресурса NS. Замените NS_VALUE на это значение в этой команде: nslookup example.com NS_VALUE . Опубликуйте этот вывод в своем вопросе.

5. Теперь так все работает с DNS или с веб-браузерами. Когда вы вводите example.com текст в веб-браузере, а затем браузер отображает www.example.com это из-за перенаправления HTTP веб-сервером, балансировщиком нагрузки и т. Д. Если вы разрешите example.com , это только разрешится example.com . Я игнорирую подстановочные знаки.

Ответ №1:

После создания зоны с помощью:

 gcloud dns managed-zones create --dns-name="example.com" --description="Private Zone" --visibility=private --networks=default "private-zone"
 

Для этого необходимо создать DNS-реестры, например:

 gcloud dns record-sets transaction start --zone="private-zone"
gcloud dns record-sets transaction add 10.2.3.4 --name="example.com" --ttl="3600" --type="A" --zone="private-zone"
gcloud dns record-sets transaction execute --zone="private-zone"
 

Дайте GCP 1 минуту, чтобы наверстать упущенное, а затем повторите попытку с файлом по умолчанию «/etc/resolv.conf».

Комментарии:

1. Спасибо @Frank, да.. Я добавил запись A в пользовательский интерфейс, но просто интересно, как она будет разрешаться для различных запросов, таких как «www.example.com » или » example.com » или любой другой подобный запрос, который не совсем «example.com »

2. Вам нужно будет добавить эти записи вручную, основываясь на моем опыте работы с поддоменами «www», они добавляются как «CNAME» вместо типа «A», указывающего на корневую запись «example.com «, таким образом, когда происходит изменение в «example.com «, тот самый «www.example.com » запись была бы следуйте автоматически, вы также можете вручную поддерживать как «www», так и корневые домены отдельно.