סקירה כללית של DNS פנימי

כשיוצרים מכונות Compute Engine, מערכת ה-DNS הפנימית יוצרת באופן אוטומטי שם DNS למכונה. שם ה-DNS הזה מאפשר תקשורת פנימית בין מופעים על ידי תרגום של כתובות IP פנימיות. רשתות של ענן וירטואלי פרטי (VPC) ב- Google Cloud משתמשות בשירות ה-DNS הפנימי כדי לאפשר למופעי מחשוב באותה רשת לגשת זה לזה באמצעות שמות DNS פנימיים.

Google Cloud יוצר, מעדכן ומסיר באופן אוטומטי את סוגי רשומות ה-DNS הבאים כשמנהלים את המופעים:

  • רשומות כתובת DNS, או רשומות A, נוצרות עבור מופעים באזור DNS עבור .internal.
  • רשומות PTR של מופעים, שמשמשות לשאילתת DNS הפוכה, נוצרות באזורים הפוכים תואמים.

לדוגמה, כשמוחקים מופע, Google Cloud מסיר באופן אוטומטי את רשומות ה-A וה-PTR המשויכות לשם ה-DNS הפנימי שלו. אם לאחר מכן תיצרו מופע עם אותו שם, Google Cloud ייצור רשומות חדשות עבור ההחלפה.

מגבלות

  • ‫Compute Engine יוצר רשומות A ו-PTR של שמות DNS פנימיים רק עבור כתובת ה-IPv4 הפנימית הראשית של ממשק הרשת nic0 של מופע. לכן, סוג המחסנית של ממשק הרשת nic0 חייב להיות IPv4 בלבד או מחסנית כפולה. מערכת DNS פנימית לא תומכת בממשקי רשת IPv6 בלבד.

  • ‫Compute Engine לא יוצר רשומות DNS פנימיות עבור:

    • כתובת ה-IPv4 הפנימית הראשית של ממשק רשת ששונה מ-nic0.
    • כתובת IPv4 חיצונית של כל ממשק רשת.
    • כתובת IPv4 פנימית של טווח כתובות IP של כינוי של כל ממשק רשת.
    • טווח כתובות IPv6 פנימי או חיצוני של כל ממשק רשת.
  • כדי לפתור שמות DNS פנימיים, המכונה הווירטואלית של הלקוח והמכונה הווירטואלית שמשויכת לרשומת ה-DNS הפנימית צריכות להיות:

    • באותה רשת VPC.
    • באותו פרויקט (חוץ מתרחישים מסוימים של VPC משותף).

    מידע נוסף על תרחישים של VPC משותף זמין במאמר שמות DNS פנימיים ו-VPC משותף.

שמות DNS פנימיים אזוריים וגלובליים

ב-Google Cloud יש שני סוגים של שמות DNS פנימיים:

  • DNS אזורי: שמות המופעים חייבים להיות ייחודיים בכל אזור, אבל אפשר להשתמש מחדש בשמות של מופעים באזורים שונים. לדוגמה, יכולים להיות כמה מופעים בשם instance-1 כל עוד המופעים נמצאים באזורים שונים.
  • DNS גלובלי: שמות של מופעים חייבים להיות ייחודיים בכל פרויקט. ב-DNS גלובלי, אי אפשר להשתמש בשמות של מופעים כמה פעמים באותו פרויקט.

‫Google ממליצה מאוד להשתמש ב-DNS אזורי כי הוא מציע אמינות גבוהה יותר על ידי בידוד של כשלים ברישום ה-DNS לאזורים נפרדים. במקרה של הפסקה זמנית בשירות, יש בעיות ב-DNS גלובליות:

  • שם המופע חייב להיות ייחודי בכל הפרויקט. כתוצאה מכך, אי אפשר ליצור מופעים חדשים באזורים שבהם יש כשלים במישור הבקרה, אם יש לכם משאבי פרויקט באזורים האלה או שהיו לכם בעבר. Google Cloud אי אפשר לאמת את שמות ה-DNS של המשאבים הקיימים באזור הלא זמין.
  • תכונות מסוימות של Compute Engine לא זמינות, כמו התאמה אוטומטית לעומס (automatic scaling) של קבוצות מופעי מכונה מנוהלים (MIG). כתוצאה מכך, האפליקציות שלכם שמשתמשות בהתאמה אוטומטית לעומס כדי לטפל בעלייה בעומס העבודה לא יכולות להגדיל את קנה המידה.

סוג ה-DNS הפנימי שמוגדר כברירת מחדל נקבע כשמפעילים את Compute Engine API.

  • סוג ה-DNS הפנימי שמוגדר כברירת מחדל הוא DNS אזורי.
  • אם בארגון או בפרויקט עצמאי הפעלתם את Compute Engine API לפני 6 בספטמבר 2018, סוג ה-DNS הפנימי שמוגדר כברירת מחדל הוא DNS גלובלי.

שמות הדומיין שמוגדרים במלואם עבור שמות DNS פנימיים מתוארים בטבלה הבאה.

סוג ה-DNS הפנימי שם דומיין שמוגדר במלואו (FQDN)
Zonal DNS INSTANCE_NAME.ZONE.c.PROJECT_ID.internal
DNS גלובלי (בכל הפרויקט) INSTANCE_NAME.c.PROJECT_ID.internal

מחליפים את מה שכתוב בשדות הבאים:

  • INSTANCE_NAME: השם של המכונה. ב-DNS אזורי, הערך הזה חייב להיות ייחודי באזור, אבל אפשר לחזור עליו באזורים אחרים. ב-DNS גלובלי, שם המופע חייב להיות ייחודי בפרויקט.
  • ZONE: האזור שבו נמצאת המכונה.
  • PROJECT_ID: הפרויקט שאליו שייכת המכונה.

למידע על אופן השליטה בסוג של שם DNS פנימי שמשמש ברמת הפרויקט או המכונה, ראו הגדרת שמות DNS לפרויקט או למכונות.

פענוח של שמות DNS

מופעים מקבלים מידע פנימי על פענוח DNS כחלק מהסכמי השכירות שלהם ב-DHCP. שיטת פענוח ה-DNS תלויה בפלטפורמת מערכת ההפעלה:

  • ‫Linux: כברירת מחדל, שרת ה-DNS של המופע פותר שמות DNS פנימיים.
  • ‫Windows: כברירת מחדל, שער ברירת המחדל של רשת המשנה פותר שמות DNS פנימיים.

אזורים הפוכים לרשומות PTR

שירות ה-DNS הפנימי שלGoogle Cloudיוצר באופן אוטומטי רשומות PTR למופעים באזורים ההפוכים הבאים:

  • 10.in-addr.arpa.
  • 168.192.in-addr.arpa.
  • 16.172.in-addr.arpa., ‏ 17.172.in-addr.arpa.,‏ ... עד 31.172.in-addr.arpa.

שמות DNS פנימיים ו-VPC משותף

המכונה הווירטואלית של הלקוח והמכונה הווירטואלית שמשויכת לרשומת ה-DNS הפנימית יכולות להיות בפרויקטים נפרדים, אבל הן חייבות להשתמש באותה רשת VPC משותפת. לדוגמה, הלקוח יכול להיות בפרויקט שירות אחד, והמכונה הווירטואלית שמשויכת לרשומת ה-DNS הפנימי יכולה להיות בפרויקט שירות אחר או בפרויקט המארח.

הלקוחות צריכים להנפיק שאילתות של שמות דומיין שמוגדרים במלואם (FQDN) לרשומות DNS פנימיות, במקום להסתמך על שאילתות חלקיות ועל דומיינים לחיפוש DNS. דומיינים של חיפוש DNS שונים בכל פרויקט, מסיבות כמו:

  • החלק של שם הדומיין בכל רשומת A של DNS פנימי מכיל את מזהה הפרויקט של הפרויקט שמכיל את מכונת ה-VM. במקרה של מכונה וירטואלית בפרויקט שירות שממשק הרשת שלה nic0 משתמש ברשת VPC משותפת, הפרויקט של המכונה הווירטואלית שונה מהפרויקט שמכיל את הרשת.

  • השימוש בשמות DNS פנימיים אזוריים או גלובליים (בכל הפרויקט) תלוי בהגדרה של הפרויקט שמכיל את מכונת ה-VM.

מידע נוסף על VPC משותף זמין במאמרים הבאים:

התאמה אישית של שמות DNS פנימיים

יכול להיות שארגונים או אפליקציות מסוימים ידרשו שמות DNS פנימיים בהתאמה אישית במקום שמות ה-DNS הפנימיים שנוצרו כברירת מחדל על ידי Google Cloud.

תחומים פרטיים ורשומות בהתאמה אישית באמצעות Cloud DNS

אתם יכולים להשתמש בתחום פרטי ב-Cloud DNS כדי ליצור רשומות DNS בהתאמה אישית למופעים שלכם. אתם יכולים להגדיר רשומות PTR שיאפשרו לכם לשנות את שם ה-DNS הפנימי שמוגדר כברירת מחדל למופע, לשם מותאם אישית שתספקו.

כדי ליצור רשומות PTR מותאמות אישית שמבטלות את השמות של רשומות ה-PTR ב-DNS הפנימי שנוצרו באופן אוטומטי, אפשר לעיין במאמר בנושא רשומות PTR לכתובות RFC 1918 באזורים פרטיים. מידע על יצירת רשומות PTR למכונות זמין במאמר יצירת רשומת PTR למכונה.

שמות מארחים בהתאמה אישית

אתם יכולים לציין שם מארח מותאם אישית למופע כשאתם יוצרים אותו. שמות מארחים מותאמים אישית שמוקצים בדרך הזו לא מפוענחים על ידי DNS פנימי. גם כשמשתמשים בשמות מארחים בהתאמה אישית, צריך ליצור רשומת DNS תואמת באזור המתאים (לדוגמה, באמצעות Cloud DNS). מידע נוסף זמין במאמר בנושא יצירת מופע עם שם מארח מותאם אישית.

DNS ו-DHCP פנימיים

המופעים של Compute Engine מוגדרים לחידוש של הקצאות כתובות DHCP כל 24 שעות. במקרים שבהם מופעל DNS אזורי, תוקף ההקצאה של DHCP פג כל שעה. במופעים שמשתמשים ב-DNS אזורי יש רשומות אזוריות וגלובליות בקובץ התצורה של DHCP.

כברירת מחדל, רוב הפצות ה-Linux מאחסנות את פרטי ה-DHCP ב-resolv.conf. אם עורכים את resolv.conf באופן ידני, הוא חוזר ל-DHCP שמוגדר כברירת מחדל בכל פעם שתוקף ההקצאה של DHCP מסתיים במופע. כדי לבצע שינויים סטטיים בקובץ resolv.conf, אפשר להוסיף פריטים בתחילת מדיניות ה-DHCP או בסופה בכמה הפצות של Linux.

הדרך שבה משנים את מדיניות ה-DHCP או את קובץ התצורה תלויה בהפצת Linux שבה משתמשים. לדוגמה, מערכות Red Hat Enterprise Linux ו-Debian משתמשות בקובץ התצורה /etc/dhcp/dhcpd.conf. ב-CentOS, משתמשים בכלי שורת הפקודה Network Manager,‏ nmcli.

בתיעוד של מערכת ההפעלה מוסבר איך להגדיר הגדרות רשת מותאמות אישית של DHCP ו-DNS. לדוגמה, כדי להגדיר את Red Hat Enterprise Linux for SAP עם HA ו-Update Services 8.6, משתמשים בקישור הבא: הגדרה ידנית של הקובץ ‎ /etc/resolv.conf

קובץ resolv.conf לדוגמה

כברירת מחדל, רוב הפצות ה-Linux מאחסנות את פרטי ה-DHCP ב-resolv.conf. שירות systemd-resolved מספק גם שירותי פתרון ל-DNS. כדי להגדיר את השירות הזה, צריך לערוך את הקובץ /etc/systemd/resolved.conf ואת הקבצים האחרים *.conf בספרייה /etc/systemd/resolved.conf.d/. בהפצות של Linux שבהן מאוחסן מידע DHCP ב-resolved.conf, אפשר לראות את רשומות ה-DNS האזורי והגלובלי בקובץ /etc/systemd/resolved.conf.

ההגבלות הבאות חלות על הקבצים האלה:

  • נתיב החיפוש יכול לטפל רק ב-6 רשומות, ו-3 מהרשומות האלה מסופקות על ידי Compute Engine. אם מוסיפים רשומות לנתיב החיפוש כך שהמספר הכולל של הרשומות גדול מ-6, כללי החיפוש אחרי הרשומה th לא יחולו על ידי מערכת ההפעלה. הדבר עלול לגרום להפסקת הפעולה של תכונות Compute Engine, כמו גישה למכונות באמצעות שמות המכונות.
  • אם עורכים את resolv.conf באופן ידני, הוא חוזר ל-DHCP ברירת המחדל בכל פעם שפג תוקף ההקצאה של DHCP ל-24 שעות במופע. במקרים שבהם נעשה שימוש ב-DNS אזורי, תוקף ההקצאה של DHCP פג כל שעה. כדי לבצע שינויים סטטיים בקובץ resolv.conf, אפשר להוסיף פריטים בתחילת מדיניות ה-DHCP או בסופה בכמה הפצות של Linux.

הגדרת DNS אזורית

קובץ resolv.conf לדוגמה של אזור:

# Local domain name. Computed from your project name.
domain ZONE.c.PROJECT_ID.internal
# Search list for hostname lookup. Starting with entries that represent
# your project and ending with google.internal to facilitate metadata server requests.
search ZONE.c.PROJECT_ID.internal. c.PROJECT_ID.internal. google.internal.
# Address of the DNS server to resolve project specific, and global domain names.
nameserver MDS_IP_ADDRESS

מחליפים את מה שכתוב בשדות הבאים:

  • ZONE: האזור שבו נמצאת המכונה
  • PROJECT_ID: הפרויקט שהמכונה שייכת לו
  • MDS_IP_ADDRESS: כתובת ה-IP של שרת המטא-נתונים של המופע, שהיא אחת מהכתובות הבאות:
    • 169.254.169.254 למכונות עם IPv4 בלבד ולמכונות עם מחסנית כפולה.
    • fd20:ce::254 למכונות עם IPv6 בלבד.

קובץ dhcp.lease לדוגמה של אזור:

lease {
  # What interface we are using for the network
  interface "eth0";
  fixed-address 10.128.0.9;
  option subnet-mask 255.255.255.255;
  option routers 10.128.0.1;
  # Lease timeout, older instances will have this value set to infinite.
  option dhcp-lease-time 3600;
  option dhcp-message-type 5;
  option domain-name-servers MDS_IP_ADDRESS;
  option dhcp-server-identifier MDS_IP_ADDRESS;
  option interface-mtu 1460;
  # Search path options that are copied into the resolv.conf
  option domain-search "ZONE.c.PROJECT_ID.internal.", "c.PROJECT_ID.internal.", "google.internal.";
  option ntp-servers MDS_IP_ADDRESS;
  option rfc3442-classless-static-routes 32,10,128,0,1,0,0,0,0,0,10,128,0,1;
  option host-name "INSTANCE_NAME.ZONE.c.PROJECT_ID.internal";
  option domain-name "ZONE.c.PROJECT_ID.internal";
  renew 4 2017/11/16 02:15:52;
  rebind 4 2017/11/16 02:43:59;
  expire 4 2017/11/16 02:51:29;
}

מחליפים את מה שכתוב בשדות הבאים:

  • INSTANCE_NAME: השם של המכונה
  • ZONE: האזור שבו נמצאת המכונה
  • PROJECT_ID: הפרויקט שהמכונה שייכת לו
  • MDS_IP_ADDRESS: כתובת ה-IP של שרת המטא-נתונים של המופע, שהיא אחת מהכתובות הבאות:
    • 169.254.169.254 למכונות עם IPv4 בלבד ולמכונות עם מחסנית כפולה.
    • fd20:ce::254 למכונות עם IPv6 בלבד.

הגדרת DNS גלובלית

קובץ resolv.conf לדוגמה:

# Local domain name. Computed from your project name.
domain c.PROJECT_ID.internal
# Search list for hostname lookup. Starting with entries that represent
# your project and ending with google.internal to facilitate metadata server requests.
search c.PROJECT_ID.internal google.internal.
# Address of the DNS server to resolve project specific, and global domain names.
nameserver MDS_IP_ADDRESS

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_ID: הפרויקט שהמכונה שייכת לו
  • MDS_IP_ADDRESS: כתובת ה-IP של שרת המטא-נתונים של המופע, שהיא אחת מהכתובות הבאות:
    • 169.254.169.254 למכונות עם IPv4 בלבד ולמכונות עם מחסנית כפולה.
    • fd20:ce::254 למכונות עם IPv6 בלבד.

קובץ dhcp.lease לדוגמה:

lease {
  # What interface we are using for the network
  interface "eth0";
  fixed-address 10.128.0.8;
  option subnet-mask 255.255.255.255;
  option routers 10.128.0.1;
  # Lease timeout, older instances will have this value set to infinite.
  option dhcp-lease-time 86400;
  option dhcp-message-type 5;
  option domain-name-servers MDS_IP_ADDRESS;
  option dhcp-server-identifier MDS_IP_ADDRESS;
  option interface-mtu 1460;
  # Search path options that are copied into the resolv.conf
  option domain-search "c.PROJECT_ID.internal.", "google.internal.";
  option ntp-servers MDS_IP_ADDRESS;
  option rfc3442-classless-static-routes 32,10,128,0,1,0,0,0,0,0,10,128,0,1;
  option host-name "INSTANCE_NAME.c.PROJECT_ID.internal";
  option domain-name "c.PROJECT_ID.internal";
  renew 4 2017/11/16 12:07:00;
  rebind 4 2017/11/16 22:44:53;
  expire 5 2017/11/17 01:44:53;
}

מחליפים את מה שכתוב בשדות הבאים:

  • INSTANCE_NAME: השם של המכונה
  • PROJECT_ID: הפרויקט שהמכונה שייכת לו
  • MDS_IP_ADDRESS: כתובת ה-IP של שרת המטא-נתונים של המופע, שהיא אחת מהכתובות הבאות:
    • 169.254.169.254 למכונות עם IPv4 בלבד ולמכונות עם מחסנית כפולה.
    • fd20:ce::254 למכונות עם IPv6 בלבד.

קובץ dhclient.conf לדוגמה

מערכות הפעלה מסוימות, כמו Debian 9, משתמשות בקובץ dhclient.conf במקום בקובץ resolv.conf.

קובץ /etc/dhcp/dhclient.conf לדוגמה:

# Configuration file for /sbin/dhclient.
#
...
append domain-search "mydomain.com";
prepend domain-name-servers 172.16.1.1;

בדוגמה הזו, mydomain.com הוא דומיין החיפוש החדש ו-172.16.1.1 היא כתובת ה-IP של שרת ה-DNS.

המאמרים הבאים