فهرست VPN را باز می‌کنید، ورودی ذخیره‌شدهٔ دیگر را انتخاب می‌کنید و انتظار یک جابه‌جایی تمیز دارید: یک نشانی خروجی تازه و بقیهٔ چیزها بدون تغییر. این همان فرضی است که باید نخست کنار بگذارید. در macOS یک VPN ذخیره‌شده یک سرویس کامل شبکه است نه یک پیش‌تنظیم، پس عوض کردن سرویس‌ها می‌تواند مسیریابی، DNS و احراز هویت را همزمان تغییر دهد. نوار منو نشان می‌دهد کدام سرویس فعال است؛ ولی نمی‌گوید آیا تونل زیر آن با آنچه می‌خواستید می‌خواند یا نه.

فهرست ذخیره‌شده یک انتخاب‌کنندهٔ پروفایل نیست

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

کلاینت‌های شخص ثالث فهرست‌های جداگانه نگه می‌دارند. Tunnelblick پیکربندی‌ها را از پوشهٔ خودش می‌خواند، WireGuard فهرست تونل خودش را دارد و OpenVPN Connect پروفایل‌ها را داخل برنامه ذخیره می‌کند. بعضی پیکربندی را در سیستم ثبت می‌کنند؛ بعضی دیگر همه‌چیز را داخل برنامه نگه می‌دارند و هرگز در فهرست داخلی ظاهر نمی‌شوند. پس «رفتن به ذخیره‌شده» بسته به این‌که کدام برنامه مالک پروفایل است معنای متفاوتی دارد.

scutil --nc list سرویس‌های VPN ثبت‌شده در پیکربندی سیستم را با نام‌ها در گیومه چاپ می‌کند. وقتی جابه‌جایی را اسکریپت می‌کنید دقیقاً از همین نام‌ها استفاده کنید و فرض نکنید فهرست همهٔ تونل‌های شخص ثالث را پوشش می‌دهد.

جابه‌جایی واقعاً چه چیزی را عوض می‌کند

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

What you assumeWhat the system does
Same server name means same tunnelProtocol, certificate and account are per service
All traffic follows the active VPNOnly when Send all traffic over VPN is on
DNS switches with the VPNOnly if that service defines DNS servers
Disconnect ends the connectionOn Demand or a management profile can reconnect
Open sessions survive the switchTCP sessions tied to the old address stall

بخش DNS است که مردم را غافلگیر می‌کند. macOS ترتیبی برای حل‌کننده‌ها نگه می‌دارد و scutil --dns نشان می‌دهد کدام حل‌کننده‌ها در استفاده‌اند و روی کدام واسط. سرویس VPN که سرور DNS ندارد می‌تواند حل‌کنندهٔ Wi-Fi را پاسخ‌گو بگذارد، پس نشانی عمومی تازه با رفتار DNS قدیمی می‌گیرید و نتیجه می‌گیرید که جابه‌جایی نیمه‌کاره بوده.

چرا پیکربندی قدیمی باز برمی‌گردد

اگر قطع کنید و همان سرویس لحظه‌ای بعد دوباره وصل شود، پیش از هر چیز On Demand را ببینید. قاعدهٔ اتصال بر حسب تقاضا می‌تواند سرویسی را وقتی برنامه‌ای دامنهٔ منطبقی را حل می‌کند برگرداند، و پروفایل مدیریتی می‌تواند همان قاعده را اعمال کند. حذف ورودی کم پیش می‌آید که درستش کند: پیکربندی نصب‌شده با پروفایل معمولاً در تازه‌سازی بعدی پروفایل برمی‌گردد، و پیکربندی دستی می‌تواند گذرواژه‌اش را در Keychain جا بگذارد وقتی سرویس رفته است.

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

تونل را بررسی کنید، نه علامت را

پیش از دست زدن به تنظیمات، نمای خود سیستم را مرور کنید.scutil --nc status "Name" گزارش می‌دهد که سیستم چه فکر می‌کند؛ifconfig نشان می‌دهد آیا واسط utun نشانی دارد؛netstat -rn -f inet نشان می‌دهد مسیر پیش‌فرض به کجا اشاره می‌کند؛scutil --dns نشان می‌دهد کدام حل‌کننده واقعاً در استفاده است. سپس اتصال تازه‌ای باز کنید و نشانی خروجی را تأیید کنید، چون صفحه‌ای که از قبل وارد شده بود ممکن است هنوز از سوکتی استفاده کند که به تونل قدیمی بسته شده است.

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

ترتیبی برای جابه‌جایی بدون غافلگیری

  1. سرویس کنونی و این‌که پروفایلی آن را مدیریت می‌کند یادداشت کنید.
  2. وقتی دو تونل نمی‌توانند با هم بمانند، نخست آن را قطع کنید.
  3. هدف را وصل کنید و منتظر «وصل‌شده» بمانید، نه «در حال اتصال».
  4. مسیر پیش‌فرض، فهرست حل‌کننده‌ها و یک نشانی خروجی تازه را بررسی کنید.
  5. برنامه‌هایی را که نشست‌های طولانی نگه می‌دارند دوباره راه بیندازید.

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

اگر انتخاب برمی‌گردد، نخست آن را سیاست یا On Demand بدانید. تأیید کنید که پیکربندی مال کیست و آیا برای اتصال خودکار تنظیم شده است، بعد تصمیم بگیرید سرویس را عوض می‌کنید یا با پروفایل می‌جنگید.

مقالات مرتبط