در این مقاله قصد داریم با هم پروتکل های VPN و کاربرد آن و کانفیگ OpenVPN آشنا شویم. علاوه بر این مزیّتها و معایب رایجترین پروتکلهای VPN که شامل OpenVPN، WireGuard، IKEv2، PPTP و L2TP هستند را با یکدیگر مقایسه کنیم.
قبل از از متصل شدن و استفاده کردن از VPN باید از امنیت آن مطمئن شویم. یکی از موارد امنیت VPN نوع پروتکل آن میباشد. هر چند ارزیابی جنبههای فنی امنیت VPN برای کاربران معمولی میتواند دشوار باشد. این مقاله میتواند به کاربرانی که در این زمینه قصد فعالیت دارند کمک کند.
پروتکل VPN چیست؟
VPN با برقرار نمودن یک تونل(Tunnel)، یک اتصال شبکه خصوصی بین دو دستگاه (سرور یا کامپیوتر) در اینترنت ایجاد میکند. پروتکل VPN به عنوان قرارداد تونلزنی هم شناخته میشود، مجموعهای از دستورالعملهایی است که دستگاه اول برای برقرای ارتباط امن (شبکه بین دستگاه اول و کامپیوترهای دیگر) از آن استفاده میکند.
پروتکل VPN معمولا از دو کانال ساخته میشود: کانال Data و کانال Control کانال کنترل مسئول تبادل کلید، احراز هویت (Authentication) و تبادل (Communication) پارامترهاست. کانال Data مسئول انتقال دیتای ترافیک اینترنت شماست. این دو کانال با همدیگر، یک تونل VPN امن را ایجاد و حفظ میکنند. با اینحال دیتای ترافیک اینترنت شما برای عبور از این تونل باید کپسوله (encapsulation) شوند.
کپسولهسازی (encapsulation) زمانی اتفاق میافتد که پروتکل VPN بیتهای data ترافیک اینترنت شما را درون packet دیگر قرار میدهد. این لایه اضافی از آنجایی ضروری است که پروتکل تنظیماتی که VPN شما درون کانال داده استفاده میکند الزاماً با پروتکل اینترنت عادی یکی نیست.
به طور اختصار زمانی که شما به سرور VPN وصل میشوید، VPN از طریق کانال کنترلی که دارد کلیدهای مشترک را ایجاد کرده و سپس یک ارتباط بین دستگاه شما و سرور برقرار میکند. هنگامی که اتصال برقرار شد کانال data شروع به انتقال ترافیک اینترنت دستگاه شما میکند. هنگامی که درباره مزیّتها و معایب و یا بهتر بگوییم درباره موضوع امنیت VPN مطرح میشود، در واقع صحبت درباره کانال داده VPN است. هنگامی که اتصال برقرار بشود، کانال Control وظیفه حفظ ثبات ارتباط را دارد.
مقایسه انواع پروتکلهای VPN با یکدیگر
PPTP یا قرارداد Tunneling نقطه به نقطه (Point to Point)
رمرگذاری یا Encryption پروتکل PPTP : پروتکل رمزگذاری نقطه به نقطه (Point to Point) مایکروسافت (MPPE) که از الگوریتم RSA RC4 استفاده میکند برای رمزگذاری استفاده میکند. حداکثر توان MPPE کلیدهای ۱۲۸ بیتی است، یعنی Dataها را با کلید ۱۲۸ بیت رمزگذاری (Point to point) میکند.
سرعت: به دلیل اینکه پروتکل رمزگذاری آن نیازی به سرعت و قدرت محاسباتی زیادی ندارد، از سرعت خوبی برخوردار است.
Portهای Firewall : این پروتکل از پورت TCP 1723 و GRE استفاده میکند. استفاده PPTP از GRE به این معنی است که این پروتکل نمیتواند فایروال NAT را هدایت کند و به سرعت مسدود(Block) میشود.
پایداری (stability) : ثبات مناسبی ندارد.
در نتیجه اگر امنیت دادههایتان از اهمیت بالایی برخوردار است، از PPTP استفاده نکنید.
L2TP/IPSec قرارداد Tunneling لایه ۲
رمرگذاری یا Encryption پروتکل L2TP: پروتکل L2TP از رمزنگاری 3DES یا AES استفاده میکند. هر چند DES سهگانه بلاک رمز ضعیفی(weak) است و به ندرت از آن استفاده میشود.
سرعت: در مقایسه با OpenVPN، سرعت L2TP کمتر است.
Portهای Firewall: این پروتکل ازپورت UDP 500 برای مبادله کلید، از UDP 5500 برای NAT traversal و از UDP 1701 برای ترافیک L2TP استفاده میکند. پروتکل L2TP/IPSec به دلیل اینکه از پورتهای ثابتی استفاده میکند، به راحتی Block میشود.
پایداری (stability): به دلیل پیچیدگیهای این پروتکل، از پایداری خوبی برخوردار نیست.
در نتیجه مطمئنا از PPTP امنتر است اما از دادههای شما در برابر هکرهای پیشرفته محافظت نمیکند. از آنجاییکه سرعت و پایداری خوبی هم ندارد تنها زمانی که گزینههای دیگر وجود نداشته باشند، برای استفاده مناسب است.
IKEv2/IPSec
رمرگذاری یا Encryption پروتکل IKEv2 : پروتکل IKEv2/IPSec میتواند از الگوریتمهای رمزنگاری مختلفی از جمله AES، Blowfish و Camellia استفاده کند. این پروتکل از رمزگذاری 256 بیت پشتیبانی میکند.
سرعت: سرعت این پروتکل نسبت به سایر گزینهها خوب است.
Portهای Firewall: این پروتکل از پورت UDP 500 برای مبادله کلید، از پورت UDP 4500 برای NAT traversal استفاده میکند. به دلیل اینکه همیشه از این پورتها استفاده میکند، به راحتی میتواند Block شود.
پایداری (stability): به دلیل پشتیبانی از پروتکل Mobility and Multihoming، نسبت به سایر پروتکلهای VPN از پایداری خوبی برخوردار است.
در نتیجه با توجه به امنیت، سرعت و پایداری بالا و خوبی که دارد یکی از گزینههای خوب است.
OpenVPN
رمزگذاری : پروتکل OpenVPN میتواند از الگوریتمهای رمزنگاری مختلف موجود در کتابخانه OpenSSL از جمله AES، Blowfish و RC5 استفاده کند. این پروتکل از رمزگذاری 256 بیت پشتیبانی میکند.
سرعت: هنگام استفاده از UDP، پروتکل OpenVPN سرعت خوبی دارد. امّا سرعت IKEv2/IPSec بالاتر است.
Portهای Firewall: این پروتکل میتواند از هر دو درگاه TCP و UDP استفاده کند. برای مثال میتواند از درگاه TCP 443 که برای ترافیک https است نیز استفاده کند. بدین ترتیب مسدود کردن آن سخت میشود.
پایداری (stability): پروتکل OpenVPN بسیار پایدار است.
در نتیجه با توجه به امنیت و پایداری خوبی که دارد یکی از بهترین پروتکلها برای افرادی است که امنیت دادههایشان از اهمیت بالایی برخوردار است. میتوان تنها ایراد OpenVPN را سرعت آن در نظر گرفت زیرا همانطور که گفته شد IKEv2/IPSec سرعت بهتری دارد.
کانفیگ OpenVPN
جهت نصب و کانفیگ OpenVPN نیاز به یک سرور مجازی لینوکسی داریم. پیشتر در مورد اینکه سرور مجازی چیست و کانفیگ سرور لینوکسی و نحوه اتصال به آن صحبت کردیم اکنون قصد داریم مراحلی که میبایست نصب و کانفیگ OpenVPN انجام شود را با هم طی کنیم، در ابتدا میبایست سرور
در ابتدا به ssh سرور متصل میشویم و کامند زیر را اجرا میکنیم
wget https://git.io/vpn -O openvpn-install.sh && bash openvpn-install.sh
با نوشتن عدد 1، پروتکل UDP را برای استفاده VPN انتخاب کنید و Enter کنید
بطور پیشفرض پورت 1194 نصب میگردد، عدد 1194 را تایپ نموده و سپس Enter کنید
در این قسمت از شما میخواهد یک DNS server برای VPN Server انتخاب کنید، شما بطور پیشفرض عدد 1 را برای Current System Resolvers انتخاب نمائید
در این مرحله Enter a name for the first client ، از شما میخواهد یک نام برای اولین Connection ای که برای VPN ساخته میشود، در نظر بگیرید، یک نام که مدنظرتان هست مثلا Client تایپ و سپس Enter کنید
در این مرحله نیز، Enter بزنید تا مراحل نصب آغاز گردد.
پس از اتمام مراحل نصب، مانند تصویر زیر دو پیغام ظاهر میگردد؛ پیغام اول به صورت
The client configuration is available in: /root/Connection name
به این معنی که Connection اولی که ایجاد کردید، در مسیر root/ سرور ایجاد شده است.
و پیغام دوم به صورت
New Clients can be adde by running this script again
به این معنی که اگر بخواهید Connectionهای دیگری ایجاد کنید، همین کامند را مجدداً اجرا نمائید
حال میخواهیم Connection دیگری در OpenVPN سرور ایجاد کنیم، مطابق با تصویر زیر مجدداً کامند زیر را اجرا میکنیم
wget https://git.io/vpn -O openvpn-install.sh && bash openvpn-install.sh
در مرحلهی Select an options عدد 1 را که معادل Add new Client است را تایپ نموده و Enter کنید
در این مرحله برای Connection دوم یک نام در نظر بگیرید و تایپ و سپس Enter کنید
با مشاهده این پیغام، Connection در مسیر root/ ایجاد شده است
حال FTP سرور را باز میکنیم (در نظر داشته باشید گزینهی FTP یا SFTP تنها در نرم افزارهای Bitvise و WinSCP قرار دارد، و مسیر root/ را مشاهده میکنیم
اتصال به OpenVPN از طریق PC
جهت اتصال به OpenVPN Connection از روی کامپیوتر یا لپ تاپ، ابتدا از طریق این لینک، نرم افزار OpenVPN Connect را دانلود و روی سیستمتان نصب کنید، سپس آن را اجرا نمائید؛ (در نظر داشته باشید که میبایست ابتدا، دو Connectionای که در مرحلهی قبل ایجاد کرده بودید را روی سیستمتان دانلود کرده باشید)، و روی تب File کلیک کنید
سپس فایل Ovpn را میتوانید به دو صورت در نرم افزار OpenVPN Connect ایمپورت کنید، مثلاً مانند تصویر زیر بصورت drag & drop فایل را به درون نرم افزار بکشید و رها کنید
یا میتوانید روی Brows کلیک بکنید، و فایل Ovpn را انتخاب و سپس Ok کنید
حال با پیغام Profile successfully imported مواجه میشوید، تیک گزینهی Connect after import را بزنید و سپس روی Add کلیک کنید
اکنون مشاهده میکنید که VPN در حال اتصال (Connecting) میباشد
اکنون مشاهده میشود که VPN Connection متصل شده است و آیپی اینترنتی سیستم شما، همان آیپی سرور مجازی شماست
اتصال به OpenVPN از طریق موبایل
در ابتدا، آن Connection ای که برای موبایل با نام Mobile-client.ovpn ایجاد کرده بودیم را دانلود کرده و در file manager موبایل منتقل میکنیم، سپس اپلیکیشن OpenVPN Connect اندروید و یا نسخه آیفون OpenVPN را دانلود و نصب نمائید و سپس آن را اجرا نمائید.
سپس روی Files کلیک کنید و فولدری که فایل ovpn در آن قرار دارد را باز کنید
و سپس فایل ovpn ساخته شده را انتخاب نمائید و روی دکمهی Import بزنید
حال با پیغام Profile successfully imported مواجه میشوید، تیک گزینهی Connect after import را بزنید و سپس روی Add کلیک کنید
حال مشاهده میکنید که VPN متصل شده و آیپی اینترنتی دستگاه شما، آیپی سرور مجازی میباشد