لپ‌تاپ به VPN اداری وصل می‌شود و همه چیز از آن پیروی می‌کند، از جمله صفحه وب یک چاپگر و یک اینترانت که فقط در شبکه محلی پاسخ می‌دهد. یک مسیر دستی ساخته‌شده این را برای یک ساعت درست می‌کند، سپس اتصال قطع می‌شود، برمی‌گردد و استثنا از بین می‌رود. هیچ چیز با تونل اشکال ندارد: ویندوز یک جدول مسیریابی واحد نگه می‌دارد و آداپتور VPN سهم خود را از آن جدول در هر اتصال بازنویسی می‌کند. آنچه باقی می‌ماند هر چیزی است که بیرون از مدخل‌های خود آداپتور زندگی می‌کند.

تونل کدام مدخل را تصاحب می‌کند

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

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

route print -4
Find-NetRoute -RemoteIPAddress 198.51.100.30

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

مسیر میزبان با ویژگی برنده می‌شود

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

ویژگی همچنین میان‌بر آشکار حذف یک نام دامنه را کنار می‌گذارد، چون جدول نشانی‌ها را تطبیق می‌دهد و یک نام می‌تواند به چند نشانی تبدیل شود. نخست میزبان را تفکیک کنید، سپس تصمیم بگیرید کدام یک از نشانی‌هایش شایسته استثناست.

برای همه موارد زیر، اتصالی به نام Office، دروازه محلی 10.0.0.1 روی رابط 7 و مقصدی در 198.51.100.30 را فرض کنید. این‌ها جای‌نگهدارند نه پیش‌فرض، و دستورهای بالا مقادیری را می‌دهند که دستگاه شما واقعاً استفاده می‌کند. این یادداشت جایگزینی را همراه تغییر نگه دارید تا خواننده بعدی اعداد را کپی نکند.

مسیر را از اتصال دوباره بعدی زنده نگه دارید

ویندوز هیچ دستور حذفی روی اتصال VPN ارائه نمی‌دهد، پس استثنا باید روی رابط فیزیکی زندگی کند جایی که آداپتور آن را بازنویسی نمی‌کند. دستورهایی که شبیه پاسخ به نظر می‌رسند عکس آن را انجام می‌دهند: Add-VpnConnectionRoute پیشوندی را به داخل تونل منتقل می‌کند و این همان حالت آینه‌ای است که در آن نمایه تقسیم‌شده باید یک مقصد را حمل کند و بقیه را محلی بگذارد. روی آوردن به آن در اینجا تضمین می‌کند ترافیکی که می‌خواستید بیرون بماند به داخل برود.

شکل دستی یک دستور است. ضعفش تغییر شبکه است نه اتصال دوباره.

route -p add 198.51.100.30 mask 255.255.255.255 10.0.0.1 metric 1 if 7

این به لطف -p از راه‌اندازی دوباره جان سالم به در می‌برد و یک نشانی را از رابط 7 بیرون می‌فرستد در حالی که تونل بقیه را حمل می‌کند. لپ‌تاپ را به شبکه دیگری ببرید و هم دروازه و هم شاخص کهنه می‌شوند، پس مدخل بی‌صدا شکست می‌خورد. ثبت کنید چه کسی مالک آن است و چه زمانی باید حذف شود.

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

rasdial Office
route add 198.51.100.30 mask 255.255.255.255 10.0.0.1 metric 1 if 7

هر چیزی که تونل را بالا می‌آورد جای درست برای خط دوم است، و rasdial تنها پس از برقراری اتصال برمی‌گردد، بنابراین مسیر پشت مدخل‌های خود آداپتور می‌نشیند. آن را پس از بیداری دوباره اجرا کنید، چون تعلیق می‌تواند مسیر را بیندازد و تونل را بالا بگذارد. اگر کار برعکس است، یعنی هل دادن یک پیشوند به داخل تونل و گذاشتن بقیه به‌صورت محلی، آنگاه Add-VpnConnectionRoute ابزار درست است.

مسیریابی نمی‌تواند یک فرایند را انتخاب کند

گاهی نیاز باریک‌تر از یک مقصد است: یک برنامه باید مسیر محلی را بگیرد در حالی که بقیه داخل تونل می‌ماند. مسیریابی نمی‌تواند آن را بیان کند، چون نشانی‌ها را تطبیق می‌دهد نه فرایندها. الگوی عملی مشکل را به راه‌انداز هل می‌دهد.

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

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

اتصال‌های به‌ازای هر کاربر هم این را حل نمی‌کند. ویندوز می‌تواند اتصال را به یک حساب محدود کند در حالی که جدول مسیریابی در سطح دستگاه می‌ماند، پس اتصال محدود به حساب که مسیر پیش‌فرض را دارد هنوز هر فرایند روی دستگاه را تغییر مسیر می‌دهد، از جمله نشست‌های دیگر. دامنه تنها زمانی واقعی می‌شود که دامنه مسیر با حساب بخواند. بنابراین دو نفر که یک لپ‌تاپ مشترک دارند یک جدول مشترک دارند و دومی هر تونلی را که اولی شروع کرده به ارث می‌برد.

تأیید کنید که استثنا از اتصال دوباره جان سالم به در برده است

تغییر را همان‌گونه که شکست می‌خورد بیازمایید: قطع کنید، دوباره وصل شوید، برنامه تازه‌ای باز کنید، سپس نشانی‌ای بخواهید که باید محلی بماند و نشانی‌ای که باید از تونل استفاده کند. هر دو را با Find-NetRoute در حالت متصل مقایسه کنید.

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

مقالات مرتبط