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

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

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

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

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

מגבלות

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

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

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

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

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

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

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

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

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

  • שם המופע חייב להיות ייחודי בכל הפרויקט. כתוצאה מכך, אי אפשר ליצור מופעים חדשים באף אזור שבו יש כשלים במישור הבקרה, אם יש לכם משאבי פרויקט באזור הזה או שהיו לכם משאבים כאלה בעבר. Cloud de Confiance by S3NS אי אפשר לאמת את שמות ה-DNS של המשאבים הקיימים באזור הלא זמין.
  • תכונות מסוימות של Compute Engine לא זמינות, כמו שינוי גודל אוטומטי של קבוצות של מופעי מכונה מנוהלים (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 הפנימי שלCloud de Confianceיוצר באופן אוטומטי רשומות 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 פנימי מכיל את מזהה הפרויקט של הפרויקט שמכיל את המכונה הווירטואלית. במקרה של מכונה וירטואלית בפרויקט שירות שממשק הרשת שלה nic0 משתמש ברשת VPC משותפת, הפרויקט של המכונה הווירטואלית שונה מהפרויקט שמכיל את הרשת.

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

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

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

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

תחומים פרטיים ורשומות בהתאמה אישית באמצעות 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 ל-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, מערכת ההפעלה לא תחיל את כללי החיפוש אחרי הרשומה ה-6th. הדבר עלול לגרום להפסקת הפעולה של תכונות 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.

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