OpenVPN، OpenConnect و Tailscale

نمایه‌های OpenVPN، OpenConnect و Tailscale را وارد و تنظیم کنید، با کدهای یک‌بارمصرف وارد شوید و VPN محل کار را کنار پروکسی خود اجرا کنید.

Throne می‌تواند به سرورهای OpenVPN و به VPNهای Cisco AnyConnect و سازگار با آن (OpenConnect) وصل شود و به یک شبکهٔ Tailscale بپیوندد. کلاینت‌های VPN درون هسته ساخته شده‌اند؛ بنابراین نیازی به نصب OpenVPN یا OpenConnect ندارید. این صفحه وارد کردن، گزینه‌های اصلی، ورود با کدهای یک‌بارمصرف و اجرای VPN محل کار در کنار پروکسی را پوشش می‌دهد.

OpenVPN

یک فایل .ovpn را به یکی از این روش‌ها وارد کنید:

  • برنامه (Program) ← Add profile from File(s) (Ctrl+O).
  • فایل را بکشید و روی پنجرهٔ اصلی رها کنید.
  • متن فایل را کپی کنید و در پنجرهٔ اصلی Ctrl+V را بزنید.

برای ساختن دستی نمایه، از برنامه (Program) ← نمایه جدید (New profile) استفاده کنید و نوع (Type) را روی OpenVPN بگذارید.

نکته‌هایی دربارهٔ وارد کردن:

  • فقط نمایه‌های کلاینت برای dev tun کار می‌کنند. نمایه‌های TAP (dev tap) و پیکربندی‌های سرور رد می‌شوند.
  • بسته‌های PKCS#12 (pkcs12) پشتیبانی نمی‌شوند. CA، گواهی و کلید را به‌صورت PEM خروجی بگیرید، سپس آن‌ها را در CA Certificate، Client Certificate و Client Key جای‌گذاری کنید.
  • اگر فایل، اطلاعات ورود را در فایل جداگانه‌ای نگه می‌دارد (auth-user-pass <file>)، Username و Password را در نمایه وارد کنید.
  • گزینه‌های ناشناخته یا پشتیبانی‌نشده در گزارش، در خط‌هایی که با OpenVPN: شروع می‌شوند، فهرست می‌شوند. گزینه‌هایی که به Throne مربوط نیستند، مانند اسکریپت‌های up و down یا persist-tun، بدون پیام نادیده گرفته می‌شوند.
  • اگر فایل همهٔ ترافیک را از راه VPN بفرستد (redirect-gateway)، Throne گزینهٔ Only route advertised network را برای نمایه خاموش می‌کند.

ویرایشگر همچنین Network (خالی یعنی udp)، Static Challenge، MTU، OTP، Tunnel DNS، فایل‌های TLS و Control Channel Wrap را برای کلیدهای tls-auth و tls-crypt دارد. Advanced گزینه‌های بیشتری را باز می‌کند.

OpenConnect

Flavor در نمایه، نوع سرور را انتخاب می‌کند:

Flavor نوع سرور
خالی یا anyconnect Cisco AnyConnect و سرورهای سازگار با آن
gp Palo Alto GlobalProtect
fortinet Fortinet
f5 F5 BIG-IP
pulse Pulse Connect Secure
nc Juniper Network Connect

Throne این قالب‌ها را از فایل، کلیپ‌بورد یا اشتراک وارد می‌کند:

  • فایل نمایهٔ XML مربوط به AnyConnect. هر سرور در <ServerList> آن به یک نمایه تبدیل می‌شود. سرورهایی که از IPsec (IKEv2) استفاده می‌کنند و موارد بدون نشانی، با یک یادداشت نادیده گرفته می‌شوند.
  • یک خط فرمان openconnect، برای مثال openconnect --protocol=gp --user=alice vpn.example.com.
  • یک فایل پیکربندی با یک گزینه در هر خط که یک خط protocol= دارد، مانند protocol=fortinet.

فیلدهای اصلی دیگر عبارت‌اند از Username، Password، Auth Group (یک گروه، realm یا gateway را از پیش انتخاب می‌کند)، Server Path (بخش مسیر در URL سرور که برخی پورتال‌های GlobalProtect، F5 و Fortinet به آن نیاز دارند)، MTU، OTP و گزینه‌های TLS. Advanced گزینه‌های بیشتری دارد، برای مثال Cookie نشست (session) و Software Token.

گزینه‌های مشترک هر دو نوع VPN

تنظیم پیش‌فرض کاربرد
Only route advertised network روشن وقتی این نمایه را اجرا می‌کنید، فقط ترافیک به‌سوی شبکه‌هایی که سرور VPN اعلام می‌کند وارد تونل می‌شود. ترافیک دیگری که به نمایه برسد مسدود می‌شود. قوانین مسیریابی‌ای که نام این نمایه را آورده‌اند تحت تأثیر قرار نمی‌گیرند. برای یک VPN که باید همهٔ ترافیک را حمل کند، آن را خاموش کنید.
Tunnel DNS Prefer نحوهٔ استفادهٔ Throne از سرورهای DNS که سرور VPN می‌فرستد. None: آن‌ها را نادیده می‌گیرد. Prefer: فقط نام‌هایی را که سرور ادعا می‌کند (دامنه‌های split-DNS آن) از راه آن‌ها تفکیک می‌کند. Strict: علاوه بر آن، همهٔ پرس‌وجوهای DNS راه‌دور را هم به آن‌ها می‌فرستد و نام‌هایی را که آن‌ها نمی‌توانند پاسخ دهند ناموفق می‌کند.
Username، Password خالی اطلاعات ورود. {otp} در این فیلدها به یک کد یک‌بارمصرف تبدیل می‌شود؛ استفاده از کد در نمایهٔ VPN را ببینید.

برای نقطهٔ پایانی (endpoint) یک نمایهٔ مسیریابی، Prefer و Strict هر دو فقط نام‌هایی را که سرور ادعا می‌کند تفکیک می‌کنند.

ورود به حساب

Throne با Username و Password ذخیره‌شده وارد می‌شود. وقتی سرور اطلاعات بیشتری بخواهد، پنجرهٔ VPN Authentication باز می‌شود:

  • یک پرسش یا فرم، برای مثال یک گذرواژهٔ دوم: آن را پر کنید و روی Submit کلیک کنید. برخی درخواست‌ها یک محدودیت زمانی نشان می‌دهند: «Expires in …» (تا … دیگر منقضی می‌شود).
  • یک صفحهٔ ورود: پنجره یک نشانی و دکمهٔ Open in Browser را نشان می‌دهد. در مرورگر وارد شوید، سپس پنجره را ببندید. اتصال پس از آنکه سرور ورود را بپذیرد ادامه می‌یابد.
  • ورود یکپارچه (SSO) که فقط درون مرورگر کار می‌کند هنوز پشتیبانی نمی‌شود. از ورود با نام کاربری و گذرواژه استفاده کنید، یا برای OpenConnect، یک Cookie نشست را در تنظیمات Advanced نمایه وارد کنید.

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

زبانهٔ Runtime Stats در پایین پنجرهٔ اصلی، هر اتصال VPN را همراه با وضعیت آن و یک دکمهٔ Details فهرست می‌کند.

مدیر OTP (OTP Manager)

بسیاری از VPNهای محل کار یک کد یک‌بارمصرف از یک برنامهٔ احراز هویت (authenticator) می‌خواهند. از نسخهٔ 1.3.0، Throne برنامهٔ احراز هویت خودش را دارد: Tools → OTP Manager.

افزودن موارد:

  • Import → Add manually...: یک Name و Secret (با قالب Base32) وارد کنید. Type (TOTP (time based) یا HOTP (counter based))، Algorithm، Digits (4 تا 10، پیش‌فرض 6) یا Period (seconds) (پیش‌فرض 30) را فقط در صورتی تغییر دهید که ارائه‌دهندهٔ شما بگوید. پنجره کد فعلی را نشان می‌دهد تا بتوانید آن را با برنامهٔ احراز هویت دیگرتان مقایسه کنید.
  • Import → From link or text...: لینک‌های otpauth://، یک لینک otpauth-migration:// (قالب خروجی Google Authenticator)، یک خروجی JSON یا فقط یک secret با قالب Base32 را جای‌گذاری کنید.
  • Import → From clipboard (یا Ctrl+V در پنجره)، یا From QR image file....
  • Scan QR Code یک کد QR را روی صفحه‌نمایش شما پیدا می‌کند.

استفاده از موارد:

  • روی یک مورد کلیک کنید تا کد فعلی آن کپی شود.
  • برای تغییر ترتیب موارد، آن‌ها را بکشید.
  • Export روی هر مورد، گزینه‌های This one as otpauth:// link and QR، All as otpauth-migration:// link and QR و All as JSON file... را پیشنهاد می‌دهد.
  • Delete یک مورد را حذف می‌کند. secret آن قابل بازیابی نیست.
  • منوی سینی سیستم (tray) گزینهٔ OTP Codes را دارد: فهرستی قابل جست‌وجو از همهٔ کدها. روی یک کد کلیک کنید تا کپی شود.

موارد OTP بخشی از نسخه‌های پشتیبان هستند: گزینهٔ OTP profiles در تنظیمات (Settings) ← تنظیمات پایه (Basic Settings) ← Backup and Restore. فایل‌های پشتیبان را خصوصی نگه دارید.

استفاده از کد در نمایهٔ VPN

  1. نمایهٔ OpenVPN یا OpenConnect را باز کنید.
  2. در OTP، مورد مربوط را انتخاب کنید.
  3. اگر سرور کد را به‌عنوان بخشی از گذرواژه انتظار دارد، {otp} را جای کد بگذارید، برای مثال MyPassword{otp}. در OpenConnect، {otp} در فیلدهای software token و فیلدهای فرم هم کار می‌کند.
  4. روی تایید (OK) کلیک کنید.

اکنون Throne در هر اتصال یک کد تازه وارد می‌کند. همچنین خودش به درخواست‌های کد سرور پاسخ می‌دهد: challenge در OpenVPN (اگر سرورتان از static challenge استفاده می‌کند، متن challenge را در Static Challenge وارد کنید) و فرم‌های ورود OpenConnect. اگر سرور یک کد را رد کند، Throne حداکثر سه بار کد جدیدی را امتحان می‌کند. اگر سرور کل ورود را رد کند، Throne به‌جای پرسیدن از شما، نمایه را حداکثر سه بار با کد جدید دوباره راه‌اندازی می‌کند.

تونل تفکیکی: VPN محل کار در کنار پروکسی

از نسخهٔ 1.3.0، یک نمایهٔ مسیریابی می‌تواند نمایه‌های OpenVPN یا OpenConnect را در کنار نمایه‌ای که اجرا می‌کنید راه‌اندازی کند. ترافیک به‌سوی شبکه‌هایی که سرور VPN اعلام می‌کند از راه VPN می‌رود. بقیهٔ ترافیک از نمایهٔ مسیریابی پیروی می‌کند، برای مثال از راه پروکسی شما.

  1. نمایهٔ VPN را وارد کنید یا بسازید.
  2. مسیریابی (Routing) ← تنظیمات مسیریابی (Routing Settings) ← زبانهٔ مسیر (Route) را باز کنید.
  3. نمایهٔ مسیریابی‌ای را که استفاده می‌کنید انتخاب کنید و روی Edit کلیک کنید.
  4. زبانهٔ Endpoints را باز کنید. این زبانه فقط وقتی نمایش داده می‌شود که یک نمایهٔ OpenVPN یا OpenConnect، یا زنجیره‌ای که به یکی از آن‌ها ختم می‌شود، داشته باشید.
  5. نمایهٔ VPN را در فهرست انتخاب کنید و روی Add کلیک کنید.
  6. روی تایید (OK) کلیک کنید و مطمئن شوید که این نمایهٔ مسیریابی، نمایهٔ فعال است؛ یعنی در پایین منوی مسیریابی (Routing) تیک خورده باشد.
  7. نمایهٔ معمولی خود را اجرا کنید. VPN همراه با آن راه‌اندازی می‌شود.

هر نقطهٔ پایانی (endpoint) یک قانون با نام <name> route prefer به زبانهٔ پیشرفته (Advanced) اضافه می‌کند که در آن <name> نام نمایهٔ VPN است. نمی‌توانید این قانون را ویرایش کنید، اما می‌توانید آن را میان قوانین خودتان جابه‌جا کنید: قوانین بالای آن زودتر بررسی می‌شوند. حذف این قانون می‌پرسد که آیا نقطهٔ پایانی هم حذف شود.

محدودیت‌ها:

  • نمایه‌ای که به‌عنوان نقطهٔ پایانی استفاده می‌شود، نمی‌تواند همان نمایه‌ای باشد که اجرا می‌کنید یا یکی از هاپ‌های آن.
  • نقطهٔ پایانی می‌تواند زنجیره‌ای باشد که هاپ خروجی آن (ردیف پایین زنجیره) یک نمایهٔ OpenVPN یا OpenConnect است. Allow routing to inner hops را تیک بزنید تا برای هر هاپ OpenVPN یا OpenConnect درون زنجیره هم یک قانون ساخته شود.
  • هاپ‌های نقطهٔ پایانی نمی‌توانند روی Xray اجرا شوند و نمی‌توانند نمایهٔ هستهٔ اضافی (Extra Core) یا نمایهٔ پیکربندی کامل باشند.

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

Tailscale

نمایهٔ Tailscale به tailnet شما می‌پیوندد تا بتوانید به دستگاه‌های Tailscale خود دسترسی داشته باشید یا از یکی از آن‌ها به‌عنوان گرهٔ خروجی (exit node) استفاده کنید. نمایه‌های Tailscale فقط در دسکتاپ وجود دارند.

  1. برنامه (Program) ← نمایه جدید (New profile) را باز کنید.
  2. نوع (Type) را روی Tailscale بگذارید.
  3. فیلدهای زیر را پر کنید. Auth key را در کنسول مدیریت Tailscale می‌سازید.
  4. روی تایید (OK) کلیک کنید و نمایه را اجرا کنید.
فیلد پیش‌فرض کاربرد
State directory $HOME/.tailscale محل ذخیرهٔ وضعیت ورود.
Auth key خالی کلیدی که برای ورود به tailnet شما استفاده می‌شود.
Control URL https://controlplane.tailscale.com سرور هماهنگ‌کننده. فقط برای سرور کنترلی که خودتان میزبانی می‌کنید آن را تغییر دهید.
Hostname خالی نام این دستگاه در tailnet.
Accept routes خاموش از مسیرهای زیرشبکه‌ای که دستگاه‌های دیگر اعلام می‌کنند استفاده می‌کند.
Ephemeral خاموش به‌عنوان دستگاه موقت (ephemeral) ثبت می‌شود که tailnet پس از آفلاین شدنش آن را حذف می‌کند.
Exit node خالی ترافیک اینترنت را از راه این دستگاه tailnet می‌فرستد.
Exit node allow lan access خاموش هنگام استفاده از گرهٔ خروجی، دسترسی به شبکهٔ محلی را حفظ می‌کند.
Advertise exit node خاموش این رایانه را به‌عنوان گرهٔ خروجی پیشنهاد می‌کند.
Advertise routes خالی زیرشبکه‌هایی که به tailnet پیشنهاد می‌شوند، جداشده با کاما (,).
Global DNS خاموش اجازه می‌دهد DNS مربوط به Tailscale از سرورهای نام سراسری tailnet هم استفاده کند.

Throne نام دستگاه‌های tailnet شما (زیر ts.net) را با DNS مربوط به Tailscale تفکیک می‌کند. نام‌های دیگر از تنظیمات DNS معمول شما استفاده می‌کنند. تست URL و انتخابگر خودکار (auto selector) از نمایه‌های Tailscale صرف‌نظر می‌کنند.

Android

  • نمایه‌های OpenVPN و OpenConnect در Android با همان قالب‌های وارد کردن کار می‌کنند. ویرایشگر گزینه‌های کمتری نشان می‌دهد: انتخاب مورد OTP، Only route advertised network و Tunnel DNS در آن وجود ندارند.
  • مدیر OTP و پنجرهٔ VPN Authentication وجود ندارند. نمایه باید با نام کاربری و گذرواژهٔ ذخیره‌شدهٔ خود وارد شود. موارد OTP از نسخهٔ پشتیبان دسکتاپ بازیابی نمی‌شوند.
  • نقطه‌های پایانی نمایهٔ مسیریابی (تونل تفکیکی) در Android اجرا نمی‌شوند. نمایهٔ مسیریابی‌ای که از نسخهٔ پشتیبان دسکتاپ آمده، نقطه‌های پایانی خود را نگه می‌دارد، اما Android آن‌ها را راه‌اندازی نمی‌کند.
  • نمایه‌های Tailscale پشتیبانی نمی‌شوند.
  • در هر دو پلتفرم، انتخابگر خودکار از نمایه‌های OpenVPN، OpenConnect و Tailscale صرف‌نظر می‌کند.