רשומות DNS עבור SIP

לפני מספר שנים, למדתי הרבה (אך לא הכל😦 ) על עולם ה DNS ובעיקר עבודה עם Bind, אך מצאתי שבד"כ יש רק מספר מצומצם של רשומות אשר משתמשים בהם: A, CNAME, TXT ו MX.
לאחרונה יצא לי ליעץ למספר חברות שונות אשר רצו לספק יותר משרת אחד לשירות SIP, ומצאתי את עצמי עושה להם קורס מזורז (לרוב דרך דוא"ל ושיחות טלפון) כיצד זה מתבצע, אז החלטתי להעביר את זה לכתב, ולנסות ולסייע יותר לאנשים באופן כללי.

A/AAAA

רשומת A מייצגת בעצם שם מתחם עבור כתובת IP. יש לו אח צעיר יותר בשם AAAA אשר מבצע אותו הדבר, רק עבור כתובות IPv6.

CNAME

רשומת CNAME, יודעת לקחת שם מתחם קיים, ולתת לו alias לשם אחר, כלומר foo.example.com יכול גם להצביע על bar.example.com ובכך שניהם מצביעים לאותו הדבר. הפירוש של CNAME הוא canonical name record והוא מעט "ממזר" באיך שקוראים ומשתמשים ברשומה.

TXT

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

MX

ויש את רשומת MX, אשר היא קיצור של mail exchanger record. התפקיד של הרשומה הוא לספק גישה למספר שרתי דואר תחת שם מתחם בודד, כאשר יש "משקל" לכל כתובת. המשקל אומר על קדימות של שימוש בשרת אחד על גבי השני. ככול שהמספר גבוהה יותר, כך כמות השימוש בו תהיה גבוהה יותר. כך שאם אשים משקל 60 לכתובת אחת ו10 לכתובת שניה, אז על כל 60 פניות לכתובת הראשונה, יהיו עשר פניות לכתובת השניה.

SOA

עוד רשומה מאוד נפוצה (למעשה הנפוצה ביותר) היא SOA שהיא Source of Authority. היא מחליטה בעצם על מי מנהל את ה DNS בפועל, או כמו שחבר כנסת חיפש פעם, הוא פחות או יותר האחראי על האינטרנט, לפחות בנושא של שמות מתחם.

כל זה נחמד למרבית השימוש כיום באינטרנט, אבל יש למעשה כמה עשרות סוגים של רשומות DNS, ועבור SIP אנחנו צריכים להשתמש בדרך כלל ברשומה מסוג SRV אשר משתמשת דרכה בכתובת שהיא A/CNAME .

SRV

אז מה היא רשומת SRV ? הרשומה הזו נועדה לרשום שירות מסויים, על ידי ציון של שם מתחם עבור השירות, המשקל שלו, פורט השימוש (כמובן שמדובר בשירותים מבוססי TCP או UDP בלבד) יצביעו על כתובת CNAME

מבנה הרשומה הוא כזה:

_service._proto.name. TTL class SRV priority weight port target.

השדה הראשון מציין את סוג השירות (קו תחתי כחלק מהתחלת שם השירות ונקודה בסוף), למשל SIP
לאחר מכן, מציינים את סוג פרוטוקול החיבור (layer 3), כלומר tcp או udp, באותיות קטנות עם קו תחתי לפני השם, ולאחר מכן נקודה.
לאחר מכן מציינים את שם המתחם אליו אנחנו מתייחסים, למשל example.com. לא לשכוח נקודה בסוף השם.
עכשיו נשים רווח בהגדרה, ולאחר מכן מגדירים TTL שזה בעצם זמן עדכון הרשומה, ככול שהזמן הזה גבוהה יותר, יקח זמן רב יותר לרשומה להתעדכן בעולם על כל שינוי.
רווח נוסף ונוסף באותיות גדולות את המילה IN. המילה הזו היא קיצור ל internet ואנחנו אומרים לו שאנחנו מתייחסים לאינטרנט או לרשת TCP/IP בגדול מאוד, ובמקרה של SRV זה תמיד המצב (עד כמה שאני יודע).
לאחר מכן נוסיף עוד רווח ונוסיף מספר האומר קדימות לשימוש השירות. הקדימות הזו אומרת תיעדוף של ההגדרה הזו על פני האחרות, אם אתם זוכרים את ההגדרה למעלה של משקל, אז כך אנחנו אומרים לו במה להשתמש קודם ובעצם הסדר של איך להתמודד עם המשקל.
נוסיף רווח ועכשיו יש לשים את המשקל לרשומה. כאמור, ככול שהיא גבוהה יותר, כך יהיה בה שימוש רב יותר. חשוב לציין שהמשקל תלוי בקדימות. כלומר אם אחזור להדגמה מקודם, במידה ויש לי את אותה הקדימות לרשומה אחת עם "10" ואחת עם "60", אז ההדגמה שלי תתבצע בצורה הזו. כך אנחנו יוצרים בעצם גישת של load balance לשירות שלנו.
רווח נוסף ונוסיף עכשיו את הפורט לשימוש, היות ואנחנו מדברים על SIP זה לרוב יהיה 5060, אך לא מחייב.
רווח אחרון, ונוסיף את שם המתחם לשרת עצמו, למשל www‎.example.com ולא לשכוח בסוף נקודה.

_sip._udp.example.com 600 IN SRV 0 10 5060 www.example.com.
_sip._udp.example.com 600 IN SRV 0 60 5060 ww1.example.com.

עכשיו מערכות הדורשות רשומות SRV, כדוגמת מרכזיות, ידעו להשתמש בשם המתחם, במקום בכתובת IP, ובכך ידעו לפנות לפעמים למספר שרתים תחת שם מתחם בודד.

NAPTR

ווידוי קטן, מעולם לא השתמשתי ברשומה זו, והיא נראת מסובכת מאוד, אך יש בה המון כוח.
אז מה הרשומה הזו אומרת ? ובכן היא מאפשרת לתרגם URI או URN לספק שירות.
אחד ה urnים הנפוצים ביותר, הוא בעולם הטלפוניה הוא כזה:

tel:+031234567

הרשומה הזו אומרת למרכזיות ותוכנות בכלל התומכות בה להתקשר למספר 031234567. כל זה נחמד, אבל איך בדיוק אנחנו יכולים לחייג את המספר הזה ? ובכן כאן נכנסת רשומת NAPTR לעניין.
הרשומה יודעת לקחת urn כזה, ולתרגם אותו בעצם לשירות (רשומת SRV) שצריך לבצע.
הרשומה הזו מאוד גמישה, והיא מאפשרת לעבוד עם REGEX בשביל לקבל חוקיות בנושא.
התפקיד של הרשומה הוא לשמור מידע ברשומת DDDS, והאפשרות לקבל אותה חזרה.

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

$ORIGIN 7.6.5.4.3.2.1.3.0.e164.arpa.
IN NAPTR ORDER PREFERENCES FLAGS SERVICES REGEX REPLACEMENT

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

אתחיל בORDER. התפקיד של ORDER הוא להגיד בעצם סדר של הרשומה, ככול שהמספר נמוך יותר כך הוא תופס קדימות מול חוקים זהים אחרים בעלי קדימות נמוכה יותר.
התפקיד של PREFERENCES הוא למעשה הקדימות לחוק זהה, והוא זהה לשדה הקדימות של SRV.
התפקיד של FLAGS זו בעצם מחרוזת המכילה מספרים אותיות אנגליות (הגודל לא משנה), וזה נועד לספק מידע לתוכנה שמשתמשת ברשומה.
התפקיד של SERVICES הוא מידע לתוכנה עבור השירות, והתוכנה המשתמשת ברשומה צריכה לדעת כיצד להתמודד עם המחרוזת הזו.
התפקיד של REGEX הוא לספק חוק של מה הוא הדבר שאותו אמורים להחליף (התוכנה צריכה לדעת לפי SERVICES להבין על איזה חלק מדובר). התחביר של ה REGEX הוא לפי המוגדר בrfc3042 הידוע בשם DDDS חלק 2.
החלק של REPLACEMENT שם מתחם שהוא למעשה FQDN מלא שמתבצע עבור ההחלפה
אחרי חלק ה REPLACEMENT עושים רווח ומוסיפים נקודה.

הדגמה של וויקיפדיה בנושא:

$ORIGIN 4.3.2.1.5.5.5.0.0.8.1.e164.arpa.
IN NAPTR 100 10 "U" "E2U+sip" "!^.*$!sip:customer-service@example.com!" .
IN NAPTR 102 10 "U" "E2U+email" "!^.*$!mailto:information@example.com!" .

לדעתי ה RFC של NAPTR מכיל מידע רב ומספק יותר מאשר חלק הוויקיפדיה.
כמו כן, בוריס כתב על הרשומה, וכיצד ניתן להגדיר אותה ב bind.

2 מחשבות על “רשומות DNS עבור SIP

כתיבת תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s