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

تمام چیزی که در ادامه مقاله میخونین، در واقع توضیح همین شکل ساده هست. 🙂
OpenConnect Client چیست؟
سمت کاربر، چیزی که اجرا میشه OpenConnect Client هست.
این همون نرمافزاریه که کاربر روی سیستم خودش نصب میکنه تا به VPN متصل بشه.
کلاینت میتونه روی سیستمعاملهای مختلف اجرا بشه.
مثلاً:
Linux
Windows
macOS
Android
iPhone
OpenWRT
وظیفه Client فقط یک چیزه. برقراری یک ارتباط امن با VPN Server.
خود Client تصمیمی درباره اینکه کاربر به کجا دسترسی داشته باشه نمیگیره. تمام تصمیمها روی سرور گرفته میشه.
ocserv چیست؟
سمت مقابل، سرور قرار داره. سرویسی هست که ما قراره روی Ubuntu نصب کنیم.
اسم این پروژه OpenConnect VPN Server یا به اختصار ocserv هست.
وقتی یک Client درخواست اتصال ارسال میکنه، این ocserv هست که تصمیم میگیره:
آیا کاربر مجازه وارد بشه؟
رمز عبور درسته؟
Certificate معتبره؟
از چه DNSی استفاده بشه؟
چه Routeهایی به کاربر داده بشه؟
Full Tunnel باشه یا Split Tunnel؟
کاربر به چه شبکههایی دسترسی داشته باشه؟
حداکثر چند Session همزمان مجازه؟
تقریباً تمام مدیریت VPN روی ocserv انجام میشه.
Cisco AnyConnect کجای این معماری قرار میگیره؟
اینجا یکی از رایجترین سوءتفاهمها اتفاق میفته.
خیلیها فکر میکنن Cisco AnyConnect یه VPN Server هست. در حالی که در اکثر سناریوها، Cisco AnyConnect فقط یک Client محسوب میشه. یعنی دقیقاً همون کاری رو انجام میده که OpenConnect Client انجام میده.
تفاوت اینجاست که یکیشون توسط Cisco توسعه داده شده و یکیشون متنبازه.
به همین دلیل در بسیاری از موارد، Cisco AnyConnect میتونه بدون هیچ مشکلی به ocserv متصل بشه.
همین ویژگی باعث شده خیلی از شرکتها بدون خرید تجهیزات Cisco، از ocserv استفاده کنن اما همچنان کاربرانشون با Cisco AnyConnect وارد VPN بشن.
معماری ارتباط OpenConnect چطوری شکل میگیره؟
فرض کنین شما داخل خونه هستین. میخواین به سرور لینوکس شرکت SSH بزنین.
اولین اتفاقی که میفته اینه که OpenConnect Client به آدرس VPN Server متصل میشه.
vpn.company.com
ارتباط اولیه از طریق HTTPS برقرار میشه.
بعد از اینکه هویت سرور توسط Certificate تأیید شد، مرحله احراز هویت شروع میشه.
اگر نام کاربری و رمز عبور درست باشه، ocserv یک Session برای کاربر ایجاد میکنه.
بعد از اون، یک IP از Pool تعریفشده به کاربر اختصاص داده میشه.
مثلاً:
10.10.10.25
از این لحظه به بعد، سیستمعامل کاربر تصور میکنه داخل شبکه شرکت قرار گرفته.
در حالی که شاید هزاران کیلومتر با شرکت فاصله داشته باشه.
نقش TLS در OpenConnect
یکی از مهمترین تفاوتهای OpenConnect با بعضی VPNهای قدیمی اینه که از TLS استفاده میکنه.
TLS همون پروتکلیه که موقع باز کردن سایتهای HTTPS استفاده میشه.
به همین دلیل، مرحله ابتدایی ارتباط OpenConnect بسیار شبیه باز کردن یک وبسایت امنه.
همین موضوع باعث شده OpenConnect توی فیلترینگ اینترنت سازگاری بالایی داشته باشه و بتواند از فایروالها، NAT و بسیاری از محدودیتهای رایج راحتتر عبور کند. (البته میدونیم که این سازگاری ۱۰۰٪ نیست و فیلترچی میتونه مسدودش کنه.)
پس DTLS چیست؟
بعد از اینکه ارتباط TLS برقرار شد، اگر شرایط شبکه مناسب باشه، OpenConnect تلاش میکنه ارتباط رو به DTLS منتقل کنه.
DTLS نسخه UDP محور TLS محسوب میشه.
مزیتش چیه؟
Latency کمتر
سرعت بیشتر
سربار کمتر
عملکرد بهتر در ارتباطهای طولانی
اگر به هر دلیلی UDP در دسترس نباشه، ارتباط همچنان روی TLS ادامه پیدا میکنه.
یعنی VPN قطع نمیشه. فقط ممکنه کمی کندتر بشه.
احراز هویت فقط اولین مرحله هست
بعد از وارد کردن Username و Password کار تموم نمیشه. تازه اونجا کار ocserv شروع میشه.
بعد از Login، سرور باید تصمیم بگیره:
چه IPی اختصاص بده؟
چه DNSی ارسال کنه؟
چه Routeهایی Push بشه؟
آیا اینترنت کاربر از VPN عبور کنه؟
آیا فقط شبکه داخلی در دسترس باشه؟
آیا این کاربر اجازه دسترسی به همه سرورها رو داره؟
همه این تصمیمها توسط ocserv گرفته میشه.
معماری OpenConnect فقط یک VPN نیست
وقتی اسم 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 استفاده کنیم.


