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

نحوه تنظیم OpenVPN روی لینوکس به عنوان کلاینت

در این مقاله ساختاری و فنی، نحوه تنظیم OpenVPN روی لینوکس به عنوان کلاینت را آموزش خواهیم داد. با استفاده از راهنمایی‌های قدم به قدم و مدیریت روت‌ها، توانایی عبور ترافیک خود را به نحو احسن کنترل کنید. این مقاله شامل نکات امنیتی و رفع خطا برای استفاده بهینه از OpenVPN است.
0 الأسهم
0
0
0
0

 

آیا می‌خواهید OpenVPN را روی لینوکس به‌عنوان کلاینت نصب و مسیرهای خاصی را از طریق VPN یا مسیر عادی عبور دهید؟

در این راهنمای عملی و فنی قدم‌به‌قدم، نحوهٔ کانفیگ OpenVPN به‌عنوان کلاینت روی توزیع‌های رایج لینوکس را بررسی می‌کنیم. هدف ارائهٔ فایل‌های نمونه، اسکریپت‌های up/down برای مدیریت روت‌ها، روش‌های Split-Tunneling و بای‌پس برخی IPها و نکات مرتبط با احراز هویت با یوزرنیم/پسورد است.

 

المتطلبات الأساسية

قبل از شروع، مطمئن شوید که موارد زیر را دارید:

  • سیستم لینوکس (Ubuntu/Debian/CentOS/Fedora/Alma)
  • بسته openvpn نصب‌شده
  • فایل پیکربندی سرور یا فایل .ovpn از ارائه‌دهندهٔ VPN
  • نام‌کاربری/رمز عبور در صورت احراز هویت ترکیبی (user/pass + cert)

 

نصب OpenVPN

دستورات نصب برای توزیع‌های متداول:

sudo apt update && sudo apt install openvpn
sudo dnf install openvpn

 

راه‌اندازی پایه (اجرای دستی)

اگر فایل client.ovpn دارید، برای اجرای فوری از این دستور استفاده کنید:

sudo openvpn --config client.ovpn

اگر سرور از یوزرنیم/پسورد استفاده می‌کند و نمی‌خواهید هر بار وارد کنید، یک فایل credentials بسازید:

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-nocache

 

کنترل مسیر پیش‌فرض: رفتار پیش‌فرض سرور

رفتار پیش‌فرض مسیرها اغلب توسط سرور تعیین می‌شود:

  • اگر سرور redirect-gateway def1 را push کند، کل ترافیک شما از طریق VPN خواهد رفت (Full Tunnel).
  • برای جلوگیری از پذیرش route پیش‌فرض از سرور می‌توانید از route-nopull استفاده کنید و سپس routeهای مورد نیاز را دستی اضافه کنید.

 

روش 1 — ارسال فقط برخی IPها از طریق VPN (Split tunnel)

اگر می‌خواهید تنها آدرس‌های مشخصی از طریق VPN ارسال شوند، از route-nopull في الملف client.ovpn استفاده کنید و routeهای موردنظر را اضافه نمایید.

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 هیچ route‌ای از سرور پذیرفته نمی‌شود و شما با خطوط route مقصدهای مشخص را از طریق VPN هدایت می‌کنید.

 

روش 2 — کل ترافیک از VPN، اما چند IP مشخص از مسیر عادی عبور کنند (Bypass)

وقتی سرور redirect-gateway def1 را push می‌کند و شما می‌خواهید چند آدرس خاص از مسیر پیش‌فرض (اینترنت) عبور کنند، باید gateway اصلی را ذخیره و routeهای بای‌پس را بازنویسی کنید.

الف) ذخیرهٔ gateway اصلی قبل از اتصال

دستورات نمونه برای گرفتن gateway اصلی و device پیش‌از اتصال:

GW=$(ip route show default | awk '/default/ {print $3}')
DEV=$(ip route show default | awk '/default/ {print $5}')

پس از بالا آمدن tun0، IPهایی که می‌خواهید بای‌پس شوند را مجدداً از طریق GW اضافه کنید:

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

ب) اتومات کردن با اسکریپت up/down

في 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

 

روش 3 — Policy-based Routing (مسیر‌دهی براساس آدرس مبدأ)

برای هدایت ترافیک با منبع خاص از VPN می‌توانید از policy-based routing استفاده کنید.

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 و gateway مجازی:

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 و مشکل name resolution

اگر DNS توسط سرور push می‌شود، در برخی توزیع‌ها نیاز به اسکریپت update-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

 

نصائح أمنية وتشغيلية

  • فایل credentials را با chmod 600 محافظت کنید.
  • از client certificate و مصادقة TLS/تشفير TLS برای جلوگیری از DoS ساده استفاده کنید.
  • من auth-nocache استفاده کنید تا رمز در حافظه کش نشود.
  • OpenVPN را به‌روز نگه دارید و از Cipher/Hash مدرن مثل AES-256-GCM أو CHACHA20 يستخدم.
  • لاگ‌ها را مانیتور کنید و از systemd همراه با logrotate برای چرخش لاگ بهره ببرید.

برای محیط‌هایی که نیاز به کمترین تاخیر دارند (تریدرها/گیمرها)، از لوکیشن‌های نزدیک و یا split-tunnel برای مسیر دادن تنها به سرویس‌های مورد نیاز استفاده کنید تا پینگ و پایداری حفظ شود.

 

رفع خطاهای متداول

  • اتصال برقرار نمی‌شود: پورت و پروتکل را در فایروال (ufw/iptables/security group) بررسی کنید.
  • DNS کار نمی‌کند: از update-resolv-conf یا تنظیم دستی /etc/resolv.conf يستخدم.
  • routeها اضافه نمی‌شوند: مطمئن شوید script-security 2 فعال است و اسکریپت‌ها اجرایی (executable) هستند.
  • پس از اتصال اینترنت قطع شد: احتمالاً سرور default route را push کرده؛ از روش‌های بای‌پس یا route-nopull استفاده کنید.

 

مقایسه کاربردها و نکات برای انواع کاربران

  • التجار: نیاز به پینگ و ثبات؛ از لوکیشن‌های نزدیک و در صورت امکان split-tunnel فقط برای اتصال به سرور trading استفاده کنید.
  • اللاعبون: معمولا ترافیک بازی باید کمترین مسیر را داشته باشد؛ full-tunnel می‌تواند پینگ را افزایش دهد، لذا تنها سرور بازی را route کنید یا از سرور نزدیک استفاده کنید.
  • مدیران سایت/DevOps: اجرای OpenVPN client روی سرورها با systemd و استفاده از policy-based routing برای سرویس‌های خاص توصیه می‌شود.
  • الذكاء الاصطناعي/الرسم: برای انتقال داده‌های بزرگ، full-tunnel و سرورهای با bandwidth بالا مناسب‌تر هستند.

 

ملخص واستنتاج

برای اجرای OpenVPN کلاینت روی لینوکس، معمولاً فایل .ovpn به‌علاوه auth-user-pass و در صورت نیاز route-nopull برای split-tunnel کافی است. برای بای‌پس برخی IPها هنگام full-tunnel، gateway قبلی را ذخیره و routeهای مناسب را اضافه کنید. برای رفتارهای پیچیده‌تر از policy-based routing استفاده کنید.

قد يعجبك أيضاً