לדלג לתוכן

6.4 תהליך הDNS הרצאה

תהליך ה-DNS בלינוקס

הDNS (Domain Name System) הוא מערכת ניהול שמות דומיינים ברשת האינטרנט, המאפשרת לתרגם שמות דומיינים כמו google.com לכתובת IP שניתן לגשת אליה. בתהליך ה-DNS, כאשר אנו מנסים לגשת לאתר כלשהו באמצעות שם דומיין, המחשב מבצע סדרת פניות לשרתים שונים כדי לקבל את כתובת ה-IP המתאימה.

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

כיצד תהליך ה-DNS פועל?

  1. חיפוש בקובץ /etc/hosts
    ברגע שערכת ה-DNS מבקשת להמיר שם דומיין לכתובת IP, המערכת בודקת קודם כל אם יש רשומה עבור שם הדומיין בקובץ /etc/hosts. בקובץ זה ניתן להוסיף רשומות של שמות דומיינים וכתובת ה-IP המתאימה להם.

  2. פנייה לשרת DNS
    אם לא נמצא שם הדומיין בקובץ /etc/hosts, המערכת פונה לשרת DNS באמצעות הפנייה לשרת DNS מוגדר. השרת אחראי לשלוח את הבקשה לשרתים אחרים אם הוא לא יכול למצוא את המידע בעצמו.

  3. הCache DNS
    כדי למנוע פניות חוזרות לשרתים חיצוניים ולשפר את ביצועי המערכת, המחשב שומר תוצאות של חיפושים קודמים ב-DNS cache.


פקודות nslookup ו-dig

פקודת nslookup

הפקודה nslookup (Name Server Lookup) מאפשרת לשלוח בקשות DNS ידניות, ולהציג את כתובת ה-IP של שם הדומיין, או את שם הדומיין של כתובת IP.

  • חיפוש עבור דומיין:
nslookup google.com
  • חיפוש עבור כתובת IP:
nslookup 8.8.8.8
  • הצגת פרטי שרת ה-DNS שבו השתמשה הבקשה:
nslookup google.com 8.8.8.8

פקודת dig

הפקודה dig (Domain Information Groper) היא כלי מתקדם יותר לניהול DNS. dig מספקת הרבה יותר מידע ומאפשרת לשלוח סוגים שונים של בקשות לשרת ה-DNS.

  • חיפוש עבור דומיין:
dig google.com
  • הצגת רק כתובת ה-IP:
dig +short google.com
  • הצגת מידע נוסף, כמו שרתי DNS המשויכים לדומיין:
dig google.com NS
  • הגדרת שרת DNS אחר לבקשה:
dig @8.8.8.8 google.com

שינוי שרת DNS

לינוקס משתמשת בקובץ /etc/resolv.conf כדי להגדיר את שרת ה-DNS שממנו ייעשו החיפושים. במערכת מבוססת דביאן (כגון אובונטו), ניתן לשנות את השרתים על ידי עריכת הקובץ כך:

  1. עריכת הקובץ:
sudo nano /etc/resolv.conf
  1. הוספת או שינוי שרת DNS: לדוגמה, כדי להגדיר את השרת של גוגל:
nameserver 8.8.8.8
nameserver 8.8.4.4

לאחר מכן יש לשמור את הקובץ.

הערה: במערכות מסוימות, קובץ זה עשוי להתעדכן אוטומטית על ידי תוכנות ניהול רשת, לכן יש לקחת זאת בחשבון.


הוספת DNS Suffix

כדי להוסיף DNS suffix (חלק נוסף של שם דומיין שמתווסף לשם הדומיין בעת חיפוש), יש לערוך את קובץ הקונפיגורציה /etc/resolv.conf ולהוסיף את האפשרות search.

  1. עריכת הקובץ:
sudo nano /etc/resolv.conf
  1. הוספת DNS Suffix: לדוגמה, אם נרצה להוסיף את ה-suffix "example.com" לכל חיפוש DNS, נוסיף את השורה:
search example.com

קובץ /etc/hosts

הקובץ /etc/hosts בלינוקס הוא קובץ טקסט פשוט שבו אפשר להוסיף קשרים בין כתובות IP לשמות דומיינים. השימוש בקובץ זה עוזר למנוע פניות לשרת DNS עבור שמות דומיינים ידועים, ובכך לשפר ביצועים ולמנוע בעיות של זמינות.

דוגמה לקובץ /etc/hosts:

127.0.0.1   localhost
192.168.1.1 example.local

כדי להוסיף רשומה חדשה לקובץ, יש לפתוח אותו עם עורך טקסט (כמו nano) ולהוסיף את כתובת ה-IP ושם הדומיין המתאים.


ניקוי DNS Cache

על מנת לנקות את ה-DNS cache במערכת לינוקס, יש להשתמש בפקודות שמפסיקות את שירות ה-DNS cache. במערכות מבוססות systemd, אפשר לבצע את הניקוי כך:

  1. ניקוי DNS cache ב-systemd:
sudo systemd-resolve --flush-caches
  1. ניקוי DNS cache ב-nscd (אם מותקן):
sudo service nscd restart
  1. ניקוי DNS cache ב-dnsmasq (אם מותקן):
sudo service dnsmasq restart

ניקוי ה-DNS cache יכול להיות מועיל כשיש שינויים ב-DNS שנעשו לאחרונה, או כשיש צורך לתקן בעיות חיבור.


סיכום

  • תהליך ה-DNS בלינוקס מבצע המרה של שמות דומיינים לכתובת IP, ומבצע את הבקשה לשרת DNS אם אין כתובת כזו במערכת המקומית.
  • פקודות nslookup ו-dig מספקות כלים לאבחון חיפושי DNS ולבדיקה של מידע DNS.
  • ניתן לשנות את שרת ה-DNS על ידי עדכון קובץ /etc/resolv.conf.
  • DNS Suffix יכול להתווסף בקובץ /etc/resolv.conf כדי להקל על חיפושי דומיינים.
  • קובץ /etc/hosts מאפשר לקבוע קשרים בין כתובות IP לשמות דומיינים באופן מקומי.
  • ניקוי ה-DNS cache מסייע בפתרון בעיות חיבור כאשר יש צורך לעדכן או לנקות את הנתונים הישנים.