ممکن است یک کلاینت ویندوز تونلی سالم داشته باشد، ریزالور شرکتی را حمل کند و باز هم نام‌های داخلی را به روتر خانه بفرستد. سه سازوکار مختلف تعیین می‌کنند کدام سرور پاسخ می‌دهد و هر یک به شکلی متفاوت شکست می‌خورند. لازم نیست هر سه را اصلاح کنید: نشانه به شما می‌گوید کدام یک در میان است. درخت تصمیم زیر چند دقیقه وقت می‌گیرد و از نتیجه معمول جلوگیری می‌کند، جایی که تغییر متریک، بازآرایی رجیستری و یک قاعده 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

اگر اولی موفق و دومی ناموفق باشد، ریزالور در دسترس است و ویندوز بد انتخاب می‌کند؛ به تصمیم‌های فضای نام و ترتیب در پایین بروید. اگر اولی هم ناموفق باشد، هیچ‌چیز روی کلاینت کمکی نمی‌کند: بررسی کنید که 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 حمل می‌کند، ویندوز می‌تواند برای تفکیک نام مسیر بدون تونل را ترجیح دهد. آن خانواده را جداگانه بررسی کنید، چون متریکی که برای 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، نه دو تا از آن‌ها. پیش از بستن کار:

  • ریزالور هل داده شده وقتی صریح نام برده شود پاسخ می‌دهد و جست‌وجوی معمولی از آن استفاده می‌کند.
  • قاعده یا متریکی که تغییر داده‌اید خانواده نشانی‌ای را پوشش می‌دهد که واقعاً پرس‌وجوها را حمل می‌کند.
  • تنظیم از قطع و وصل دوباره جان سالم به در می‌برد، یا آن را به پروفایل ذخیره‌شده منتقل کرده‌اید.
  • دقیقاً یک سازوکار معتبر است و بقیه به حال خود رها شده‌اند.

ترتیب را وضعیت محیطی بدانید نه چیزی که تمامش می‌کنید. پس از اتصال دوباره و پس از به‌روزرسانی ویندوز که پشته شبکه را لمس می‌کند دوباره بررسی کنید، چون هر یک از این دو می‌تواند آداپتر فیزیکی را دوباره به جلو بیاورد.

مقالات مرتبط