SSD Nodes Learn Hosting plans →
راهنماها Matt Connorتوسط Matt Connor

نصب اپلیکیشن WireGuard و وارد کردن فایل کانفیگ

اپ رسمی WireGuard را روی اندروید، آیفون، ویندوز و اوبونتو نصب کنید، اصالت فایل نصب را خودتان بررسی کنید و کانفیگ را با QR یا فایل به کلاینت بدهید.

اپ WireGuard را از کجا نصب کنیم

نصب اپ WireGuard روی دستگاه خودتان دو کار جدا دارد: گرفتن اپ از منبعی که بتوانید اصالتش را بررسی کنید، و وارد کردن پروفایلی که فقط مال همان دستگاه است. سرور جای دیگری بالا آمده است. این راهنما فقط سمت کلاینت را پوشش می‌دهد: اندروید، آی‌اواس، ویندوز و دسکتاپ اوبونتو.

یک نکته را از همین ابتدا روشن کنیم. این تونل فقط ترافیک بین دستگاه شما و سروری را که خودتان کنترل می‌کنید رمز می‌کند. از سرور به بعد هیچ محافظت اضافه‌ای وجود ندارد. اگر هنوز سروری ندارید، اول راه‌اندازی سرور WireGuard روی یک VPS را انجام دهید و بعد به این صفحه برگردید.

منبع رسمی اپ روی هر پلتفرم کدام است

صفحهٔ https://www.wireguard.com/install/ فهرست رسمی پروژه است و هر پلتفرم را به منبع خودش می‌فرستد. هر لینک دیگری یک آینه است، یعنی نسخه‌ای که شخص دیگری بازنشر کرده و اصالتش را باید خودتان بررسی کنید.

  • اندروید: Google Play با شناسهٔ بستهٔ com.wireguard.android، یا فایل APK مستقیم از https://download.wireguard.com/android-client/.
  • آی‌اواس: App Store، اپ با نام WireGuard و ناشر WireGuard Development Team.
  • ویندوز: نصب‌کنندهٔ https://download.wireguard.com/windows-client/wireguard-installer.exe، یا دستور winget install -e --id WireGuard.WireGuard.
  • مک‌اواس: App Store.
  • اوبونتو و دبیان: sudo apt install wireguard. فدورا: sudo dnf install wireguard-tools. آرچ: sudo pacman -S wireguard-tools.

در زمان نوشتن این راهنما، سپتامبر ۲۰۲۶، اپ رسمی اندروید در مخزن اصلی F-Droid نیست و آدرس f-droid.org/packages/com.wireguard.android/ پاسخ 404 می‌دهد. دلیل اعلام‌شده سیاست پذیرش F-Droid است: اپی که خودش فایل اجرایی به‌روزرسانی را دانلود می‌کند شرایط پذیرش را ندارد. در F-Droid کلاینت‌های شخص ثالثی مثل WG Tunnel هست که همان پروتکل را حرف می‌زنند، ولی اپ رسمی نیستند و کد و کلید امضایشان مال تیم دیگری است. اگر دنبال همان اپ رسمی هستید، APK مستقیم سایت پروژه منبع درست است.

روی دسکتاپ اوبونتو، بستهٔ wireguard ابزار خط فرمان را می‌آورد و NetworkManager می‌تواند همان فایل کانفیگ را وارد کند:

sudo apt update && sudo apt install -y wireguard
nmcli connection import type wireguard file ~/Downloads/laptop.conf
nmcli connection show

نام اتصال از نام فایل ساخته می‌شود، پس فهرست خروجی دستور آخر را نگاه کنید تا ببینید پروفایل با چه نامی ثبت شده است. NetworkManager قلاب‌های PostUp و PreDown فایل wg-quick را اجرا نمی‌کند، پس اگر کانفیگ شما به آن خط‌ها وابسته است، به جای وارد کردن در NetworkManager فایل را در /etc/wireguard/ بگذارید و با wg-quick بالا بیاورید.

وقتی دسترسی به گوگل‌پلی و اپ‌استور سخت است

بسیاری از خوانندگان این صفحه به Google Play یا App Store دسترسی مستقیم ندارند و اولین چیزی که پیدا می‌کنند فروشگاه‌های داخلی مثل کافه بازار و مایکت است، یا لینک مستقیم APK در یک کانال تلگرام. اسم درست این‌ها آینه است، نه منبع. آینه اپ را از روی کد منبع نمی‌سازد؛ فایلی را پخش می‌کند که کس دیگری آپلود کرده است. پس هیچ‌کدامشان را معتبر فرض نکنید و فایل را خودتان بررسی کنید.

چرا این موضوع برای همین اپ از بقیه مهم‌تر است: کلاینت WireGuard کلید خصوصی دستگاه شما را نگه می‌دارد. یک نسخهٔ دستکاری‌شده که دوباره امضا شده باشد می‌تواند همان کلید و کل کانفیگ را جای دیگری بفرستد، در حالی که رابط کاربری‌اش دقیقاً مثل نسخهٔ اصلی است. اینجا «ظاهرش درست بود» هیچ چیزی را ثابت نمی‌کند، چون امضای دیجیتال چیزی است که با چشم دیده نمی‌شود.

روی آی‌اواس وضعیت سخت‌تر است. سرویس‌های نصب اپ برای آیفون فایل IPA را با گواهی توسعه‌دهنده یا گواهی سازمانی دوباره امضا می‌کنند. آن نسخه دیگر بیلد App Store نیست، شما ابزاری برای مقایسه‌اش با بیلد اصلی ندارید، و هر وقت اپل آن گواهی را باطل کند اپ از کار می‌افتد. برای اپی که کلید خصوصی نگه می‌دارد این راه قابل بررسی نیست. اگر App Store در دسترس نیست، راه قابل بررسی این است که روی اندروید APK رسمی را بعد از بررسی نصب کنید.

چطور بفهمیم فایل APK همان اپ رسمی است

هش فایل و گواهی امضا دو چیزی هستند که مستقیم قابل بررسی‌اند. شناسهٔ بسته بررسی سوم است و از همه ساده‌تر.

برای هش به یک نسخهٔ مرجع نیاز دارید. اگر download.wireguard.com از شبکهٔ شما باز نمی‌شود، همان VPS ی که سرور WireGuard روی آن است می‌تواند فایل را بگیرد و هشش را حساب کند:

curl -fLO https://download.wireguard.com/android-client/com.wireguard.android-1.0.20260315.apk
sha256sum com.wireguard.android-1.0.20260315.apk

نام فایل با هر نسخه عوض می‌شود. در سپتامبر ۲۰۲۶ آخرین فایل آن پوشه نسخهٔ 1.0.20260315 بود، پس اول فهرست پوشه را باز کنید و نام دقیق را بردارید. بعد روی کامپیوتر خودتان همان کار را با فایلی که از آینه گرفته‌اید بکنید و دو رشته را با هم مقایسه کنید:

sha256sum ~/Downloads/wireguard-mirror.apk

اگر دو رشته برابر نبودند، فایل شما همان فایل نیست. روش کار با هش و جاهایی که این بررسی گول‌زننده می‌شود در بررسی صحت فایل‌های دانلودشده با checksum باز شده است.

هش وقتی جواب می‌دهد که دقیقاً همان نسخه را برای مقایسه داشته باشید. اگر آینه نسخهٔ دیگری داده است، گواهی امضا را نگاه کنید. هر APK با یک کلید امضا می‌شود و بازبسته‌بندی کردن آن کلید را عوض می‌کند، حتی اگر محتوای اپ به نظر یکسان بیاید:

sudo apt install -y apksigner
apksigner verify --print-certs --verbose ~/Downloads/wireguard-mirror.apk

در خروجی دنبال خطی بگردید که با Signer #1 certificate SHA-256 digest: شروع می‌شود. همین دستور را روی فایل رسمی هم اجرا کنید و دو مقدار را کنار هم بگذارید. مقدار این خط را از این صفحه یا هیچ صفحهٔ دیگری کپی نکنید؛ مرجع شما باید فایلی باشد که خودتان از منبع رسمی گرفته‌اید. اگر apksigner امضا را نامعتبر گزارش کرد یا به ساختار فایل ایراد گرفت، فایل را دور بیندازید.

شناسهٔ بسته بررسی سوم است. اپ رسمی com.wireguard.android است. اپی با نام نمایشی WireGuard ولی شناسهٔ متفاوت، اپ دیگری است که فقط اسم را قرض گرفته. اگر ADB روی کامپیوتر دارید و اشکال‌زدایی USB روی گوشی فعال است، ببینید چه بسته‌ای واقعاً نصب شده:

sudo apt install -y adb
adb shell pm list packages | grep -i wireguard

روی ویندوز، نصب‌کننده امضای Authenticode دارد. بعد از دانلود، در PowerShell:

Get-FileHash .\wireguard-installer.exe -Algorithm SHA256
Get-AuthenticodeSignature .\wireguard-installer.exe | Format-List Status, SignerCertificate

فیلد Status و نام ناشر داخل گواهی را بخوانید. فایلی که امضای معتبر ندارد یا ناشرش چیز دیگری است نصب نکنید، چون نصب‌کنندهٔ ویندوز با دسترسی مدیر اجرا می‌شود و یک درایور شبکه نصب می‌کند.

چرا هر دستگاه باید کلید خودش را داشته باشد

رایج‌ترین اشتباه این است که یک فایل .conf ساخته می‌شود و همان روی گوشی، تبلت، لپ‌تاپ و گوشی یک نفر دیگر کپی می‌شود. این کار از نظر فنی هم خراب است، نه فقط از نظر امنیتی.

سرور برای هر peer یک endpoint نگه می‌دارد، یعنی آخرین آدرس و پورتی که از آن یک دست‌دهی موفق آمده است. وقتی دو دستگاه با یک کلید همزمان وصل باشند، دست‌دهی دستگاه دوم آن endpoint را بازنویسی می‌کند و بسته‌های برگشتی دیگر به دستگاه اول نمی‌روند. هیچ خطایی هم چاپ نمی‌شود، چون از دید سرور فقط یک peer وجود دارد که آدرسش عوض شده. کاربر اول فقط می‌بیند که ارتباط بی‌دلیل قطع و وصل می‌شود.

دلیل دوم ابطال دسترسی است. با کلید مشترک، بستن دسترسی یک گوشی گم‌شده یعنی بستن دسترسی همه و ساختن دوبارهٔ همهٔ پروفایل‌ها. با یک peer به ازای هر دستگاه، حذف یک بلوک [Peer] کافی است و بقیه وصل می‌مانند. اضافه و کم کردن peer بدون قطع کردن تونل دیگران روش خودش را دارد که در اضافه کردن peer جدید بدون ری‌استارت کردن تونل آمده است.

پس قاعده ساده است: هر دستگاه یک جفت کلید مخصوص خودش، یک آدرس /32 مخصوص خودش در شبکهٔ تونل، و یک بلوک [Peer] جدا روی سرور. اگر کلید خصوصی را روی سرور ساخته‌اید، بعد از رساندن آن به دستگاه نسخهٔ روی سرور را پاک کنید.

رساندن کانفیگ به گوشی: QR یا فایل

اپ اندروید و آی‌اواس هر دو می‌توانند پروفایل را از کد QR بخوانند. این بهترین راه است، چون فایلی که کلید خصوصی دارد هیچ‌وقت به شکل فایل از سرور بیرون نمی‌آید.

اگر پنل wg-easy برای مدیریت WireGuard با داکر را بالا آورده‌اید، برای هر کلاینت یک دکمهٔ QR دارد و کار تمام است. اگر کانفیگ‌ها را دستی می‌سازید، روی سرور این را اجرا کنید:

sudo apt install -y qrencode
sudo qrencode -t ansiutf8 < /etc/wireguard/clients/phone.conf

کد در همان ترمینال کشیده می‌شود. در اپ گزینهٔ افزودن تونل با اسکن QR را بزنید و دوربین را روبه‌روی صفحه بگیرید. اگر کد به هم ریخته نشان داده شد، اندازهٔ فونت ترمینال را کم کنید تا کل مربع جا شود، یا -t utf8 را امتحان کنید.

برای دسکتاپ که دوربین ندارد، فایل را منتقل می‌کنید. فایل .conf کلید خصوصی را به صورت متن ساده نگه می‌دارد، پس آن را در پیام‌رسان، ایمیل یا فضای ابری نفرستید؛ هر کسی که آن متن را داشته باشد می‌تواند خودش را همان دستگاه جا بزند و تفاوتش با دستگاه اصلی از دید سرور معلوم نیست. از scp استفاده کنید و بعد از وارد کردن در اپ، فایل را از دیسک پاک کنید:

scp user@your-server:/etc/wireguard/clients/laptop.conf ~/Downloads/
shred -u ~/Downloads/laptop.conf

هر فیلد پروفایل کلاینت یعنی چه

پروفایلی که وارد می‌کنید چیزی شبیه این است:

[Interface]
PrivateKey = <کلید خصوصی همین دستگاه>
Address = 10.8.0.3/32
DNS = 10.8.0.1
MTU = 1420

[Peer]
PublicKey = <کلید عمومی سرور>
PresharedKey = <اختیاری>
Endpoint = vpn.example.com:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25

PrivateKey کلید همین دستگاه است و نباید نسخهٔ دیگری از آن جایی وجود داشته باشد. Address آدرس این دستگاه داخل تونل است و روی کلاینت /32 می‌گیرد، یعنی فقط همین یک آدرس.

AllowedIPs مهم‌ترین و بدفهم‌ترین فیلد است، چون دو کار همزمان می‌کند. در جهت خروج، جدول مسیریابی است: هر بسته‌ای که مقصدش با این فهرست بخواند رمز و به این peer فرستاده می‌شود. مقدار 0.0.0.0/0, ::/0 یعنی تونل کامل و همهٔ ترافیک از سرور بیرون می‌رود. فهرست محدودتر مثل AllowedIPs = 10.8.0.0/24, 10.20.0.0/16 یعنی تونل تقسیم‌شده: فقط همان شبکه‌ها از تونل می‌روند و بقیهٔ ترافیک مسیر عادی خودش را نگه می‌دارد. در جهت ورود، همین فیلد فهرست کنترل دسترسی است و بسته‌ای که آدرس مبدأش بیرون این فهرست باشد دور ریخته می‌شود. منطق کامل این دوگانگی در مسیریابی مبتنی بر کلید در WireGuard باز شده است.

DNS نام‌سروری است که کلاینت داخل تونل استفاده می‌کند. اگر این خط نباشد و تونل کامل باشد، دستگاه همان resolver شبکهٔ محلی را نگه می‌دارد، چون مسیر شبکهٔ محلی از مسیر پیش‌فرض دقیق‌تر است؛ در نتیجه پرس‌وجوهای DNS بیرون تونل و بدون رمز می‌روند. ترافیک خصوصی می‌ماند ولی فهرست دامنه‌ها نه. اگر نام‌ها اصلاً باز نشدند، رفع مشکل DNS روی تونل WireGuard همین حالت را قدم به قدم دنبال کرده است.

Endpoint آدرس و پورت UDP سرور است و باید از شبکهٔ دستگاه قابل دسترسی باشد. PersistentKeepalive = 25 برای دستگاهی است که پشت NAT قرار دارد، مثل گوشی روی اینترنت همراه، و نگاشت UDP روتر را باز نگه می‌دارد تا سرور بتواند اول ارتباط بگیرد. روی سروری که IP عمومی دارد لازم نیست.

MTU را اگر ننویسید WireGuard خودش حساب می‌کند. اگر پینگ و SSH درست کار کردند ولی بعضی صفحه‌های HTTPS نیمه‌باز ماندند، علتش معمولاً اندازهٔ بسته است و مقدارهای کمتر مثل 1380 و 1280 را امتحان کنید. روش پیدا کردن عدد درست به جای حدس زدن در کندی WireGuard و پیدا کردن MTU درست آمده است.

از کجا بفهمیم تونل واقعاً بالا آمده است

اپ رسمی اندروید، آی‌اواس و ویندوز هر کدام در صفحهٔ همان تونل دو چیز را نشان می‌دهند: آخرین دست‌دهی با برچسب Latest handshake و شمارندهٔ انتقال با برچسب Transfer به تفکیک دریافت و ارسال. اعداد خودتان را روی دستگاه خودتان بخوانید و چند ثانیه بعد دوباره نگاه کنید تا ببینید تغییر می‌کنند یا نه.

سه حالت را از هم جدا کنید. اگر هیچ خط دست‌دهی ظاهر نمی‌شود، بسته‌ای به سرور نمی‌رسد یا پذیرفته نمی‌شود؛ پورت UDP را روی فایروال خود سرور و روی فایروال شبکهٔ ارائه‌دهنده که کنترل جدایی است بررسی کنید، بعد درستی Endpoint و اینکه کلیدها جابه‌جا وارد نشده باشند. اگر دست‌دهی ثبت می‌شود ولی عدد دریافتی بالا نمی‌رود، مسیر برگشت روی سرور مشکل دارد، یعنی forwarding یا NAT. اگر هر دو عدد بالا می‌روند ولی سایت‌ها باز نمی‌شوند، مشکل DNS است.

روی لینوکس همان وضعیت را از خط فرمان ببینید:

sudo wg show

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

این تونل از چه چیزی محافظت می‌کند و از چه چیزی نه

بین دستگاه شما و سرور، بسته‌ها رمز شده‌اند. شبکهٔ محلی، مودم و ارائه‌دهندهٔ اینترنت فقط می‌بینند که حجمی از ترافیک UDP بین شما و یک آدرس رد و بدل می‌شود. از سرور به بعد هیچ چیز اضافه‌ای وجود ندارد: ترافیک با IP سرور وارد اینترنت می‌شود و سایت مقصد همان را می‌بیند. اگر سایت HTTPS باشد محتوا رمز است، چون TLS (امنیت لایهٔ انتقال) کار خودش را می‌کند، نه چون تونل روشن است.

اپراتور سرور همه چیز را می‌بیند. در این معماری اپراتور خودتان هستید، که خوب است، ولی یعنی امنیت این تونل از امنیت همان VPS بیشتر نمی‌شود. کسی که به سرور دسترسی مدیر پیدا کند، هم ترافیک عبوری را می‌بیند و هم فایل /etc/wireguard را.

این تونل ناشناسی نمی‌آورد. حساب‌های کاربری، کوکی‌ها و ورودهای شما همان‌طور شما را می‌شناسند. چیزی که عوض می‌شود آدرس IP و دید ناظر شبکهٔ محلی است. و در آخر، فایل کانفیگ روی دستگاه یک اعتبارنامه است: قفل صفحه و رمزگذاری دیسک دستگاه بخشی از همین امنیت است، چون کسی که گوشی باز شما را در دست بگیرد به پروفایل هم می‌رسد.

FAQ

آیا نصب اپ WireGuard از کافه بازار یا مایکت امن است؟

این فروشگاه‌ها آینه‌اند، نه منبع. آن‌ها اپ را از کد منبع نمی‌سازند و فایلی را پخش می‌کنند که کس دیگری آپلود کرده است. پس به جای اعتماد، بررسی کنید: هش SHA-256 فایل را با نسخه‌ای که از download.wireguard.com/android-client/ گرفته‌اید مقایسه کنید، گواهی امضا را با apksigner verify --print-certs کنار هم بگذارید، و ببینید شناسهٔ بسته com.wireguard.android است یا چیز دیگری. اگر هیچ‌کدام از این بررسی‌ها را نمی‌توانید انجام دهید، آن فایل را نصب نکنید، چون کلاینت WireGuard کلید خصوصی شما را نگه می‌دارد و یک نسخهٔ دوباره امضا شده می‌تواند آن را بفرستد.

چرا اپ رسمی WireGuard در F-Droid پیدا نمی‌شود؟

در سپتامبر ۲۰۲۶ صفحهٔ com.wireguard.android روی f-droid.org وجود ندارد و آدرسش 404 می‌دهد. دلیل اعلام‌شده سیاست پذیرش F-Droid است: اپی که خودش فایل اجرایی به‌روزرسانی را دانلود می‌کند شرایط پذیرش را ندارد. کلاینت‌های شخص ثالثی مثل WG Tunnel در F-Droid هستند و همان پروتکل را حرف می‌زنند، ولی اپ رسمی نیستند. برای نسخهٔ رسمی، APK مستقیم سایت پروژه یا Google Play منبع درست است.

همان فایل کانفیگ را می‌توانم روی گوشی و لپ‌تاپ هر دو بگذارم؟

نگذارید. سرور برای هر peer فقط یک endpoint نگه می‌دارد، پس وقتی دستگاه دوم دست‌دهی می‌کند آدرس دستگاه اول بازنویسی می‌شود و ترافیک برگشتی دیگر به آن نمی‌رسد، بدون اینکه هیچ پیام خطایی جایی چاپ شود. ابطال دسترسی هم گره می‌خورد، چون بستن یک دستگاه یعنی بستن همه. برای هر دستگاه یک جفت کلید جدا، یک آدرس /32 جدا و یک بلوک [Peer] جدا بسازید.

امن‌ترین راه رساندن کانفیگ به گوشی چیست؟

کد QR، چون فایل هیچ‌وقت به شکل فایل از سرور بیرون نمی‌آید. اگر پنل wg-easy دارید از دکمهٔ QR همان کلاینت استفاده کنید، وگرنه روی سرور qrencode -t ansiutf8 < client.conf را اجرا کنید و کد را با خود اپ اسکن کنید. اگر مجبورید فایل بفرستید، scp را به کار ببرید و بعد از وارد کردن در اپ فایل را پاک کنید. پیام‌رسان، ایمیل و فضای ابری برای فایلی که کلید خصوصی را به صورت متن ساده دارد مناسب نیستند.