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

שלושה מנגנונים מחליטים, ובדרך כלל אחד מהם שגוי

מדד הממשק מסדר מתאמים עבור משפחת כתובות נתונה. סדר הקישור תחת Tcpip\Linkage הוא רשימה ברמת המכונה של מזהי ממשקים שמסלולי קוד ותיקים עדיין בודקים. טבלת מדיניות פתרון שמות (NRPT) קושרת מרחב שמות לשרתים מסוימים, ורשימת הסיומות קובעת אם שם קצר בכלל מורחב. הם בלתי תלויים, ולכן פותר נכון במתאם ה-VPN מפסיד להעדפה מיושנת במקום אחר.

What you seeMechanism to checkFirst command
Every name is slow, public names sometimes wrongGlobal adapter order: metric, then LinkageGet-NetIPInterface
Internal names resolve to a public addressThe query left through the home resolver, not the tunnelResolve-DnsName intranet.corp.example -Type A, then the same query with -Server 10.20.0.10
Only corp.example names fail, public names fineNamespace binding: NRPT or suffixGet-DnsClientNrptRule
Short name fails, fully qualified name worksSuffix list on the adapter, with the corporate suffix ahead of other entries, or pushed by the serverGet-DnsClientGlobalSetting
Works, then breaks after a reconnectRuntime setting that was never persistedGet-VpnConnection for the stored profile, then Get-NetIPInterface again after a reconnect

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

החלטה ראשונה: האם הפותר הנדחף יכול לענות בכלל?

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

Resolve-DnsName intranet.corp.example -Server 10.20.0.10 -Type A
Resolve-DnsName intranet.corp.example -Type A

אם הראשונה מצליחה והשנייה נכשלת, הפותר נגיש ו-Windows בוחר רע; עבור להחלטות מרחב השמות והסדר שלמטה. אם גם הראשונה נכשלת, שום דבר בלקוח לא יעזור: בדוק ש-UDP ו-TCP 53 מגיעים לשרת דרך המנהרה, ששום חומת אש מארחת בשרת אינה מפילה את המאגר, ושהמעבירים של השרת עצמו בריאים.

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

החלטה שנייה: מרחב שמות אחד, או כל שאילתה?

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

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

Get-NetIPInterface | Select-Object ifIndex, InterfaceAlias, AddressFamily, InterfaceMetric
Set-NetIPInterface -InterfaceIndex 11 -InterfaceMetric 1 -AddressFamily IPv4
Set-NetIPInterface -InterfaceIndex 11 -InterfaceMetric 1 -AddressFamily IPv6

החלף את 11 ב-ifIndex של מתאם המנהרה מהשורה שלמעלה; אם 11 הוא מתאם ה-LAN, אותה פקודה מורידה את המסלול השגוי. העלאת מתאם ה-LAN במקום מגיעה לאותו סדר מהצד השני: netsh int ip set interface interface="Ethernet" metric=15, ול-netsh int ipv6 set interface interface="Ethernet" metric=15 עבור המשפחה השנייה, כי int ip נוגע רק ב-IPv4.

סדר הקישור הוא המוצא האחרון ולא הצעד הראשון. HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Linkage מחזיק רשימת Bind של מזהי התקנים, והעברת מזהה המנהרה לחזית אכן משנה איזה מתאם נשאל ראשון, אבל זהו ערך רישום ברמת המכונה בלי היקף לפי מרחב שמות. ייצא אותו לפני העריכה ואחר כך חבר מחדש את המנהרה כדי שהסדר יחול במצב שהלקוח מצפה לו.

עבור מרחב שמות אחד, העדף את הכלי הצר יותר:

Add-DnsClientNrptRule -Namespace ".corp.example" -NameServers 10.20.0.10
Get-DnsClientNrptRule | Select-Object Namespace, NameServers

החלטה שלישית: האם התיקון שורד חיבור מחדש?

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

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

ipconfig /registerdns
ipconfig /flushdns

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

IPv6 ראוי לשורה משלו בהחלטה. אם למתאם הפיזי יש כתובת IPv6 גלובלית בעוד המנהרה נושאת IPv4 בלבד, Windows עשוי להעדיף את המסלול ללא מנהרה לפתרון שמות. בדוק את המשפחה הזו בנפרד, כי מדד שנקבע ל-IPv4 לא אומר עליה דבר:

Get-NetIPInterface -AddressFamily IPv6 | Select-Object ifIndex, InterfaceAlias, InterfaceMetric

השבתת IPv6 במתאם ה-LAN מסירה את המסלול הזה ואת הפרוטוקול איתו; שינוי מדד בממשק IPv6, או כלל NRPT למרחב השמות הארגוני, שומר על המשפחה ומתקן את ההעדפה. בחר בצר יותר אלא אם החלטת שהקישור הזה לא אמור להחזיק IPv6.

אמת עם המקור הנקוב, ושמור על בעלים אחד

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

ipconfig /all
Get-DnsClientServerAddress -AddressFamily IPv4
Resolve-DnsName fileserver.corp.example -Server 10.20.0.10 -Type A

אחר כך הפרד סינון מבחירה, כי מבפנים ליישום הם נראים זהים. block-outside-dns של OpenVPN חוסם פורט 53 במתאמים האחרים; הוא לא בוחר פותר. אם עכשיו כל שאילתה נכשלת, ייתכן שמסנן חוסם את השרת היחיד שאפשר להגיע אליו; אם הפותר המוגדר מותעלם, הסדר או כלל מרחב השמות שגוי. שינוי שניהם יחד הופך שאילתה חסומה ושאילתה מותעלמת לבלתי ניתנות להבחנה.

שמור בעלים אחד למדיניות ה-DNS: פרופיל ה-VPN, מדיניות ניהול או כלל NRPT, ולא שניים מהם. לפני שתסיים:

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

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

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