هفته گذشته همکاری آیفون خود را به من داد با دو ورودی VPN در تنظیمات: یکی از اپ ارائه‌دهنده و دیگری از پروفایل IKEv2 که از صفحه پشتیبانی کپی شده بود. اینها نسخه‌های رقیب یک چیز نیستند. اپ ارائه‌دهنده ظرفی است که می‌تواند کد تونل خودش را حمل کند، در حالی که کلاینت داخلی Apple کلاینت IKEv2 است که دستی یا با پروفایل پیکربندی می‌شود. پروتکل، نحوه مدیریت اعتبارنامه‌ها، کنترل دستگاه و بازیابی انتخاب را تعیین می‌کنند.

اپ و کلاینت بومی در لایه‌های مختلف‌اند

کلاینت VPN داخلی Apple در عمل کلاینت IKEv2 است. فرم دستی هنوز گزینه منسوخ L2TP روی IPsec و گزینه‌های Cisco IPsec را فهرست می‌کند، اما هیچ فیلدی برای ترابری ارائه‌دهنده و جایی برای چسباندن پیکربندی OpenVPN یا WireGuard ندارد. یا فرمی را در تنظیمات > عمومی > VPN & مدیریت دستگاه پر می‌کنید یا پروفایلی با محموله VPN وارد می‌کنید؛ سطح آن نشانی سرور، دو هویت، یک روش احراز هویت و قواعد اختیاری بر اساس درخواست است.

اپ ارائه‌دهنده یک لایه بالاتر کار می‌کند. فراهم‌کننده تونل بسته Network Extension را عرضه می‌کند، بنابراین کد پروتکل و منطق مسیریابی در اپ زندگی می‌کنند و iOS فقط بسته‌ها را عبور می‌دهد. برخی اپ‌ها WireGuard یا OpenVPN را پیاده می‌کنند، برخی ترابری مبهم‌سازی خودشان را، و چند تایی فقط پروفایل IKEv2 نصب می‌کنند و کلاینت بومی را پشت صفحه‌ای زیباتر هدایت می‌کنند. همین گروه آخر باعث می‌شود انتخاب اپ یا پروفایل گاهی انتخابی کاذب باشد.

نتیجه عملی است: فایل .ovpn یا WireGuard جای آن فیلدها را نمی‌گیرد، چون دست‌دادن پروتکل دیگری است.

پیش از مقایسه قابلیت‌ها محموله را بخوانید

وقتی پروفایل IKEv2 است، کلیدهای محموله بیشتر از هر مقایسه قابلیت‌ها خرابی‌ها را توضیح می‌دهند. مرجع تنظیمات IKEv2 از Apple هر کلید را مستند می‌کند؛ محموله کوتاه‌شده چنین است:

<key>VPNType</key><string>IKEv2</string>
<key>RemoteAddress</key><string>vpn.example.net</string>
<key>RemoteIdentifier</key><string>vpn.example.net</string>
<key>LocalIdentifier</key><string>[email protected]</string>
<key>AuthenticationMethod</key><string>Certificate</string>
<key>ServerCertificateIssuerCommonName</key><string>Example Issuing CA</string>

سه فیلد بیشتر وزن تشخیصی را حمل می‌کنند. RemoteIdentifier نامی است که کلاینت از سرور انتظار دارد، بنابراین دروازه‌ای پشت NAT یا متعادل‌کننده‌ای که گواهی‌اش به‌جای نشانی، استخر را نام می‌برد شکست می‌خورد هرچند نشانی درست است. LocalIdentifier هویتی است که سرور شما را با آن می‌شناسد و با احراز هویت گواهی باید با هویت نگاشت‌شده به حساب شما مطابق باشد. ServerCertificateIssuerCommonName صادرکننده CA را سنجاق می‌کند، بنابراین پروفایل ممکن است روز صدور مجدد گواهی شکست بخورد، بی‌آنکه هیچ پیام خطایی گواهی‌ها را ذکر کند.

اگر AuthenticationMethod برابر SharedSecret باشد، سرور احراز هویت کاربر EAP انجام می‌دهد و رازی که به شما داده شده در واقع اعتبارنامه حساب است. این زمانی اهمیت دارد که ارائه‌دهنده دو سند می‌فرستد، یکی برای نام کاربری و گذرواژه و یکی برای گواهی، و فقط یکی با آنچه وارد کرده‌اید مطابق است.

کاری که اپ می‌تواند و کلاینت بومی نمی‌تواند

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

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

کاری که پروفایل IKEv2 داخلی درست انجام می‌دهد

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

آنچه مسیر بومی نمی‌دهد انعطاف است. VPN به‌ازای هر اپ بدون اپ‌های مدیریت‌شده وجود ندارد، کلید قطعی برای کاربر نیست، و ترابری که در شبکه‌ای که IPsec را مسدود می‌کند شبیه HTTPS باشد نیست. در شبکه‌های هتل که UDP 500 و 4500 را می‌اندازند، IKEv2 بومی راه جایگزینی ندارد.

جدول تصمیمی که بیشتر موارد را حل می‌کند

در عمل پرسش پروتکل بیشتر موارد را پیش از آنکه قابلیت‌ها اهمیت پیدا کنند حل می‌کند.

What you were givenDevice situationWhat to use
An .ovpn or WireGuard configPersonal phoneProvider app; the native form cannot load it
IKEv2 host plus CA namePersonal or managedProfile, or the app's own IKEv2 mode
IKEv2 with username and secretPersonal phoneEither; the profile is simpler if you never switch servers
A management-installed profileSupervised, MDMNative client; do not add a second app entry
A per-app tunnelling requirementPersonal phoneApp, or accept a full tunnel; iOS cannot split by app without management
IPsec blocked on your main networkAnyApp with a transport that survives the block

دو ردیف ارزش نگاه دوباره را دارند. الزام به‌ازای هر اپ روی تلفن شخصی همان موردی است که مردم اشتباه می‌خوانند: این تنظیم در iOS وجود دارد اما مدیریت آن را هدایت می‌کند، بنابراین دستگاه مدیریت‌نشده آن را پیشنهاد نمی‌دهد. شبکه مسدود دلیلی برای بی‌اعتمادی به IKEv2 نیست؛ همان دلیلی است که اپ ارائه‌دهنده وجود دارد.

انتخاب را با یک آزمون بررسی کنید

حالت‌های خرابی را بیازمایید نه دکمه اتصال را. یک بار وصل شوید، تأیید کنید که نشانگر VPN ظاهر می‌شود، سپس صفحه‌ای باز کنید که نشانی عمومی شما را برمی‌گرداند و آن را با قبلی مقایسه کنید. بدون دست‌زدن به VPN از Wi-Fi به داده همراه بروید و اتصال مجدد را ببینید، سپس تلفن را از حالت هواپیما بگذرانید. دوباره راه‌اندازی کنید و ببینید تونل خودبه‌خود برمی‌گردد: پروفایل دارای OnDemandEnabled باید برگردد، در حالی که بسیاری از اپ‌ها باید نخست باز شوند.

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

فهرست کوتاهی تا دستگاه برای نفر بعدی قابل توضیح بماند:

  • یک ورودی VPN، نه دو؛
  • پروفایل یا اپ به نام سروری که به آن وصل می‌شود؛
  • مقادیر هویت جایی نوشته شده که بتوانید پیدا کنید.

با ردیف پروتکل در جدول شروع کنید و اگر پاسخ پرسش را می‌دهد همان‌جا بایستید.

مقالات مرتبط