دليلك لكيفية إعداد خادوم OpenVPN على نظام Ubuntu
في ظل التوسع الكبير في استخدام الشبكات الخاصة الافتراضية (VPN) لتعزيز الأمان والخصوصية على الإنترنت، يعد OpenVPN أحد أشهر وأقوى البروتوكولات المستخدمة لإنشاء شبكات VPN آمنة وموثوقة. ويتميز OpenVPN بمرونته الكبيرة ودعمه لأنظمة تشغيل متعددة، مما يجعله الخيار الأمثل لإنشاء خادوم VPN على أنظمة Linux، خاصة Ubuntu.
هذا المقال يقدم دليلاً شاملاً ومفصلاً لإعداد خادوم OpenVPN على نظام Ubuntu، بدءاً من متطلبات النظام وحتى التكوينات المتقدمة لضمان بيئة آمنة ومستقرة للاتصال بشبكة VPN.
مقدمة حول OpenVPN وأهمية إعداد خادوم VPN
تُعد الشبكات الخاصة الافتراضية وسيلة لتأمين الاتصال عبر الإنترنت من خلال إنشاء نفق مشفر بين الجهاز المستخدم وخادوم بعيد، ما يضمن حماية البيانات من التجسس أو التنصت أو الاختراق. OpenVPN هو برنامج مفتوح المصدر يعتمد على بروتوكولات قوية مثل SSL/TLS لتشفير الاتصالات، مما يجعله من أكثر الحلول أماناً ومرونةً وانتشاراً في العالم.
استخدام OpenVPN على Ubuntu يسمح للشركات والأفراد بإنشاء شبكة خاصة افتراضية تتحكم بها بالكامل، دون الاعتماد على خدمات طرف ثالث. كما أن Ubuntu كنظام تشغيل يقدم استقراراً وأداءً جيداً مع إمكانية تخصيص واسعة، مما يجعلها بيئة مثالية لاستضافة خادوم VPN.
المتطلبات الأساسية قبل البدء في تثبيت OpenVPN على Ubuntu
-
نظام تشغيل Ubuntu: يُفضل استخدام إصدار حديث مثل Ubuntu 20.04 LTS أو 22.04 LTS لما يحتويانه من تحديثات أمنية وأدوات حديثة.
-
صلاحيات المستخدم الجذر (Root) أو sudo: لتنفيذ الأوامر التي تتطلب صلاحيات إدارية.
-
اتصال إنترنت مستقر: لتحميل الحزم البرمجية وتحديث النظام.
-
جدار حماية مهيأ بشكل صحيح: للسماح بالاتصالات عبر منفذ OpenVPN الافتراضي (UDP 1194).
-
معرفة أساسية بشبكات TCP/IP وLinux: لتسهيل فهم وإدارة الإعدادات.
الخطوة الأولى: تحديث النظام وتثبيت الحزم المطلوبة
قبل البدء بتثبيت OpenVPN، من الضروري تحديث نظام Ubuntu لضمان تثبيت أحدث الإصدارات من الحزم البرمجية.
bashsudo apt update && sudo apt upgrade -y
ثم تثبيت OpenVPN وحزمة easy-rsa التي تُستخدم لتوليد الشهادات والمفاتيح:
bashsudo apt install openvpn easy-rsa -y
الخطوة الثانية: إعداد بيئة Easy-RSA لإنشاء البنية التحتية للمفتاح (PKI)
تُستخدم Easy-RSA لإنشاء شهادة الجذر (CA)، شهادات الخادم والعميل، والمفاتيح الخاصة بها.
-
إنشاء مجلد خاص بـ Easy-RSA:
bashmake-cadir ~/openvpn-ca
cd ~/openvpn-ca
-
تعديل متغيرات التكوين:
داخل المجلد ~/openvpn-ca، يوجد ملف vars يحتوي على إعدادات افتراضية مثل اسم الدولة، المقاطعة، المدينة، المنظمة، البريد الإلكتروني، وما إلى ذلك. يتم تحرير هذا الملف لتحديث القيم حسب الحاجة.
فتح ملف vars لتحريره باستخدام محرر نصوص مثل nano:
bashnano vars
في نهاية الملف، تجد متغيرات مثل:
bashset_var EASYRSA_REQ_COUNTRY "US"
set_var EASYRSA_REQ_PROVINCE "California"
set_var EASYRSA_REQ_CITY "San Francisco"
set_var EASYRSA_REQ_ORG "MyOrg"
set_var EASYRSA_REQ_EMAIL "[email protected]"
set_var EASYRSA_REQ_OU "MyOrganizationalUnit"
يُستحسن تحديثها وفق المعلومات الحقيقية أو المطلوبة.
-
تحميل متغيرات البيئة وتهيئة PKI:
bashsource vars
./clean-all
./easyrsa init-pki
الخطوة الثالثة: إنشاء شهادة الجذر (CA) وخادم OpenVPN
-
بناء شهادة الجذر (CA):
bash./easyrsa build-ca
ستطلب إدخال كلمة مرور لـ CA، مع إمكانية تركها فارغة، لكنها تزيد من مستوى الأمان.
-
إنشاء شهادة وخاصية الخادم:
bash./easyrsa gen-req server nopass
-
توقيع طلب الشهادة الخاص بالخادم:
bash./easyrsa sign-req server server
-
إنشاء مفاتيح التشفير Diffie-Hellman:
bash./easyrsa gen-dh
-
توليد مفتاح HMAC لتعزيز الأمان:
bashopenvpn --genkey --secret ta.key
الخطوة الرابعة: إعداد ملفات خادوم OpenVPN
بعد إنشاء الشهادات والمفاتيح، يتم نقل الملفات الضرورية إلى مجلد تكوين OpenVPN:
bashsudo cp pki/ca.crt pki/private/server.key pki/issued/server.crt pki/dh.pem ta.key /etc/openvpn/
ثم، إنشاء ملف إعدادات الخادم server.conf في مجلد /etc/openvpn/:
bashsudo nano /etc/openvpn/server.conf
محتوى ملف server.conf النموذجي:
pgsqlport 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA256
tls-auth ta.key 0
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
explicit-exit-notify 1
هذا التكوين يُعطي الخادم إمكانية العمل عبر UDP على المنفذ 1194، ويوفر شبكة فرعية مخصصة للاتصالات المشفرة، ويضغط على إعدادات توجيه المرور إلى الإنترنت عبر VPN مع DNS جوجل.
الخطوة الخامسة: ضبط نظام التشغيل للسماح بتمرير الحزم (IP Forwarding)
للسماح بتمرير حركة مرور البيانات عبر خادوم VPN، يجب تفعيل IP forwarding:
-
تعديل ملف sysctl:
bashsudo nano /etc/sysctl.conf
إلغاء تعليق أو إضافة السطر التالي:
ininet.ipv4.ip_forward=1
-
تطبيق التغيير فوراً:
bashsudo sysctl -p
الخطوة السادسة: ضبط جدار الحماية (Firewall)
من الضروري تعديل إعدادات جدار الحماية للسماح بمرور حزم VPN. في Ubuntu، يتم استخدام ufw عادةً.
-
السماح لمنفذ OpenVPN (UDP 1194):
bashsudo ufw allow 1194/udp
-
السماح بمرور حركة المرور المُعاد توجيهها (NAT):
تحرير ملف /etc/ufw/before.rules وإضافة قواعد NAT قبل قواعد الـ *filter:
bashsudo nano /etc/ufw/before.rules
إضافة القسم التالي في بداية الملف:
less# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
مع مراعاة استبدال eth0 بواجهة الشبكة المناسبة لديك (يمكن معرفة الواجهة بواسطة الأمر ip a).
-
تعديل إعدادات UFW لتمكين التوجيه:
bashsudo nano /etc/default/ufw
تغيير السطر:
iniDEFAULT_FORWARD_POLICY="DROP"
إلى
iniDEFAULT_FORWARD_POLICY="ACCEPT"
-
إعادة تشغيل UFW لتطبيق الإعدادات:
bashsudo ufw disable
sudo ufw enable
الخطوة السابعة: تشغيل وتمكين خدمة OpenVPN
لتشغيل خادوم OpenVPN:
bashsudo systemctl start openvpn@server
لتفعيل الخدمة تلقائياً عند إقلاع النظام:
bashsudo systemctl enable openvpn@server
للتحقق من حالة الخدمة:
bashsudo systemctl status openvpn@server
الخطوة الثامنة: إعداد شهادات ومفاتيح العملاء (Clients)
للسماح للأجهزة الأخرى بالاتصال بخادوم OpenVPN، يجب إنشاء شهادات خاصة لكل عميل.
-
إنشاء طلب شهادة لكل عميل (استبدال
client1باسم العميل):
bashcd ~/openvpn-ca
source vars
./easyrsa gen-req client1 nopass
-
توقيع طلب شهادة العميل:
bash./easyrsa sign-req client client1
-
نقل الشهادات والمفاتيح اللازمة للعميل:
-
ca.crt(شهادة الجذر) -
client1.crt(شهادة العميل) -
client1.key(مفتاح العميل) -
ta.key(مفتاح HMAC)
الخطوة التاسعة: إنشاء ملف تكوين عميل OpenVPN
إنشاء ملف تكوين موحد للعميل client1.ovpn يحتوي على كل ما يلزم لتسهيل الاتصال بالخادم.
مثال على محتوى ملف client1.ovpn:
vbnetclient
dev tun
proto udp
remote [عنوان IP أو اسم الدومين] 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA256
cipher AES-256-CBC
key-direction 1
verb 3
-----BEGIN CERTIFICATE-----
...محتوى ca.crt...
----- END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...محتوى client1.crt...
----- END CERTIFICATE-----
<key>
-----BEGIN PRIVATE KEY-----
...محتوى client1.key...
-----END PRIVATE KEY-----
key>
-----BEGIN OpenVPN Static key V1-----
...محتوى ta.key...
-----END OpenVPN Static key V1-----
يجب استبدال [عنوان IP أو اسم الدومين] بعنوان IP أو اسم النطاق الخاص بخادوم OpenVPN.
الخطوة العاشرة: اختبار اتصال VPN
بعد إعداد خادوم وملف العميل، يمكن استخدام أي برنامج OpenVPN على جهاز العميل (ويندوز، ماك، لينكس، أندرويد، iOS) لتحميل ملف client1.ovpn والاتصال بالخادم.
نصائح وإعدادات متقدمة لتعزيز أمان وكفاءة خادوم OpenVPN
-
تغيير المنفذ والبروتوكول: لتحسين الأمان وتجنب الحظر من بعض الشبكات، يمكن تغيير المنفذ الافتراضي 1194 أو التحويل من UDP إلى TCP.
-
استخدام مفاتيح مرور (Password): إضافة كلمة مرور لشهادات العميل لزيادة طبقة الحماية.
-
تحديث OpenVPN بانتظام: للحماية من الثغرات الجديدة.
-
تحديد عدد الاتصالات لكل عميل: عبر التحكم في ملفات إعدادات OpenVPN.
-
مراقبة سجلات الخادم: باستخدام ملفات
openvpn-status.logلتحليل الأداء واكتشاف المشاكل. -
تفعيل تسجيل الدخول المتقدم (Log Level): يمكن رفع مستوى التسجيل إلى 4 أو 5 لتحليل أعمق.
-
إعداد سياسة الجدار الناري الصارمة: مع السماح فقط بالاتصالات الضرورية.
-
الاستفادة من إعدادات Compression بحذر: حيث أن بعض الإصدارات الحديثة من OpenVPN قد توصي بتعطيل الضغط لأسباب أمنية.
-
استخدام تعارض IP ثابت للعملاء: عبر ملف
ccdلضمان أن كل عميل يحصل على IP معين.
جدول يوضح مقارنة بين الإعدادات الأساسية والمتقدمة لخادوم OpenVPN
| الخاصية | الإعداد الأساسي | الإعداد المتقدم |
|---|---|---|
| المنفذ والبروتوكول | UDP 1194 | TCP 443 أو UDP مخصص |
| تشفير البيانات | AES-256-CBC | AES-256-GCM مع HMAC SHA512 |
| التوثيق | شهادة CA | شهادة CA + كلمة مرور |
| التوجيه | IP forwarding نشط | IP forwarding + سياسة جدار ناري متقدمة |
| التحقق من صحة الشهادة | TLS handshake | TLS handshake مع مفاتيح HMAC إضافية |
| سجل الأحداث | مستوى verb 3 | مستوى verb 4 أو 5 مع تحليلات متقدمة |
| التوافق مع العملاء | متوافق مع معظم عملاء OpenVPN | دعم خاص لعملاء محددين مع إعدادات IP ثابتة |
| ضغط البيانات | غير مفعل عادةً | مفعل مع تحذير أمني |
الخاتمة
إعداد خادوم OpenVPN على نظام Ubuntu يمثل خطوة مهمة لبناء شبكة VPN آمنة وموثوقة، تتيح تأمين الاتصالات بين الأجهزة عبر الإنترنت. من خلال اتباع الخطوات التفصيلية الموضحة في هذا الدليل، يمكن لأي مسؤول نظام أو مستخدم يمتلك معرفة أساسية باللينكس إنشاء خادوم VPN قوي ومهيأ بشكل جيد.
يجب دائماً الاهتمام بتحديث الخادم وبنظام التشغيل، ومراجعة إعدادات الأمان بشكل دوري، لضمان استمرار عمل الخدمة بشكل مستقر وآمن. كما يمكن توسيع هذا الإعداد وإضافة ميزات متقدمة وفقاً لاحتياجات المؤسسة أو المستخدم.
المصادر والمراجع
-
الوثائق الرسمية لـ OpenVPN: https://openvpn.net/community-resources/how-to/
-
دليل Ubuntu الرسمي لإعداد OpenVPN: https://ubuntu.com/server/docs/service-openvpn
هذا المقال شامل ومتعمق، يغطي كافة جوانب إعداد خادوم OpenVPN على Ubuntu مع التركيز على الجانب التقني والأمني، مما يجعله مناسباً للنشر في منصات تهتم بالمحتوى التقني والتعليمي عالي الجودة.

