Cloud DNS ResourceRecordSets API

1. مقدمه

64e18005b6cdcd83.png

آخرین به روز رسانی: 06-01-2021

Cloud DNS چیست؟

صفحه اصلی ما را ببینید.

چیزی که خواهی ساخت

در این Codelab شما یک Cloud DNS ManagedZone و ResourceRecordSets مربوطه را با استفاده از gcloud برای مدیریت وضوح نام برخی از نمونه های VM ایجاد خواهید کرد.

چیزی که یاد خواهید گرفت

نحوه ایجاد، خواندن، حذف و به روز رسانی ResourceRecordSets فردی.

آنچه شما نیاز دارید

2. راه اندازی

پروژه Google Cloud Platform خود را راه اندازی کنید

وارد gcloud شوید

gcloud auth login

یک پروژه ایجاد کنید

gcloud projects create my-codelab-project

Cloud DNS API را فعال کنید

gcloud services enable dns.googleapis.com

ممکن است چند دقیقه طول بکشد تا این عمل موثر شود

3. ایجاد ManagedZone خصوصی

یک ManagedZone حاوی ResourceRecordSets است.

به نام دامنه ای که می خواهید رکوردهای DNS را برای آن اضافه کنید توجه کنید. در این مثال، ما از "my-domain.com" استفاده می کنیم و فرض می کنیم نمونه VM شما در شبکه پیش فرض است.

gcloud dns managed-zones create my-zone \
    --description="ManagedZone for Cloud DNS ResourceRecordSets codelab." \
    --dns-name=my-domain.com. \
    --networks=default \
    --visibility=private

4. ResourceRecordSets را مدیریت کنید

در پایان این بخش، درخواست‌های DNS از طریق شبکه خصوصی مجازی شما برای دامنه شما به آدرس IP VM حل می‌شود.

برای مثال، اگر آدرس IP ماشین مجازی شما "1.2.3.4" است و شما "my-domain.com" را می خواهید. برای حل آن آدرس IP، باید یک "رکورد" ایجاد کنید.

یک رکورد A ایجاد کنید

gcloud dns record-sets create "my-domain.com." --type="A" --ttl="60" --rrdatas="1.2.3.4" --zone="my-zone"
  • آرگومان موقعیتی "my-domain.com." ، با نام مستعار dnsName، نامی است که می خواهیم وضوح DNS را برای آن تعریف کنیم.
  • –type : نشان دهنده نوع رکورد DNS است که ما می خواهیم ایجاد کنیم.
  • –ttl : نشان دهنده زمان زندگی برای این رکورد است.
  • –rrdatas : پاسخ واقعی پرس و جو را نگه می دارد.
  • –zone : برای هدایت این رکورد در کدام ManagedZone باید ایجاد شود.

درباره مفاهیم DNS اینجا بیشتر بخوانید.

اکنون که رکورد A خود را ایجاد کرده اید، باید بتوانید وضوح DNS را آزمایش کنید.

SSH به دستگاه شما. در این مثال ما از یک نمونه VM با نام "dns-codelab" در "us-central1-a" استفاده می کنیم.

gcloud compute ssh codelab --zone=us-central1-a

dnsutils را نصب کنید تا بتوانید از دستور 'dig' استفاده کنید

sudo apt install dnsutils

دامنه خود را پرس و جو کنید

dig my-domain.com.

این باید خروجی مشابه تولید کند

...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19979
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
...
;; QUESTION SECTION:
;my-domain.com.                        IN        A

;; ANSWER SECTION:
my-domain.com.                60        IN        A        1.2.3.4
...

یک رکورد CNAME ایجاد کنید، وصله کنید و دریافت کنید

اکنون که my-domain.com را نقشه برداری کرده اید. به 1.2.3.4، احتمالاً می خواهید مطمئن شوید که www.my-domain.com. همچنین به 1.2.3.4 حل می شود. سوابق برای "www." پیشوندها به طور خودکار ایجاد نمی شوند.

اگر از www.my-domain.com پرس و جو می کنید.

dig www.my-domain.com.

خروجی مشابه دریافت خواهید کرد

...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 61964
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
...

نشان می دهد که هیچ رکورد DNS برای آن دامنه وجود ندارد

به جای ایجاد یک رکورد دیگر، باید یک رکورد CNAME ایجاد کنیم که نشانگر یک رکورد دیگر است. در صورتی که بخواهیم از آدرس IP متفاوتی استفاده کنیم، این امر باعث می‌شود که مجبور نباشیم هر دو رکورد را تغییر دهیم.

از VM inst خود خارج شوید

exit

رکورد CNAME ایجاد کنید

gcloud dns record-sets create "www.my-domain.com." --type="CNAME" --ttl="60" --rrdatas="my-domin.com." --zone="my-zone"

اکنون که رکورد CNAME خود را ایجاد کرده اید، باید بتوانید وضوح DNS را آزمایش کنید.

SSH دوباره به دستگاه شما

gcloud compute ssh codelab --zone=us-central1-a

دامنه خود را پرس و جو کنید

dig www.my-domain.com.

شما باید خروجی مشابه دریافت می کردید

...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 61964
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
...

اوه نه! به نظر می رسد هنگام ایجاد رکورد CNAME خود در پرچم "–rrdatas" اشتباه تایپی وجود داشته است. به جای حذف و ایجاد مجدد رکورد، می‌توانیم تغییر صحیح را اصلاح کنیم.

از نمونه VM خود خارج شوید

exit

رکورد CNAME را وصله کنید

gcloud dns record-sets update "www.my-domain.com." --type="CNAME" --rrdatas="my-domain.com." --zone="my-zone"

توجه داشته باشید که ما می‌توانیم پرچم "–ttl" را حذف کنیم زیرا آن را تغییر نمی‌دهیم، اما همه پرچم‌های دیگر باید گنجانده شوند زیرا بخشی از شناسه منحصربه‌فرد ResourceRecordSet هستند.

همچنین می‌توانیم با استفاده از gcloud تأیید کنیم که رکورد مطابق انتظار است

gcloud dns record-sets describe "www.my-domain.com." --type="CNAME" --zone="my-zone"

که باید خروجی تولید کند

NAME                    TYPE    TTL  DATA
www.my-domain.com.      CNAME   60  "my-domain.com."

بررسی کنید که رکورد CNAME به درستی حل می شود

gcloud compute ssh codelab --zone=us-central1-a
dig www.my-domain.com.

شما باید خروجی مشابه دریافت می کردید

...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7471
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1
...
;; QUESTION SECTION:
;www.my-domain.com.                IN        A

;; ANSWER SECTION:
www.my-domain.com.        60        IN        CNAME         my-domain.com..
...

برای پاکسازی، حذف کنید

قبل از حذف ManagedZone، ابتدا باید تمام ResourceRecordSetها در ManagedZone حذف شوند (به استثنای رکوردهای NS و SOA که به طور خودکار تولید می شوند و همیشه باید در ManagedZone وجود داشته باشند).

از نمونه VM خود خارج شوید

exit

رکورد CNAME را حذف کنید

gcloud dns record-sets delete "www.my-domain.com." --type="CNAME" --zone="my-zone"

رکورد A را حذف کنید

gcloud dns record-sets delete "my-domain.com." --type="A" --zone="my-zone"

ManagedZone را حذف کنید

gcloud dns managed-zones delete "my-zone"

5. تبریک می گویم

تبریک می‌گوییم، شما با موفقیت یاد گرفتید که ResourceRecordSets خود را مدیریت کنید!

در ادامه مطلب

اسناد مرجع