# Domain Name System

Domain Name System| אין תמונה חופשית |
|
סוג |
תקן אינטרנט, מרחב שמות היררכי, פרוטוקול רשת מחשבים  |
|
חבילה | TCP/IP, World Wide Web  |
|
שכבה |
שכבת היישום של מודל ה-OSI  |
|
פורט | 53 (TCP), 53 (UDP)  |
|
מקור | * RFC 1611: DNS Server MIB Extensions
* RFC 1612: DNS Resolver MIB Extensions
* RFC 3596: DNS Extensions to Support IP Version 6
* RFC 2874: DNS Extensions to Support IPv6 Address Aggregation and Renumbering
* RFC 1912: Common DNS Operational and Configuration Errors
* RFC 1034: Domain names - concepts and facilities
* RFC 2052: A DNS RR for specifying the location of services (DNS SRV)
* RFC 1035: Domain names - implementation and specification
* RFC 1101: DNS encoding of network names and other types
* RFC 3467: Role of the Domain Name System (DNS)
 |
|   |

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

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

## מטרה

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

## אופן פעולה

איור הממחיש את אופן פעולת הפרוטוקול
DNS היא שיטת רישום שמות היררכית. לכל שרת יש רשומות משאבים (resource records) שמאפשרות לו לטפל בבקשות לגבי תחום שמות מסוים. רשומות אלה מחלקות לאזורים (zones) את התחום עליו אחראי השרת. השרת יודע להפנות את הפונים אליו לשרתים האחראיים על אזורים אלו.

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

בראש ההיררכיה האינטרנטית נמצאים שרתים המכונים "רמת השורש" (root servers). שרתים אלה מסוגלים להפנות את המבקש לשרתים הרלוונטיים עבור כל כתובת. השרתים ברמה הבאה אחראיים על שמות תחום מהרמה העליונה (Top level domains), כלומר על כל שמות התחום אשר משתמשים בסיומת אינטרנט מסוימת. למשל, שאילתה לשרת מרמת השורש לגבי www.mywebsite.co.**il** תופנה לשרת אשר אחראי על כלל שמות התחום הישראליים. שרת זה יוכל להפנות לשרת ברמה השנייה – www.mywebsite.**co**.il, כלומר השרת שאחראי על כתובות של אתרים מסחריים בישראל. שרת זה יטפל בחלק השלישי של הכתובת – www.**mywebsite**.co.il ויפנה את הבקשה לשרת המארח (Host) של mywebsite, שיבדוק וימצא שהמשתמש מעוניין בכתובת ה-IP של שרת האינטרנט (**www**.mywebsite.co.il) ויספק את הכתובת המבוקשת.

פרוטוקול ה-DNS עובר מעל הפרוטוקולים TCP ו-UDP בפורט 53, כאשר ברוב המקרים ההתקשרות תסתכם בחבילת UDP בודדת אשר תכיל את השאלה וחבילה נוספת אשר תכיל את התשובה.

### שימוש במחשבים אישיים

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

### זמן חיים של תשובה

לכל תשובה שמספק שרת מסוים מוצמד ערך זמן חיים (TTL – Time To Live). ערך זה קובע כמה זמן מותר למבקש הבקשה לשמור את התשובה בזיכרון המטמון שלו. מנגנון זה נועד להפחית את העומס על שרתי DNS, והוא מאפשר לחסוך מצבים שבהם נעשות בקשות רבות לגבי אותו שם התחום על ידי שרת בודד, כאשר אין שינוי בתשובה. כאשר יפוג זמן החיים של התשובה, ייאלץ המבקש לשאול את השרת פעם נוספת לגבי השם המבוקש.
עם זאת לא ניתן לדרוש מהשרת אם כבר יש ברשותכם רשומה בזיכרון של המחשב.

### שרתי איתור

על פי רוב, שרת האיתור (Resolver) אליו המחשב פונה כברירת מחדל יהיה השרת שמפעיל ספק האינטרנט. ניתן לשנות את שרת האיתור בהגדרות המחשב לשרת ציבורי, כחלופה מתקדמת ומאובטחת יותר משרתי האיתור המסורתיים. דוגמאות לשרתים כאלה הן 8.8.8.8 של גוגל ו-1.1.1.1 של Cloudflare. שרתי איתור ציבוריים כוללים לרוב שכבת הצפנה לשאילתות העוברות דרכם ומאפשרים עקיפת חסימות וצנזורה של ספק האינטרנט. שרתים ציבוריים מסוימים מספקים לבחירת המשתמש שירותי הגנה נגד נוזקות, תוכן פוגעני או חסימת פרסומות.

## שירותי DNS נוספים

בנוסף לתרגום שמות תחום לכתובות IP, מספקים שירותי ה־DNS מידע נוסף על הדומיין הקיים, כמו שרתי הדואר של הדומיין, היכן ממוקמים שרתי ה־DNS של אותו תחום ועוד. כמו כן מספקים שירותי ה־DNS מידע על שם התחום הקשור בכתובת IP מסוימת. כך שרת ה־DNS משמש כ"ספק מודיעין" עבור תחום. קיים שרת DNS הניתן למימוש גם בשכבת התעבורה.

## סוגי רשומות DNS

לכל בקשה או תשובה לשאילתת DNS יש טיפוס אשר מגדיר מה היא בעצם מכילה. כמו כן, השרת ששלח את התשובה מגדיר עבורה גם TTL‏ (Time to live), שהוא הזמן המקסימלי שלמקבל התשובה מותר לשמור אותה במטמון שלו ולהניח שהיא נכונה.

* A – רשומה זו היא כתובת IPv4 (**A**ddress) המשויכת לשם דומיין מסוים.
* AAAA – בדומה לטיפוס A, רשומה זו היא כתובת IPv6.
* NS – רשומה אשר מציינת שרת אשר משמש כאחראי למסירת מידע על הדומיין המבוקש.
* PTR – רשומה זו מכילה דומיין אשר משויך לכתובת IP מסוימת (על מנת ששרת ה-DNS יוכל לחפש דומיינים על פי כתובות IP).
* MX – מכילה את כתובתו של השרת המשמש את הדומיין לקבלה של דואר אלקטרוני.
* CNAME – "Canonical name", שם נוסף לאותו הדומיין.
* TXT – רשומה זו מאפשרת לצרף לכתובת ה-IP של הדומיין גם טקסט חופשי (משמשת למימוש שירותים שונים הקשורים בדומיין, כגון DomainKeys).
* SPF – סוג מיוחד של רשומת TXT המציינת את שמות המארחים מהם מותר למסור אימייל בשם אותו דומיין.
* Start Of Authority – SOA – הרשומה אשר מצביעה על הימצאותו של האזור.
* ANY

## Zone Transfer

Zone Transfer (בתרגום חופשי: העברת אזור) הוא מנגנון שכפול מידע ב-DNS המשמש להעתקת מידע משרת DNS ראשי לשרתי DNS משניים. העברת המידע יכולה להתבצע בשני אופנים: מלא (full) ותוספתי (incremental). במהלך הזמן[דרושה הבהרה], משתמשים פחות ופחות במנגנון זה.

Zone Transfer פועל מעל שכבת ה-TCP על מנת להבטיח את שלמות המידע המועבר. מחשב הלקוח (client) מבקש את מידע ה-DNS מהשרת הראשי, והוא שולח ללקוח את המידע של אותו אזור אליו שייך אותו לקוח. הלקוח יודע האם לעדכן את המידע שנמצא אצלו במידע החדש שהגיע מהשרת הראשי באמצעות השוואת מספר סידורי שנשלח מהשרת הראשי עם המספר השמור במחשב הלקוח. הפקודה שמבקשת לבצע את השכפול המלא נקראת AXFR וזו שבעזרתה מבצעים את השכפול החלקי (רק של החלקים שהתעדכנו מאז השכפול האחרון) נקראת IXFR.

## חולשות המערכת

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

לעיתים המערכת מנוצלת על מנת לייעל התקפות מניעת שירות מבוזרת (DDoS) על ידי שליחת בקשת נתונים לשרת בשם קורבן ההתקפה.

## DNSSEC

DNS Security Extensions הוא תוסף להגברת אבטחת השימוש ב-DNS באמצעות בדיקת מהימנות המידע ושלמותו. DNSSEC נועד להגן מפני התקפות כמו התקפת אדם שבתווך או הרעלת DNS.

לצורך ביצוע האבטחה התוסף מתקין 4 רשומות:

* RRSIG – Resource Record Signature
* DNSKEY – DNS Public Key
* DS – Delegation Signer
* NSEC – Next Secure

## ראו גם

* קובץ hosts
* .il
* רשימה מלאה של סיומות אינטרנט
* LLMNR
* שרת שורש
* DNS over TLS (DoT)

## קישורים חיצוניים

 מדיה וקבצים בנושא **Domain Name System** בוויקישיתוף
* RFC 1034 – הסטנדרט אשר מגדיר את עקרונות הפעולה של פרוטוקול ה-DNS.
* RFC 1035 – הסטנדרט אשר מגדיר את יישום הפרוטוקול.
* רקע טכנולוגי על מערכת ה-DNS באתר איגוד האינטרנט הישראלי
* פענוח שמות באינטרנט קצת היסטוריה, מערכת שמות היררכית, שמות domain באינטרנט, שמות רשמיים ולא רשמיים ועוד.
* איך לחבר דומיין לשרת אחסון
* Domain Name System, באתר אנציקלופדיה בריטניקה (באנגלית)