1. مقدمه
آخرین به روز رسانی: 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 خود را مدیریت کنید!