۱. مقدمه

این آزمایشگاه کد شما را در تنظیم مناطق ارسال خروجی Cloud DNS با استفاده از یک نام دامنه کاملاً واجد شرایط (FQDN) به عنوان هدف ارسال راهنمایی میکند. این ویژگی به شما امکان میدهد ترافیک DNS را به آدرسهای IP که از یک نام DNS حل شدهاند هدایت کنید، نه اینکه آدرسهای IP را در پیکربندی منطقه ارسال خود به صورت hard-coding وارد کنید. این امر به ویژه زمانی مفید است که آدرسهای IP حلکننده DNS backend شما تغییر کنند، زیرا میتوانید رکورد DNS را برای FQDN بهروزرسانی کنید و Cloud DNS به طور خودکار تغییرات را دریافت میکند.
در پایان این آزمایشگاه کد، شما قادر خواهید بود مناطق ارسال DNS ابری را که از موارد زیر استفاده میکنند، پیکربندی کنید:
- یک هدف FQDN که با یک منطقه خصوصی با رکوردهای A/AAAA مطابقت دارد.
- یک هدف FQDN که توسط سیاستهای مسیریابی Cloud DNS (موقعیت جغرافیایی یا الگوریتم نوبتدهی وزندار) برای وابستگی منطقهای یا توزیع ترافیک پشتیبانی میشود.
مروری بر ارسال FQDN
ارسال DNS ابری به شما این امکان را میدهد که نامهای DNS خصوصی میزبانی شده در خارج از پلتفرم ابری گوگل (به عنوان مثال، در محل یا سایر ابرها) را از منابع پلتفرم ابری گوگل دریافت کنید. به طور سنتی، این روش از ارسال به لیستی از آدرسهای IP هدف پشتیبانی میکرد. ارسال FQDN با امکان تعیین یک FQDN به عنوان هدف ارسال در یک منطقه ارسال، این قابلیت را گسترش میدهد.
وقتی یک FQDN مشخص میشود، Cloud DNS آن را با استفاده از یک جستجوی داخلی به آدرسهای IP تبدیل میکند که از منطق تفکیک شبکه منبع استفاده میکند. این بدان معناست که هدف FQDN میتواند با یک منطقه خصوصی، یک سیاست مسیریابی DNS (موقعیت جغرافیایی یا رابین چرخشی وزندار) یا حتی یک نام دامنه عمومی اینترنتی مطابقت داشته باشد. Cloud DNS سپس پرس و جو را به IP مقصد حل شده ارسال میکند.
آنچه خواهید ساخت
ارسال FQDN منطقهای با یک منطقه خصوصی جدید
شما تنظیماتی ایجاد خواهید کرد که به وابستگی منطقهای برای ترافیک DNS دست یابد. این شامل ایجاد یک منطقه DNS خصوصی و پیکربندی یک سیاست مسیریابی موقعیت مکانی در داخل آن و سپس پیوند دادن یک منطقه ارسال به این هدف FQDN است. این تضمین میکند که ترافیک از یک منطقه خاص (به عنوان مثال، us-east1) به یک سرور DNS منطقهای مربوطه ارسال شود.
ارسال FQDN با یک منطقه خصوصی موجود
شما یاد خواهید گرفت که یک منطقهی فورواردینگ ایجاد کنید که یک FQDN پشتیبانیشده توسط یک رکورد A/AAAA را در یک منطقهی DNS خصوصی موجود هدف قرار دهد. این آموزش، فوروارد کردن کوئریها به آدرسهای IP تعریفشدهی استاتیک را که با استفاده از یک هدف فورواردینگ FQDN حل میشوند، نشان میدهد.
آنچه یاد خواهید گرفت
مفهوم ارسال FQDN
شما متوجه خواهید شد که ارسال FQDN، ارسال DNS را با امکان تعیین یک هدف ارسال FQDN به جای فقط آدرسهای IP به عنوان اهداف ارسال برای کوئریهای خروجی، گسترش میدهد.
مزایای ارسال FQDN
شما خواهید آموخت که این ویژگی، نیاز به بهروزرسانیهای دستی را هنگام تغییر آدرسهای IP مربوط به حلکننده DNS در backend از بین میبرد، زیرا Cloud DNS به طور خودکار تغییرات را از رکورد DNS مربوط به FQDN دریافت میکند. همچنین با اجازه دادن به سرورهای DNS برای قرار گرفتن در پشت یک نام مشترک یا مقیاسپذیری پویا، امکان مقیاسپذیری انعطافپذیرتر زیرساخت DNS را فراهم میکند.
ادغام با سیاستهای مسیریابی Cloud DNS
شما یاد خواهید گرفت که چگونه میتوان FQDN Forwarding را با سیاستهای مسیریابی Cloud DNS (موقعیت جغرافیایی یا الگوریتم Round Robin وزندار) ترکیب کرد تا به وابستگی منطقهای دست یافت، عملکرد را برای استقرارهای متنوع جغرافیایی بهینه کرد و ترافیک را بر اساس وزنهای پیکربندیشده توزیع کرد.
نحو دستور Google Cloud CLI
شما با دستور gcloud dns managed-zones create و پرچمهای مربوطه آن ( --forwarding-targets , --private-forwarding-targets ) برای تنظیم مناطق ارسال FQDN آشنا خواهید شد.
پیشنیازها
برای تکمیل این codelab، به موارد زیر نیاز دارید:
- یک حساب گوگل
- یک پروژه گوگل کلود با قابلیت پرداخت صورتحساب
- ابزار خط فرمان gcloud نصب و پیکربندی شده است
- درک اولیه از Cloud DNS و مفاهیم DNS
۲. راهاندازی
درک سناریوهای ارسال FQDN
ارسال FQDN در Cloud DNS از چندین سناریوی استفاده پشتیبانی میکند:
- منطقه خصوصی با رکورد A/AAAA : اگر FQDN با یک رکورد A/AAAA در یک منطقه خصوصی مطابقت داشته باشد، آدرسهای IP تعیینشده به لیست ارسال اضافه میشوند و رفتار مشابه ارسال مستقیم به آدرسهای IP هدف است.
- منطقه خصوصی با سیاست موقعیت جغرافیایی : سیاستهای موقعیت جغرافیایی به شما امکان میدهند موقعیت جغرافیایی منبع را مشخص کنید و پاسخهای مربوطه را ارائه دهید و توزیع ترافیک را بر اساس جغرافیا تأیید کنید. این کلید برای ارسال و وابستگی DNS منطقهای است.
- منطقه خصوصی با سیاست وزندهی نوبت گردشی (WRR) : سیاستهای WRR امکان تعیین وزنهای مختلف برای هر آدرس IP را برای یک نام DNS فراهم میکنند و تأیید میکنند که ترافیک بر اساس وزنهای پیکربندیشده توزیع میشود.
- منطقه عمومی با رکورد A/AAAA : اگر FQDN با هیچ نام خصوصی قابل مشاهده در همان شبکه مطابقت نداشته باشد، Cloud DNS سعی میکند آن را با استفاده از اینترنت عمومی حل کند.
درک دستور Google Cloud CLI برای ارسال FQDN
برای ایجاد یک منطقه فورواردینگ با یک هدف فورواردینگ FQDN با استفاده از دستورات gcloud CLI، از دستور gcloud dns managed-zones create استفاده خواهید کرد. پرچمهای کلیدی برای مشخص کردن یک هدف FQDN عبارتند از --forwarding-targets یا --private-forwarding-targets . لطفاً برای جزئیات بیشتر در مورد روشهای مسیریابی استاندارد و خصوصی، به سند مربوطه مراجعه کنید.
-
--forwarding-targets: فهرست آدرسهای IPv4/IPv6 یا یک نام دامنه از سرور نام هدف که منطقه، کوئریها را به آن ارسال میکند. برای مشاهده عمومی نادیده گرفته میشود. آدرسهای غیر RFC1918 از طریق اینترنت به هدف ارسال میشوند. آدرسهای RFC1918 از طریق VPC ارسال میشوند. -
--private-forwarding-targets: فهرست آدرسهای IPv4/IPv6 یا یک نام دامنه از سرور نام هدف که منطقه، کوئریها را به آن ارسال میکند. برای مشاهده عمومی نادیده گرفته میشود. تمام آدرسهای مشخص شده برای این پارامتر از طریق VPC قابل دسترسی خواهند بود.
نمونه سینتکس:
gcloud dns managed-zones create NAME \
--description=DESCRIPTION \
--dns-name=DNS_SUFFIX \
--networks=VPC_NETWORK_LIST \
--forwarding-targets=DEFAULT_FQDN_TARGET \
--visibility=private
توجه داشته باشید که میتوانید به جای --forwarding-targets ، از --private-forwarding-targets targets استفاده کنید.
پروژه پلتفرم ابری گوگل خود را راهاندازی کنید
وارد رابط خط فرمان gcloud شوید.
gcloud auth login
یک پروژه ایجاد کنید.
gcloud projects create my-codelab-project
فعال کردن Cloud DNS API. ممکن است چند دقیقه طول بکشد تا این گزینه اعمال شود.
gcloud services enable dns.googleapis.com
این آزمایشگاه کد از شبکه پیشفرض VPC که با یک پروژه جدید ایجاد میشود استفاده میکند. شما همچنین میتوانید به جای آن یک شبکه جدید ایجاد کنید.
۳. تنظیم ارسال FQDN منطقهای (با منطقه خصوصی جدید)
این سناریو نشان میدهد که چگونه میتوان به ارسال DNS منطقهای دست یافت و اطمینان حاصل کرد که ترافیک از یک منطقه خاص به یک سرور DNS در همان منطقه ارسال میشود.
ایجاد یک منطقه DNS خصوصی
ابتدا، یک منطقه DNS خصوصی (مثلاً foo.com) ایجاد کنید که میزبان FQDN شما و سیاست مسیریابی موقعیت جغرافیایی مرتبط با آن باشد. این منطقه باید برای شبکه پیشفرض شما قابل مشاهده باشد.
gcloud dns managed-zones create my-zone \
--description="Private Zone for FQDN outbound DNS forwarding." \
--dns-name=foo.com. \
--networks=default \
--visibility=private
یک مجموعه رکورد سیاست مسیریابی موقعیت مکانی در منطقه خصوصی ایجاد کنید
در مرحله بعد، یک مجموعه رکورد (برای مثال، geo.foo.com.) در my-zone ایجاد کنید و یک سیاست مسیریابی موقعیت جغرافیایی اعمال کنید. این مثال آدرسهای IP را برای asia-east1 و asia-west1 پیکربندی میکند.
gcloud dns record-sets create geo.foo.com. \
--ttl="30" \
--type="A" \
--zone="my-zone" \
--routing-policy-type="GEO" \
--routing-policy-data="asia-east1=192.168.0.1;us-central1=192.168.0.2"
توجه: اگر حصار جغرافیایی غیرفعال باشد (پیشفرض و توصیه میشود)، اگر هدف در منطقه اصلی ناسالم باشد، پرسوجوها به نزدیکترین منطقه سالم هدایت میشوند.
یک منطقهی ارسال با هدف FQDN ایجاد کنید
یک منطقهی ارسال ( geo.test.com. ) قابل مشاهده در همان شبکهی پیشفرض ایجاد کنید و geo.foo.com. (FQDN با سیاست مسیریابی موقعیت جغرافیایی) را به عنوان هدف ارسال آن تنظیم کنید.
gcloud dns managed-zones create my-geo-fwd-zone \
--description="Forwarding zone for FQDN outbound DNS forwarding for routing policy." \
--dns-name=geo.test.com. \
--networks=default \
--private-forwarding-targets=geo.foo.com. \
--visibility=private
هر کوئری DNS که با geo.test.com مطابقت داشته باشد، اکنون بر اساس ناحیه منبع کوئری، به IP حلشده (برای مثال، ۱۹۲.۱۶۸.۰.۱ یا ۱۹۲.۱۶۸.۰.۲) مربوط به geo.foo.com ارسال میشود.
۴. تنظیم FQDN Forwarding (با وجود private zone)
یک منطقه DNS خصوصی موجود داشته باشید
فرض کنید شما از قبل یک DNS Zone خصوصی به نام my-zone (foo.com.) دارید که برای شبکه پیشفرض قابل مشاهده است.
یک رکورد منبع DNS در این منطقه خصوصی ایجاد کنید
یک رکورد از نوع A برای a.foo.com. در my-zone موجود خود ایجاد کنید.
gcloud dns record-sets create a.foo.com. \
--ttl="30" \
--type="A" \
--zone="my-zone" \
--rrdatas=1.2.3.4
یک منطقهی ارسال ایجاد کنید و هدف FQDN را مشخص کنید
مشابه سناریوی FQDN منطقهای، یک منطقهی ارسال ایجاد کنید و a.foo.com را به عنوان هدف ارسال مشخص کنید.
gcloud dns managed-zones create my-a-fwd-zone \
--description="Forwarding zone for FQDN outbound DNS forwarding for A record." \
--dns-name=a.test.com. \
--networks=default \
--private-forwarding-targets=a.foo.com. \
--visibility=private
هر کوئری DNS که با a.test.com مطابقت داشته باشد، به آدرسهای IP تعیینشدهی ۱.۲.۳.۴ از a.foo.com ارسال خواهد شد.
۵. تمیز کردن
قبل از اینکه یک منطقه خصوصی حذف شود، ابتدا باید تمام ResourceRecordSet های درون منطقه خصوصی حذف شوند (به استثنای رکوردهای NS و SOA که به طور خودکار تولید میشوند و همیشه باید در منطقه خصوصی وجود داشته باشند).
سیاست مسیریابی موقعیت جغرافیایی را در منطقه خصوصی حذف کنید.
gcloud dns record-sets delete "geo.foo.com." --type="A" --zone="my-zone"
رکورد A را در ناحیه خصوصی حذف کنید.
gcloud dns record-sets delete "a.foo.com." --type="A" --zone="my-zone"
منطقه خصوصی را حذف کنید.
gcloud dns managed-zones delete "my-zone"
منطقهی ارسال برای سیاست مسیریابی موقعیت جغرافیایی را حذف کنید.
gcloud dns managed-zones delete "my-geo-fwd-zone"
منطقه ارسال برای رکورد A را حذف کنید.
gcloud dns managed-zones delete "my-a-fwd-zone"
۶. تبریک
تبریک میگویم، شما با موفقیت یاد گرفتید که از FQDN outbound DNS forwarding استفاده کنید!