- هل تريد تثبيت OpenVPN على نظام Linux كعميل وتوجيه مسارات محددة عبر VPN أو المسار العادي؟
- المتطلبات الأساسية
- تثبيت OpenVPN
- الإعداد الأساسي (التنفيذ اليدوي)
- التحكم في المسار الافتراضي: سلوك الخادم الافتراضي
- الطريقة الأولى - إرسال بعض عناوين IP فقط عبر VPN (النفق المنقسم)
- الطريقة الثانية - جميع حركة المرور تمر عبر VPN، ولكن بعض عناوين IP المحددة تمر عبر المسار العادي (التجاوز)
- الطريقة الثالثة - التوجيه القائم على السياسات
- الاتصال بنظام systemd (التشغيل التلقائي)
- مشاكل نظام أسماء النطاقات (DNS) وحل أسماء النطاقات
- مثال كامل لملف client.ovpn (مثال)
- نصائح أمنية وتشغيلية
- إصلاح الأخطاء الشائعة
- مقارنة التطبيقات ونصائح لأنواع المستخدمين المختلفة
- ملخص واستنتاج
هل تريد تثبيت OpenVPN على نظام Linux كعميل وتوجيه مسارات محددة عبر VPN أو المسار العادي؟
في هذا الدليل العملي والتقني المفصل، سنرشدك خطوة بخطوة إلى كيفية إعداد OpenVPN كعميل على توزيعات لينكس الشائعة. يهدف الدليل إلى توفير ملفات نموذجية، وبرامج نصية لإدارة المسارات، وطرق تقسيم النفق وتجاوز بروتوكول الإنترنت، ونصائح حول مصادقة اسم المستخدم وكلمة المرور.
المتطلبات الأساسية
قبل أن تبدأ، تأكد من توفر ما يلي:
- نظام لينكس (Ubuntu/Debian/CentOS/Fedora/Alma)
- مغلق أوبن في بي إن تم التثبيت
- ملف تكوين الخادم أو ملف .ovpn من مزود خدمة VPN
- اسم المستخدم/كلمة المرور في حالة المصادقة المدمجة (اسم المستخدم/كلمة المرور + الشهادة)
تثبيت OpenVPN
أوامر التثبيت للتوزيعات الشائعة:
sudo apt update && sudo apt install openvpn
sudo dnf install openvpn
الإعداد الأساسي (التنفيذ اليدوي)
إذا كان الملف client.ovpn إذا كان لديك البرنامج، فاستخدم هذا الأمر لتشغيله فوراً:
sudo openvpn --config client.ovpnإذا كان الخادم يستخدم اسم المستخدم/كلمة المرور ولا تريد إدخالها في كل مرة، فأنشئ ملف بيانات اعتماد:
sudo tee /etc/openvpn/credentials <<'EOF'
myuser
mypassword
EOF
sudo chmod 600 /etc/openvpn/credentialsفي الملف .ovpn يجب أن يكون السطر التالي موجودًا أو يجب إضافته:
auth-user-pass /etc/openvpn/credentialsنصيحة أمنية: من auth-nocache يُستخدم لمنع OpenVPN من تخزين كلمة المرور مؤقتًا في الذاكرة:
auth-nocachechmod 600 حماية واستخدام المصادقة القائمة على الشهادات (شهادة العميل) و tls-crypt/tls-auth لزيادة الأمان.
التحكم في المسار الافتراضي: سلوك الخادم الافتراضي
غالباً ما يتم تحديد السلوك الافتراضي للمسارات بواسطة الخادم:
- إذا كان الخادم
redirect-gateway def1إذا قمت بالضغط، فسيمر كل حركة المرور الخاصة بك عبر VPN (نفق كامل). - لمنع الخادم من قبول المسار الافتراضي، يمكنك استخدام
route-nopullاستخدم ثم أضف المسارات المطلوبة يدويًا.
الطريقة الأولى - إرسال بعض عناوين IP فقط عبر VPN (النفق المنقسم)
إذا كنت ترغب في إرسال عناوين محددة فقط عبر الشبكة الافتراضية الخاصة (VPN)، فاستخدم route-nopull في الملف client.ovpn استخدم المسارات المطلوبة وأضفها.
client
dev tun
proto udp
remote vpn.example.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
route-nopull
route 203.0.113.45 255.255.255.255
route 198.51.100.0 255.255.255.0توضيح: مع route-nopull لا يتم قبول أي مسارات من الخادم، وستبقى عالقًا مع الخطوط. طريق تقوم بتوجيه وجهات محددة عبر الشبكة الافتراضية الخاصة (VPN).
الطريقة الثانية - جميع حركة المرور تمر عبر VPN، ولكن بعض عناوين IP المحددة تمر عبر المسار العادي (التجاوز)
عندما يقوم الخادم redirect-gateway def1 إذا كنت تريد تمرير بعض العناوين المحددة عبر المسار الافتراضي (الإنترنت)، فأنت بحاجة إلى حفظ البوابة الافتراضية وإعادة كتابة مسارات التجاوز.
أ) احفظ البوابة الأصلية قبل الاتصال
أمثلة على الأوامر اللازمة للحصول على البوابة الافتراضية والجهاز قبل الاتصال:
GW=$(ip route show default | awk '/default/ {print $3}')
DEV=$(ip route show default | awk '/default/ {print $5}')بعد الاستيقاظ tun0أعد إضافة عناوين IP التي تريد تجاوزها عبر البوابة:
sudo ip route add 203.0.113.0/24 via $GW dev $DEV
sudo ip route add 8.8.8.8/32 via $GW dev $DEVب) التشغيل الآلي باستخدام برنامج نصي لأعلى/لأسفل
في client.ovpn أضف الأسطر التالية لتشغيل البرامج النصية:
script-security 2
up /etc/openvpn/client-up.sh
down /etc/openvpn/client-down.shمثال /etc/openvpn/client-up.sh:
#!/bin/bash
echo "$(ip route show default | awk '/default/ {print $3, $5}')" > /var/run/openvpn.origgw
GW=$(awk '{print $1}' /var/run/openvpn.origgw)
DEV=$(awk '{print $2}' /var/run/openvpn.origgw)
ip route add 8.8.8.8/32 via $GW dev $DEV
ip route add 203.0.113.45/32 via $GW dev $DEV
exit 0مثال /etc/openvpn/client-down.sh:
#!/bin/bash
GW=$(awk '{print $1}' /var/run/openvpn.origgw)
DEV=$(awk '{print $2}' /var/run/openvpn.origgw)
ip route del 8.8.8.8/32 via $GW dev $DEV || true
ip route del 203.0.113.45/32 via $GW dev $DEV || true
rm -f /var/run/openvpn.origgw
exit 0لا تنس تشغيل البرامج النصية:
sudo chmod +x /etc/openvpn/client-up.sh /etc/openvpn/client-down.sh
الطريقة الثالثة - التوجيه القائم على السياسات
يمكنك استخدام التوجيه القائم على السياسات لتوجيه حركة المرور الخاصة بمصدر معين عبر الشبكة الافتراضية الخاصة (VPN).
echo "200 vpnroute" | sudo tee -a /etc/iproute2/rt_tables
sudo ip rule add from 10.0.0.5/32 lookup vpnroute
sudo ip route add default dev tun0 table vpnrouteللحصول على معلومات tun0 والبوابة الافتراضية:
ip -4 addr show dev tun0
ip route show dev tun0
الاتصال بنظام systemd (التشغيل التلقائي)
بالنسبة لملفات التكوين الموجودة في المسار /etc/openvpn/client/ يمكنك تشغيل وحدة systemd:
sudo systemctl start openvpn-client@client
sudo systemctl enable openvpn-client@client
sudo journalctl -u openvpn-client@client -f
مشاكل نظام أسماء النطاقات (DNS) وحل أسماء النطاقات
إذا تم دفع نظام أسماء النطاقات (DNS) بواسطة الخادم، فإن بعض التوزيعات تتطلب برنامجًا نصيًا. تحديث ملف resolv.conf أو التنسيق مع تم حلها بواسطة systemd لديك.
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-confفي الأنظمة التي تم حلها بواسطة systemd قد تتطلب هذه العمليات إعدادات إضافية.
مثال كامل لملف client.ovpn (مثال)
client
dev tun
proto udp
remote vpn.example.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
auth SHA256
auth-user-pass /etc/openvpn/credentials
auth-nocache
route-nopull
route 203.0.113.45 255.255.255.255
route 198.51.100.0 255.255.255.0
script-security 2
up /etc/openvpn/client-up.sh
down /etc/openvpn/client-down.sh
نصائح أمنية وتشغيلية
- أنشئ ملف بيانات الاعتماد باستخدام
chmod 600يحمي. - من شهادة العميل و
مصادقة TLS/تشفير TLSيُستخدم لمنع هجمات حجب الخدمة البسيطة. - من auth-nocache استخدمه لتجنب تخزين كلمة المرور في الذاكرة.
- حافظ على تحديث OpenVPN واستخدم خوارزميات التشفير/التجزئة الحديثة مثل
AES-256-GCMأوCHACHA20يستخدم. - قم بمراقبة السجلات واستخدم systemd مع logrotate لتدوير السجلات.
بالنسبة للبيئات التي تتطلب أقل زمن استجابة (التجار / اللاعبين)، استخدم المواقع القريبة أو النفق المنقسم لتوجيه الخدمات التي تحتاجها فقط للحفاظ على زمن الاستجابة والاستقرار.
إصلاح الأخطاء الشائعة
- لم يتم إنشاء الاتصال: تحقق من المنفذ والبروتوكول في جدار الحماية (ufw/iptables/مجموعة الأمان).
- نظام أسماء النطاقات (DNS) لا يعمل: من
تحديث ملف resolv.confأو الضبط اليدوي/etc/resolv.confيستخدم. - لم تتم إضافة المسارات: تأكد من
أمان البرامج النصية 2تم تفعيلها والبرامج النصية قابلة للتنفيذ. - بعد انقطاع الاتصال بالإنترنت: من المحتمل أن يكون الخادم قد دفع المسار الافتراضي؛ استخدم طرق التجاوز أو route-nopull.
مقارنة التطبيقات ونصائح لأنواع المستخدمين المختلفة
- التجار: الحاجة إلى سرعة استجابة عالية واستقرار؛ استخدم مواقع قريبة، وإذا أمكن، استخدم تقنية النفق المنقسم فقط للاتصال بخادم التداول.
- اللاعبون: عادةً ما يجب أن تسلك حركة مرور اللعبة أقصر الطرق؛ يمكن أن يؤدي استخدام النفق الكامل إلى زيادة زمن الاستجابة (ping)، لذا قم بتوجيه حركة المرور إلى خادم اللعبة فقط أو استخدم خادمًا قريبًا.
- مديرو الموقع/مهندسو العمليات التطويرية: يوصى بتشغيل عميل OpenVPN على الخوادم التي تعمل بنظام systemd واستخدام التوجيه القائم على السياسات لخدمات محددة.
- الذكاء الاصطناعي/الرسم: بالنسبة لعمليات نقل البيانات الكبيرة، تعتبر الخوادم ذات النفق الكامل والنطاق الترددي العالي أكثر ملاءمة.
ملخص واستنتاج
لتشغيل عميل OpenVPN على نظام Linux، ستحتاج عادةً إلى الملف .ovpn فضلاً عن ذلك كلمة مرور المستخدم المصادقة وإذا لزم الأمر route-nopull هذا كافٍ لتقنية النفق المنقسم. لتجاوز بعض عناوين IP أثناء استخدام النفق الكامل، احفظ البوابة السابقة وأضف المسارات المناسبة. وللحصول على سلوك أكثر تعقيدًا، استخدم التوجيه القائم على السياسات.









