המחשב הנייד שלכם מפענח את intranet.corp דרך המנהרה בעוד gitlab.com ממשיך ללכת אל הפותר של הספק, וזו ההסדר שעובד כמתוכנן. שתי החלטות נפרדות יצרו אותו: כלל התאמת שם בחר את הפותר, ונתיב החזיר את התשובה. שברו כל אחד מהשניים והדפדפן מציג כשל שנראה זהה מבחוץ. רוב הדוחות על DNS מפוצל מתארים את הכשל השני תוך ציטוט ראיות על הראשון.

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

שתי החלטות חבויות בבקשה אחת

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

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

איך כל פלטפורמה מבטאת את אותו כלל שם

הכוונה זהה ושמות השדות אינם. דוגמה שמועתקת מלקוח אחד לאחר מנותחת בצורה נקייה ולעולם אינה מתאימה. שלוש הצורות נראות כך:

PlatformWhere the rule livesWhat usually breaks
Windowsname-resolution policy on the VPN profileprecedence against the interface suffix list
Apple platformsmatch domains on the DNS settings objectdomains attached to the wrong extension
Linuxrouting domain, split resolver, nsswitch orderthe suffix written the wrong way round

תחום התאמה או ניתוב הוא מבחן סיומת, לכן intranet.corp מכסה את git.intranet.corp ואינו מכסה את corp.intranet, והיפוכו הוא הטעות הנפוצה ביותר בכל ההגדרה. Windows נושא את המיפוי כמדיניות פענוח שמות המחוברת לפרופיל, עם סדר עדיפויות משלו מול כל רשימת סיומות שהייתה לממשק. פלטפורמות Apple מחברות דומיינים תואמים לאובייקט הגדרות ה-DNS של הרחבת הרשת, והמערכת מחילה אותם לפי כל פותר מוגבל. אף אחת מהצורות הללו אינה נתיב, ואף אחת אינה יכולה להפוך כתובת בלתי נגישה לנגישה. מדיניות פענוח השמות של Windows מפרטת את שמות השדות ואת כללי העדיפות לאותה פלטפורמה, והם אינם אלה שמשתמשים בהם מסמכי Apple או systemd.

תשובה נכונה עדיין זקוקה לנתיב

תשובת פותר היא רק כתובת, ועל היישום עדיין להגיע אליה. עיצוב מנהרה מפוצל דוחף בדרך כלל 10.20.0.0/16 ומעכב את נתיב ברירת המחדל, ולכן השם הפנימי מפוענח והחיבור נתלה לאחר מכן. המקרה ההפוך נפוץ באותה מידה: הנתיב קיים, פותר ציבורי עונה לשם הפרטי ב-NXDOMAIN, והכשל נרשם כבעיית ניתוב. בדיקת הנתיב קודם משאירה אתכם בוהים בנתיבים עבור שם שלעולם לא היה מפוענח.

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

בדיקת שמות ונתיבים בסדר קבוע

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

resolvectl query intranet.corp
resolvectl domain
ip route get 10.20.5.10

לקוח Windows שואל את אותן שתי שאלות עם cmdlets שונים. השני מדווח על הממשק שהמערכת הייתה משתמשת בו בפועל:

Resolve-DnsName intranet.corp -Type A
Find-NetRoute -RemoteIPAddress 10.20.5.10

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

איפה ההשוואה בדרך כלל משתבשת

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

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

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

מאמרים קשורים