Skip to content

OpenVPN و OpenConnect ​

OpenVPN و OpenConnect همان VPNهایی هستند که لپ‌تاپ‌های اداری، روترها و دستگاه‌های قفل‌شده اغلب از قبل دارند. انیکس هر دو را به‌صورت اندپوینت سرو می‌کند: هر کاربر با نام حساب و گذرواژه‌ی خودش وارد می‌شود و پنل پیکربندی کلاینتش را برایش می‌نویسد.

به چه کاری می‌آیند ​

  • OpenVPN: اپ‌های رسمی OpenVPN، روترها و فایروال‌هایی که کلاینت داخلی دارند، و هر کاربری که بتواند فایل .ovpn را وارد کند.
  • OpenConnect: Cisco Secure Client (AnyConnect) و کلاینت‌های OpenConnect که روی دستگاه‌های کاری رایج‌اند.

هیچ‌کدام را نمی‌شود پشت CDN برد.

OpenVPN ​

اندپوینت‌ها ← افزودن، نوع openvpn-server. فرم کلی در اندپوینت‌ها آمده است. فرم با یک پورت تصادفی، حالت tls، udp، یک مخزن آدرس کلاینت و گواهی نود شروع می‌شود.

فیلد
Listen portپورتی که کاربرها به آن وصل می‌شوند
Modetls (پیش‌فرض) همان حالت مناسب مشتری‌هاست: سرور با یک گواهی هویتش را ثابت می‌کند و هر کاربر با نام و گذرواژه‌ی خودش وارد می‌شود. static_key یک تونل نقطه‌به‌نقطه برای یک کلاینت است، پایین‌تر را ببینید
Networkudp (پیش‌فرض) یا tcp. هر اندپوینت روی یکی از آن‌ها گوش می‌دهد؛ برای هر دو، اندپوینت دومی بسازید
Address (CIDR list)مخزنی که آدرس تونل کاربرها از آن می‌آید، مثلاً 10.9.0.1/24
گواهی TLSبه‌طور پیش‌فرض گواهی نود، یا یکی از گواهی‌ها. فیلدهای گواهی فقط وقتی دیده می‌شوند که روی گواهی خود اندپوینت باشد
Verify client certificate (پیشرفته)به‌طور پیش‌فرض خاموش. الزامی کردن گواهی کلاینت اندپوینت را از اشتراک کاربرها حذف می‌کند، چون پنل چنین گواهی‌ای صادر نمی‌کند

زیر + افزودن تنظیم گزینه‌های تنظیم دقیق آمده‌اند. بیشترشان با همان مقداری شروع می‌شوند که نود بدون آن‌ها به کار می‌برد، پس افزودنشان تا ویرایش نکنید چیزی را عوض نمی‌کند. استثنا Data ciphers fallback است: نود چنین مقداری ندارد، و افزودنش به کلاینت‌های قدیمی‌تر از OpenVPN 2.4 اجازه می‌دهد با cipherی که نام می‌برد وصل شوند.

  • Data ciphers، Data ciphers fallback، Auth digest: کانال داده. fallback برای کلاینت‌های قدیمی‌تر از OpenVPN 2.4 است.
  • Min/Max TLS version، TLS 1.2 cipher suites، TLS key exchange groups، Certificate profile: TLS کانال کنترل.
  • MTU، MSS fix (bytes)، Replay window (packets)، Max clients، Topology.
  • Ping interval/restart، Renegotiate every/after، Handshake window: زمان‌بندی سمت سرور.

محافظت از کانال کنترل ​

محافظت از کانال کنترل را روشن کنید تا هر بستهٔ کانال کنترل با یک کلید امضا (tls_auth) یا افزون بر آن رمزنگاری (tls_crypt، tls_crypt_v2) شود. آن‌وقت probe ای که کلید ندارد هیچ جوابی نمی‌گیرد، و با tls_crypt یا tls_crypt_v2 دست‌دادن TLS و گواهی سرور روی شبکه خوانده نمی‌شوند. هیچ‌کدام از این سه پنهان نمی‌کند که ترافیک OpenVPN است: سرآیند بسته‌ها خوانا می‌ماند و OpenVPN از روی آن با هر کدام شناخته می‌شود.

پنل کلید را می‌سازد و تولید مجدد کلید تازه می‌سازد. فایل .ovpn و اشتراک هر کاربر سمت کلاینتِ متناظر را دارد:

  • tls_crypt و tls_auth: یک کلید برای همه.
  • tls_crypt_v2: کلیدی مخصوص هر کاربر که با کلید سرور بسته‌بندی شده است. کلید سرور هیچ‌وقت از اندپوینت بیرون نمی‌رود. هر کاربر همیشه همان کلید را می‌گیرد؛ کلید سرور تازه به همه‌ی کاربران کلید تازه می‌دهد، پس باید فایلشان را دوباره دانلود کنند.

ارسال به کلاینت‌ها ​

ارسال به کلاینت‌ها چیزی است که سرور بعد از اتصال به هر کلاینت می‌گوید. خاموش، پیش‌فرض پنل اعمال می‌شود: همه‌ی ترافیک از تونل، ping هر ۱۰ ثانیه، راه‌اندازی دوباره بعد از ۶۰ ثانیه. روشن، از همان پیش‌فرض شروع می‌کند و می‌توانید این‌ها را عوض کنید:

  • Route all traffic through the tunnel با پرچم‌هایش، و Routes، شبکه‌هایی که از تونل می‌روند (وقتی اولی خاموش است، تنها همین‌ها)؛
  • DNS servers (dhcp-option) که همه‌ی کلاینت‌ها می‌خوانند، Search domains و سرورهای DNS برای کلاینت‌های OpenVPN 2.6 (اولویت، DNS جداگانه برای دامنه‌ها، DNSSEC، DNS روی TLS یا HTTPS)؛
  • Block DNS outside the tunnel (Windows)، گزینه‌های DHCP اضافه و زمان‌بندی ping کلاینت.

کلاینت‌ها همه‌ی این‌ها را از سرور می‌گیرند؛ فایل‌هایشان تغییر نمی‌کند.

حالت کلید ثابت ​

حالت static_key یک تونل میان این اندپوینت و یک کلاینت است که همان کلید را دارد، بدون ورود. این‌ها را لازم دارد:

  • Static key: برایتان ساخته می‌شود، با دکمه‌ای برای ساختن کلید تازه؛
  • Cipher؛
  • Client tunnel address، آدرس کلاینت درون تونل (و آدرس IPv6 وقتی مخزن IPv6 دارد)؛
  • روی UDP، Client address و Client port: سرور فقط به همان آدرس جواب می‌دهد.

چنین اندپوینتی کاربر ندارد: TLS ندارد، چیزی ارسال نمی‌کند و فایل .ovpn یا ورودی اشتراک نمی‌گیرد. تنها کلاینتش را خودتان تنظیم می‌کنید.

فایل ‎.ovpn ​

هر کاربر روی قالب یک فایل .ovpn می‌گیرد، در پنجره‌ی QR / لینک‌های خودش زیر اپ‌های کلاینت (ذخیره فایل) و در صفحه‌ی اشتراک خودش. فایل کامل است:

  • گواهی سرور داخلش است، پس گواهی خودامضای نود بدون هیچ تنظیمی روی دستگاه کار می‌کند؛
  • نام و گذرواژه‌ی کاربر هم داخلش است، پس OpenVPN Connect 3 و OpenVPN 2.6 یا بالاتر بدون پرسیدن وصل می‌شوند.

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

اپ‌های sing-box هم اندپوینت را به‌صورت یک ورودی در اشتراکشان می‌گیرند.

OpenConnect ​

اندپوینت‌ها ← افزودن، نوع openconnect-server. فرم با یک پورت تصادفی، یک مخزن آدرس کلاینت و TLS روی گواهی نود شروع می‌شود.

فیلد
Listen portاغلب ۴۴۳، همان چیزی که کلاینت‌های AnyConnect انتظار دارند
Client IP pool (CIDR)مخزنی که آدرس تونل کاربرها از آن می‌آید
گواهی TLSبه‌طور پیش‌فرض گواهی نود، یا یکی از گواهی‌ها. اطلاعات ورودی که کاربرها می‌گیرند گواهی ندارد، پس کلاینتشان گواهی را مثل یک مرورگر بررسی می‌کند: یک گواهی ACME برای یک دامنه‌ی واقعی جلوی هشدار یا رد شدن روی دستگاه را می‌گیرد
Pushed DNS serversresolverهایی که دستگاه باید استفاده کند
Search domain، Split-include routes، MTU، DPD/keepalive (seconds) (پیشرفته)مثل هر سرور AnyConnect دیگری

کلاینت‌های OpenConnect به‌جای فایل، یک آدرس سرور و اطلاعات ورود می‌گیرند. زبانه‌ی اپ‌های کلاینت کاربر و صفحه‌ی اشتراکش هر دو را نشان می‌دهند. اپ‌های sing-box هم اندپوینت را در اشتراکشان می‌گیرند.

کاربرها ​

  • روی OpenVPN هر کاربر در هر لحظه یک دستگاه دارد. دستگاه دومی که با همان حساب وارد شود session را می‌گیرد و اولی بیرون می‌افتد. روی TCP اولی بلافاصله متوجه می‌شود؛ روی UDP خبردار نمی‌شود و در timeout بعدی ping متوجه می‌شود. در هر دو حالت دوباره وصل می‌شود و session را پس می‌گیرد، پس دو دستگاه یک کاربر مدام هم را بیرون می‌اندازند، و کلاینتی که بلافاصله دوباره وصل می‌شود (مثل اپ‌های sing-box) همیشه برنده است. به هر دستگاه حساب جدا بدهید، یا برای دستگاه دوم از پروتکل دیگری استفاده کنید. Allow duplicate CN این قاعده را برمی‌دارد، ولی آن‌وقت هر اتصال آدرس تونل تازه می‌گیرد و کاربری که محدودیت آدرس دارد ممکن است بعد از قطع و وصل چند دقیقه بیرون بماند.
  • کاربری که گذرواژه‌اش را عوض می‌کند، یا حذف یا غیرفعال می‌شود، فوراً از OpenVPN قطع می‌شود؛ بقیه وصل می‌مانند.
  • اندپوینت OpenVPN در حالت tls، یا اندپوینت OpenConnect، که قالبش هیچ کاربری ندارد اصلاً سرو نمی‌شود: یک سرور OpenVPN خالی هر گذرواژه‌ای را می‌پذیرفت. پنل وقتی دست‌کم یک کاربر وجود داشته باشد آن را برای نود می‌فرستد.
  • حسابداری، سهمیه‌ها، و محدودیت‌های سرعت و آدرس برای هر کاربر اعمال می‌شوند، مثل هر اینباند دیگری.

متن و تصویرها با مجوز CC BY 4.0.