معماری OpenConnect: توی مقاله قبل با OpenConnect آشنا شدین و دیدین که OpenConnect فقط یه VPN نیست. مجموعه‌ای از چند بخش مختلف هست که کنار هم یک ارتباط امن رو بین کاربر و شبکه داخلی ایجاد می‌کنن.

قبل از هر چیزی، معماری کلی OpenConnect

اگه بخوایم کل معماری OpenConnect رو فقط توی یک تصویر خلاصه کنیم، چیزی شبیه این اتفاق میفته.

معماری OpenConnect

تمام چیزی که در ادامه مقاله می‌خونین، در واقع توضیح همین شکل ساده هست. 🙂

سمت کاربر، چیزی که اجرا میشه OpenConnect Client هست.

این همون نرم‌افزاریه که کاربر روی سیستم خودش نصب می‌کنه تا به VPN متصل بشه.

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

مثلاً:

Linux
Windows
macOS
Android
iPhone
OpenWRT

وظیفه Client فقط یک چیزه. برقراری یک ارتباط امن با VPN Server.

خود Client تصمیمی درباره اینکه کاربر به کجا دسترسی داشته باشه نمی‌گیره. تمام تصمیم‌ها روی سرور گرفته میشه.

سمت مقابل، سرور قرار داره. سرویسی هست که ما قراره روی Ubuntu نصب کنیم.

اسم این پروژه OpenConnect VPN Server یا به اختصار ocserv هست.

وقتی یک Client درخواست اتصال ارسال می‌کنه، این ocserv هست که تصمیم می‌گیره:

آیا کاربر مجازه وارد بشه؟
رمز عبور درسته؟
Certificate معتبره؟
از چه DNSی استفاده بشه؟
چه Routeهایی به کاربر داده بشه؟
Full Tunnel باشه یا Split Tunnel؟
کاربر به چه شبکه‌هایی دسترسی داشته باشه؟
حداکثر چند Session همزمان مجازه؟

تقریباً تمام مدیریت VPN روی ocserv انجام میشه.

اینجا یکی از رایج‌ترین سوءتفاهم‌ها اتفاق میفته.

خیلی‌ها فکر می‌کنن Cisco AnyConnect یه VPN Server هست. در حالی که در اکثر سناریوها، Cisco AnyConnect فقط یک Client محسوب میشه. یعنی دقیقاً همون کاری رو انجام میده که OpenConnect Client انجام میده.

این پست رو هم بخونین  کوبرنتیز؛ نود، پاد، کانتینر و کلاستر

تفاوت اینجاست که یکی‌شون توسط Cisco توسعه داده شده و یکی‌شون متن‌بازه.

به همین دلیل در بسیاری از موارد، Cisco AnyConnect می‌تونه بدون هیچ مشکلی به ocserv متصل بشه.

همین ویژگی باعث شده خیلی از شرکت‌ها بدون خرید تجهیزات Cisco، از ocserv استفاده کنن اما همچنان کاربرانشون با Cisco AnyConnect وارد VPN بشن.

فرض کنین شما داخل خونه هستین. می‌خواین به سرور لینوکس شرکت SSH بزنین.

اولین اتفاقی که میفته اینه که OpenConnect Client به آدرس VPN Server متصل میشه.

vpn.company.com

ارتباط اولیه از طریق HTTPS برقرار میشه.

بعد از اینکه هویت سرور توسط Certificate تأیید شد، مرحله احراز هویت شروع میشه.

اگر نام کاربری و رمز عبور درست باشه، ocserv یک Session برای کاربر ایجاد می‌کنه.

بعد از اون، یک IP از Pool تعریف‌شده به کاربر اختصاص داده میشه.

مثلاً:

10.10.10.25

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

در حالی که شاید هزاران کیلومتر با شرکت فاصله داشته باشه.

یکی از مهم‌ترین تفاوت‌های OpenConnect با بعضی VPNهای قدیمی اینه که از TLS استفاده می‌کنه.

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

به همین دلیل، مرحله ابتدایی ارتباط OpenConnect بسیار شبیه باز کردن یک وب‌سایت امنه.

همین موضوع باعث شده OpenConnect توی فیلترینگ اینترنت سازگاری بالایی داشته باشه و بتواند از فایروال‌ها، NAT و بسیاری از محدودیت‌های رایج راحت‌تر عبور کند. (البته می‌دونیم که این سازگاری ۱۰۰٪ نیست و فیلترچی می‌تونه مسدودش کنه.)

بعد از اینکه ارتباط TLS برقرار شد، اگر شرایط شبکه مناسب باشه، OpenConnect تلاش می‌کنه ارتباط رو به DTLS منتقل کنه.

این پست رو هم بخونین  تنظیم ساعت و تاریخ لینوکس Centos 7

DTLS نسخه UDP محور TLS محسوب میشه.

مزیتش چیه؟

Latency کمتر
سرعت بیشتر
سربار کمتر
عملکرد بهتر در ارتباط‌های طولانی

اگر به هر دلیلی UDP در دسترس نباشه، ارتباط همچنان روی TLS ادامه پیدا می‌کنه.

یعنی VPN قطع نمیشه. فقط ممکنه کمی کندتر بشه.

بعد از وارد کردن Username و Password کار تموم نمیشه. تازه اونجا کار ocserv شروع میشه.

بعد از Login، سرور باید تصمیم بگیره:

چه IPی اختصاص بده؟
چه DNSی ارسال کنه؟
چه Routeهایی Push بشه؟
آیا اینترنت کاربر از VPN عبور کنه؟
آیا فقط شبکه داخلی در دسترس باشه؟
آیا این کاربر اجازه دسترسی به همه سرورها رو داره؟

همه این تصمیم‌ها توسط ocserv گرفته میشه.

وقتی اسم VPN میاد، خیلی‌ها فقط به یه تانل رمزنگاری‌شده فکر می‌کنن.

اما توی OpenConnect، VPN فقط یکی از اجزای سیستم محسوب میشه.

کنار اون، اجزای مهم دیگه‌ای هم وجود دارن.

Authentication
Authorization
Routing
NAT
DNS
Certificate Management
Session Management
Logging
Accounting

به همین دلیل OpenConnect بیشتر شبیه یک پلتفرم Remote Access عمل می‌کنه تا صرفاً یک VPN Server.

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

چرا OpenConnect رو انتخاب کنیم؟

توی پست بعدی، OpenConnect رو با WireGuard، OpenVPN و IPsec مقایسه می‌کنیم و بررسی می‌کنیم هر کدوم برای چه سناریوهایی مناسب‌تر هستن، مزایا و محدودیت‌های هر کدوم چیه و توی چه شرایطی بهتره از OpenConnect استفاده کنیم.

درباره نویسنده

رامتین رحمانی نژاد

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

مشاهده تمام مقالات