Cloud DNS ResourceRecordSets API

۱. مقدمه

64e18005b6cdcd83.png

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

DNS ابری چیست؟

از صفحه اصلی ما دیدن کنید.

آنچه خواهید ساخت

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

آنچه یاد خواهید گرفت

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

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

۲. راه‌اندازی

پروژه پلتفرم ابری گوگل خود را راه‌اندازی کنید

ورود به جی کلود

gcloud auth login

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

gcloud projects create my-codelab-project

فعال کردن API Cloud DNS

gcloud services enable dns.googleapis.com

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

۳. ایجاد یک ManagedZone خصوصی

یک ManagedZone شامل ResourceRecordSetها می‌شود.

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

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

۴. مدیریت مجموعه رکوردهای منابع

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

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

ایجاد یک رکورد 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 به دستگاه خود متصل شوید. در این مثال، ما از یک نمونه ماشین مجازی با نام "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. را به ۱.۲.۳.۴ نگاشت کرده‌اید، احتمالاً می‌خواهید مطمئن شوید که www.my-domain.com. نیز به ۱.۲.۳.۴ تبدیل می‌شود. رکوردهای مربوط به پیشوندهای "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 برای آن دامنه وجود ندارد

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

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

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" یک اشتباه تایپی رخ داده است. به جای حذف و ایجاد مجدد رکورد، می‌توانیم تغییر صحیح را اصلاح کنیم.

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

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 وجود داشته باشند).

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

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"

۵. تبریک

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

مطالعه بیشتر

اسناد مرجع