مقدمه
WireGuard یک رویکرد مدرن به VPNها ارائه میدهد که بر سادگی، سرعت و استفاده از پروتکلهای رمزنگاری قوی تمرکز دارد. اجرای WireGuard در لینوکس راهی قابلاعتماد برای ایمنسازی دسترسی از راه دور، مسیریابی ترافیک از طریق سرور یا اتصال چندین دستگاه در شبکههای غیرامن است. این فرآیند شامل نصب پکیجهای لازم، پیکربندی کلیدها، تنظیم فایلهای کانفیگ سرور و کلاینت و فعالسازی ارتباط امن میان دستگاهها (peers) میباشد.
نصب WireGuard در لینوکس
گام اول: بهروزرسانی فهرست پکیجها و نصب WireGuard
این کار اطمینان میدهد که نسخهی جدید و وابستگیهای لازم برای توزیع شما نصب شدهاند. در سیستمهای مبتنی بر Ubuntu یا Debian، دستور زیر را اجرا کنید:
sudo apt update
sudo apt install wireguard
برای سایر توزیعها از مدیر پکیج مناسب استفاده کنید:
- Fedora:
sudo dnf install wireguard-tools
- Arch Linux:
sudo pacman -S wireguard-tools
- CentOS/RHEL:
به مستندات WireGuard مراجعه کنید برای نصب ماژول کرنل و ابزارها.
پس از نصب، با دستور wg --version
بررسی کنید که نصب موفق بوده است. اگر خروجی دریافت نکردید یا خطا دیدید، بررسی کنید که ماژول کرنل با دستور زیر بارگذاری شده باشد:
sudo modprobe wireguard
تولید کلیدهای سرور و کلاینت
گام دوم:
WireGuard از رمزنگاری نامتقارن استفاده میکند، به این معنا که هر دستگاه باید یک کلید خصوصی و عمومی مجزا داشته باشد. در سرور، ابتدا یک دایرکتوری برای نگهداری کلیدها ایجاد و سپس آنها را تولید کنید:
sudo mkdir -p /etc/wireguard/keys
cd /etc/wireguard/keys
umask 077
wg genkey | tee privatekey | wg pubkey > publickey
دستور umask 077
باعث میشود فقط کاربر root قادر به خواندن این فایلها باشد. همین مراحل را برای هر کلاینت تکرار کنید و کلیدها را بهصورت ایمن ذخیره نمایید. کلید خصوصی در همان دستگاه باقی میماند و کلید عمومی برای اشتراکگذاری با دیگر دستگاهها استفاده میشود.
پیکربندی سرور WireGuard
گام سوم:
یک بازه IP خصوصی برای شبکه VPN خود انتخاب کنید که با شبکه LAN شما تداخل نداشته باشد. گزینههای رایج شامل:۱۰.۰.۰.۰/۸
، ۱۹۲.۱۶۸.۰.۰/۱۶
یا ۱۷۲.۱۶.۰.۰/۱۲
بهعنوان مثال، سرور میتواند آدرس ۱۰.۸.۰.۱/۲۴
داشته باشد.
فایل کانفیگ اصلی را در مسیر /etc/wireguard/wg0.conf
ایجاد کنید:
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey =
SaveConfig = true
# فعالسازی NAT و IP Forwarding
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
eth0
را با نام واقعی اینترفیس شبکه سرور خود جایگزین کنید (با دستور ip route
قابل مشاهده است).
برای امنیت فایل تنظیمات:
sudo chmod 600 /etc/wireguard/wg0.conf
فعالسازی مسیریابی IP و پورت WireGuard
گام چهارم:
برای فعالسازی مسیریابی IPv4، فایل /etc/sysctl.conf
را ویرایش کرده و اطمینان حاصل کنید که خط زیر وجود دارد و کامنت نشده است:
net.ipv4.ip_forward=1
برای اعمال فوری تغییر:
sudo sysctl -p
اگر از IPv6 استفاده میکنید، این خط را نیز اضافه کنید:
net.ipv6.conf.all.forwarding=1
گام پنجم:
پورت UDP مربوط به WireGuard را در فایروال باز کنید. اگر از UFW استفاده میکنید:
sudo ufw allow 51820/udp
sudo ufw disable
sudo ufw enable
افزودن کلاینتها به سرور
گام ششم:
برای هر کلاینت، یک بخش [Peer]
به فایل wg0.conf
سرور اضافه کنید. کلید عمومی کلاینت و یک IP یکتا از بازهی VPN را اختصاص دهید:
[Peer]
PublicKey =
AllowedIPs = 10.8.0.2/32
برای هر کلاینت دیگر، همین روند را با IP جدید تکرار کنید.
پیکربندی کلاینت WireGuard
گام هفتم:
WireGuard را روی کلاینت نصب کنید (مطابق گام اول). سپس یک جفت کلید جدید برای کلاینت تولید نمایید.
گام هشتم:
فایل کانفیگ کلاینت را بسازید (در لینوکس معمولاً در /etc/wireguard/wg0.conf
) یا در اپلیکیشن WireGuard (ویندوز، مک، اندروید، iOS) وارد کنید. مثال:
[Interface]
PrivateKey =
Address = 10.8.0.2/24
DNS = 8.8.8.8
[Peer]
PublicKey =
Endpoint = your.server.ip:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
- اگر میخواهید تمام ترافیک از طریق VPN عبور کند، از
۰.۰.۰.۰/۰
استفاده کنید. - برای تقسیم ترافیک (Split Tunneling)، فقط بازه VPN را وارد نمایید.
PersistentKeepalive
برای اتصال دائمی مفید است (مثلاً وقتی کلاینت پشت NAT است).
کلید عمومی سرور و آدرس آن را بهصورت امن به کلاینت منتقل کنید. در دستگاههای موبایل، میتوانید با استفاده از qrencode
فایل کانفیگ را به کد QR تبدیل کرده و در اپ اسکن کنید:
qrencode -t ansiutf8 -r client.conf
راهاندازی و اتصال به VPN
گام نهم:
در سرور، رابط WireGuard را فعال و راهاندازی کنید:
sudo systemctl start wg-quick@wg0
sudo systemctl enable wg-quick@wg0
در کلاینت:
sudo wg-quick up wg0
برای قطع اتصال:
sudo wg-quick down wg0
برای بررسی وضعیت اتصال:
sudo wg show
در خروجی، باید اطلاعات رابط، کلیدهای عمومی، IPهای مجاز و وضعیت ترافیک/دستدهی (handshake) را ببینید. اگر ترافیکی مشاهده نمیکنید، موارد زیر را بررسی کنید:
- تطابق کلیدهای سرور و کلاینت
- قوانین فایروال
- IPهای نادرست یا تداخل با شبکه داخلی
- عدم اعمال صحیح قوانین PostUp و NAT
- IP داینامیک در سرور (در این صورت از Dynamic DNS استفاده کنید)
نگهداری و عیبیابی
از لاگهای WireGuard برای عیبیابی استفاده کنید:
systemctl status wg-quick@wg0
journalctl -xe
مشکلات رایج:
- تضاد IP با LAN
- بسته بودن پورت UDP 51820
- اشتباه در کلیدها
- عدم تنظیم صحیح NAT
- تغییر IP سرور
برای افزودن کلاینت جدید، کافی است کلید بسازید، یک بخش [Peer] جدید به کانفیگ سرور اضافه کنید و با دستور زیر پیکربندی را بارگذاری کنید:
sudo systemctl reload wg-quick@wg0
یا رابط را ریاستارت کنید.
نکات پیشرفته
WireGuard از IPv6، پیکربندی دوگانه (dual-stack) و چند تونل (با ایجاد فایلهایی مثل wg1.conf) نیز پشتیبانی میکند.
نتیجهگیری
راهاندازی WireGuard در لینوکس، فرآیند امنسازی شبکه را ساده میکند، پیکربندیها را کاهش میدهد و تونلهای VPN سریع و قدرتمندی ارائه میدهد. با مدیریت مناسب کلیدها و تنظیمات مسیریابی، میتوانید بهراحتی دستگاهها را به هم متصل کرده و ترافیک را از طریق سرور دلخواه خود هدایت نمایید.