چرا VPN خودتان را اجرا کنید
یک VPN تجاری از شما میخواهد به ادعای بدونلاگ یک شرکت در میان هزاران کاربری که چند IP خروجی محدود را به اشتراک میگذارند اعتماد کنید. خودمیزبانی WireGuard روی یک VPS برونمرزی این مدل اعتماد را وارونه میکند: شما کلیدها را در دست دارید، سیاست لاگگیری را تعیین میکنید، و تنها فرادادهای که وجود دارد همان فرادادهای است که شما انتخاب میکنید نگه دارید. برای برخی مدلهای تهدید این معامله درست است — شما دیگر به متن بازاریابی اعتماد نمیکنید و به پیکربندی خودتان بهعلاوه حوزه قضاییای که سرور در آن قرار دارد اعتماد میکنید.
WireGuard انتخاب مدرن برای این کار است. چند هزار خط کد کرنلِ ممیزیشده با یک سطح حمله کوچک در کنار OpenVPN یا IPsec است، و رمزنگاری مدرنِ ثابت عرضه میکند — Curve25519، ChaCha20-Poly1305، BLAKE2s — پس هیچ مجموعه رمزی برای پیکربندی غلط به چیزی ضعیف وجود ندارد. دستدهیها سریعاند، جابهجایی میان Wi-Fi و موبایل بیدرز است، و یک تونل بیکار تقریباً هیچ هزینهای ندارد. روی یک VPS برونمرزی یک خروجی اختصاصی در حوزه قضاییای که از میان 6 منطقه انتخاب میکنید به دست میآورید، آنلاین در حدود 15 min، با کاهش L3/4 برابر 1.5 Tbps و یک پورت بدون محدودیت ترافیک که در هر پلن استاندارد است.
SP·02یک تونل خودمیزبان چه چیزی را پنهان میکند — و چه چیزی را نه
پیش از ساختنش درباره مدل صادق باشید. یک تونل خودمیزبان همهچیز را میان دستگاه شما و VPS رمزگذاری میکند، آن را از شبکه محلی و ISP شما پنهان میکند، و IP خانگی شما را برای هرچه که از طریق آن مسیریابی کنید با IP مربوط به VPS جایگزین میکند. این روی Wi-Fi خصمانه، برای دسترسی به سرویسهای خودتان پشت یک آدرس پایدار، یا برای دور نگه داشتن ISP دسترسی شما از مرور وبتان، واقعاً مفید است.
کاری که انجام نمیدهد این است که شما را ناشناس کند. IP خروجی تنها مال خودتان است — جمعیتی از کاربران دیگر برای ادغام شدن در آن وجود ندارد، پس هرکس که بتواند هر دو سرِ اتصال را همبسته کند، یا که حکمی الزامآور علیه میزبان به دست آورد، میتواند آن آدرس را به حساب شما نسبت دهد. در سمت میزبان، موضع ثابت است: اخطارهای DMCA پردازش یا پاسخ داده نمیشوند — DMCA قانونی آمریکایی است که در حوزههای قضایی ما هیچ اعتباری ندارد، و ما تنها بر اساس یک حکم الزامآور از دادگاهی که بر سرور مشخص صلاحیت دارد عمل میکنیم. این شما را از رباتهای حذف خودکار محافظت میکند؛ اما یک VPN تککاربره را به ابزار ناشناسی تبدیل نمیکند. اگر دشمن شما یک ناظر منفعل جهانی است، بهجای آن سراغ Tor بروید. یک تونل خودمیزبان ابزار محرمانگی و کنترل است، نه یک ردا.
SP·03ابتدا مکان و پلن را انتخاب کنید
یک VPN شخصی محدود به پهنای باند است، نه محدود به CPU، پس کوچکترین پلن کافی است — VPS مدل Drift با $8.00/ماه پورت خود را اشباع خواهد کرد خیلی پیش از آنکه vCPU به زحمت بیفتد. بودجه تصمیمگیری خود را بهجای آن صرف اینکه کجا کنید. وقتی تأخیر برای استفاده تعاملی مهم است سرور را نزدیک خودتان قرار دهید، یا وقتی فاصله حقوقی بیش از زمان رفتوبرگشت مهم است دور از خودتان.
رومانی و هلند با نرخ پایه صورتحساب میشوند و بهترین اتصالپذیری اروپایی را دارند؛ سوئیس، ایسلند، مالزی و پاناما یک ضریب منطقهای را اعمال میکنند که زنده در پیکربندیگر نمایش داده میشود. مالزی انتخاب آسیا-اقیانوسیه است؛ پاناما و ایسلند بیشترین تمایل را به سمت فاصله قضایی دارند. اگر مطمئن نیستید، راهنمای همراه کدام مکان برونمرزی را باید انتخاب کنید؟ مزایا و معایب را منطقه به منطقه بررسی میکند. هرکدام را که انتخاب کنید، موجودی خود را از $30.00 با ارز دیجیتال شارژ کنید و مستقر کنید — هیچ بررسی هویتی نیست و هیچ کارتی در پرونده نیست.
SP·04چطور قطعات کنار هم جای میگیرند
WireGuard یک VPN را بهصورت مجموعهای از همتایان مدلسازی میکند که هرکدام با یک کلید عمومی شناسایی میشوند و روی یک رابط مجازی (اینجا wg0) با هم صحبت میکنند. سرور یک زیرشبکه خصوصی میگیرد — مثلاً 10.66.0.0/24 بهعلاوه یک ULA مربوط به IPv6 — و هر کلاینت یک آدرس درون آن میگیرد. بلوک [Interface] سرور کلید خصوصی و پورت گوشدادن آن را نگه میدارد؛ هر کلاینت یک بلوک [Peer] است که کلید عمومی آن کلاینت و آدرسهایی را که مجاز به استفاده از آنهاست حمل میکند.
در سمت کلاینت، AllowedIPs = 0.0.0.0/0, ::/0 همان چیزی است که این را به یک VPN تونل کامل تبدیل میکند: به کلاینت میگوید که تمام ترافیک را از طریق wg0 مسیریابی کند. سرور سپس آن ترافیک را با یک قاعده masquerade از رابط شبکه واقعی خود NAT میکند، که به همین دلیل است که هدایت IP باید در کرنل فعال شود. PersistentKeepalive = 25 مسیر را در میان فایروالهای حالتمند و NAT اپراتور باز نگه میدارد. DNS را روی کلاینت به یک حلکنندهای که به آن اعتماد دارید تنظیم کنید تا جستوجوها درون تونل سفر کنند نه اینکه به شبکه محلی شما نشت کنند. خودِ WireGuard بدون اتصال است — هیچ نشست طولانیمدتی برای قطع شدن وجود ندارد، پس پیوند از خواب رفتن یک لپتاپ یا یک گوشی که از Wi-Fi به موبایل جابهجا میشود بدون هیچ رقص اتصال مجدد جان سالم به در میبرد. اگر یک مسیر MTU ناجوری دارد و بستههای بزرگ متوقف میشوند، کاهش MTU رابط کلاینت به حدود ۱۳۸۰ معمولاً آن را برطرف میکند. این چهار ایده را دریافت کنید — رابط، همتایان، AllowedIPs، masquerade — و پیکربندی زیر مانند نثر خوانده میشود.
همانجا که هستید سرور را مقاوم کنید
یک نقطهی پایانی VPN ارزش محکمکاری را دارد. SSH را به احراز هویت فقط با کلید منتقل کنید و ورود با گذرواژه و ورود root را در /etc/ssh/sshd_config غیرفعال کنید (PasswordAuthentication no، PermitRootLogin prohibit-password)، سپس sshd را دوباره بارگذاری کنید. فایروال را بهصورت پیشفرض رد (default-deny) نگه دارید: تنها پورتهای ورودی که یک دستگاه WireGuard نیاز دارد SSH و UDP 51820 هستند. باقی همهچیز بسته میماند.
فایلهای کلید WireGuard را روی 0600 نگه دارید — دستور umask 077 در مراحل زیر همین کار را انجام میدهد — و هرگز یک کلید خصوصی را از روی میزبانی که به آن تعلق دارد کپی نکنید. بهروزرسانیهای امنیتی بدون نظارت را روشن کنید تا کرنل و بستهی wireguard بدون نیاز به مراقبت دائمی وصلهگذاری شده بمانند. بهمحض بالا آمدن تونل، نشت DNS را آزمایش کنید — جستوجویی که از طریق resolver انتخابی شما حل شود، نه از طریق ISP دسترسی شما، تأیید میکند که پرسوجوها واقعاً درون wg0 باقی میمانند. اگر بعداً سرویسهای دیگری را در معرض دید قرار دادید، بهجای گشاد کردن فایروال، fail2ban و قواعد مخصوص هر سرویس را اضافه کنید. هیچکدام از اینها به میزبان وابسته نیست: VPS مال شماست، root مال شماست، و تعهد آپتایم 99.9% دستگاه را در دسترس نگه میدارد تا تونل شما بالا بماند.
دستگاههای بیشتری اضافه کنید و آن را در حال اجرا نگه دارید
هر دستگاهی که متصل میشود به جفتکلید خودش و بلوک [Peer] مخصوص خودش روی سرور نیاز دارد، هرکدام با یک آدرس منحصربهفرد درون زیرشبکه — استفادهی مجدد از یک جفتکلید بین لپتاپ و گوشی، رومینگ را خراب میکند و هر عیبیابی را گلآلود میکند. یک جفت تازهی client2.key/client2.pub بسازید، یک peer اضافه کنید، و یا رابط را با wg syncconf wg0 <(wg-quick strip wg0) دوباره بارگذاری کنید یا آن را با systemctl restart wg-quick@wg0 از نو راهاندازی کنید.
برای گوشیها، کپیکردن فایل را بهکلی رها کنید: پیکربندی کلاینت را روی سرور بهصورت یک کد QR با qrencode -t ansiutf8 < client.conf رندر کنید و آن را مستقیماً درون اپلیکیشن رسمی WireGuard اسکن کنید. برای دیدن اینکه چه کسی متصل است و هر peer آخرین بار چه زمانی دستداد (handshake) کرده، wg show را اجرا کنید — این کل داستان نظارت برای یک استقرار شخصی است. اسنپشاتها پیش از ارتقای کرنل، یک بازگشت تمیز را در اختیار شما میگذارند اگر روزی یک نسخهی جدید بدرفتاری کرد.
چه زمانی یک VPN تجاری یا Tor ابزار بهتری است
میزبانی شخصی همیشه پاسخ نیست، و وانمود به خلافش غیرصادقانه خواهد بود. اگر هدف شما ناپدید شدن در میان جمعیت است، یک VPN چندکاربرهی معتبر به شما IPهای خروجی مشترکی میدهد که افراد زیادی همزمان از آن استفاده میکنند — یک تونل تکمستأجره نمیتواند آن را ارائه دهد. اگر نیاز دارید که بنا به تقاضا بین کشورهای خروجی جابهجا شوید، یک سرویس تجاری با اپلیکیشن کلیککن-برای-تعویض صرفاً راحتتر از راهاندازی دستگاههاست. و اگر به ناشناسی واقعی در برابر دشمنی با منابع فراوان نیاز دارید، مسیریابی پیازی Tor دقیقاً برای همان مسئلهی همبستگیای طراحی شده که یک VPN میزبانیشدهی شخصی نمیتواند حل کند.
جایی که میزبانی شخصی برنده میشود، کنترل و محرمانگی است: شما به سیاست لاگگیری هیچکس دیگری اعتماد نمیکنید، یک IP اختصاصی پایدار برای مدیریت و فهرستهای مجاز به دست میآورید، و حوزهی قضایی را خودتان تعیین میکنید. بسیاری از مردم هر دو را اجرا میکنند — یک تونل میزبانیشدهی شخصی برای محرمانگی روزمره و Tor برای آن کار نادری که ناشناسی را میطلبد. ابزاری را انتخاب کنید که با تهدید مطابقت دارد، نه آنکه بهترین صفحهی فرود را دارد.
SP·08گامبهگام
-
01
VPS را مستقر کنید و WireGuard را نصب کنید
یک VPS با Debian 13 یا Ubuntu 24.04 مستقر کنید، با SSH بهعنوان root وارد شوید، سپس دو بستهای را که نیاز دارید بهروزرسانی و نصب کنید.
apt update && apt full-upgrade -y apt install -y wireguard qrencode
-
02
فعالسازی IP forwarding
یک VPN تمامتونل، ترافیک کلاینت را از رابط سرور بیرون میفرستد، بنابراین کرنل باید forwarding را برای IPv4 و IPv6 مجاز کند.
cat > /etc/sysctl.d/99-wg.conf <<'EOF' net.ipv4.ip_forward=1 net.ipv6.conf.all.forwarding=1 EOF sysctl --system
-
03
کلیدهای سرور را تولید کنید
در
/etc/wireguardبا یک umask سختگیرانه کار کنید تا هر فایل کلید روی0600قرار بگیرد.cd /etc/wireguard umask 077 wg genkey | tee server.key | wg pubkey > server.pub
-
04
یک جفتکلید کلاینت تولید کنید
هر دستگاه جفتکلید خودش را میگیرد. اولین را همین حالا بسازید.
wg genkey | tee client.key | wg pubkey > client.pub
-
05
پیکربندی سرور را بنویسید
رابط شبکهی واقعی خود را با
ip route get 1.1.1.1پیدا کنید و اگر متفاوت بودeth0را در پایین جایگزین کنید (اغلبenp1s0است). فراخوانیهای$(cat ...)کلیدهایی را که همین الان ساختید بهصورت درونخطی قرار میدهند.cat > /etc/wireguard/wg0.conf <<EOF [Interface] Address = 10.66.0.1/24, fd86:ea04:1115::1/64 ListenPort = 51820 PrivateKey = $(cat server.key) PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE [Peer] PublicKey = $(cat client.pub) AllowedIPs = 10.66.0.2/32, fd86:ea04:1115::2/128 EOF
-
06
پیکربندی کلاینت را بنویسید
فایل
client.confرا در همان دایرکتوری بسازید. محتوایclient.keyوserver.pubرا در جای نشاندادهشده بچسبانید، وEndpointرا روی IP عمومی سرور خود تنظیم کنید.AllowedIPs = 0.0.0.0/0, ::/0همهچیز را از طریق تونل مسیریابی میکند.[Interface] PrivateKey = <paste client.key> Address = 10.66.0.2/32, fd86:ea04:1115::2/128 DNS = 9.9.9.9 [Peer] PublicKey = <paste server.pub> Endpoint = YOUR_SERVER_IP:51820 AllowedIPs = 0.0.0.0/0, ::/0 PersistentKeepalive = 25
-
07
فایروال را باز کنید
به SSH و پورت UDP مربوط به WireGuard اجازه دهید، سپس
ufwرا فعال کنید. وضعیت رد پیشفرض را برای باقی همهچیز نگه دارید.ufw allow OpenSSH ufw allow 51820/udp ufw enable
-
08
تونل را بالا بیاورید
رابط را فعال کنید تا از راهاندازیهای مجدد جان سالم به در ببرد، سپس peerها و دستدادنها (handshakes) را تأیید کنید.
systemctl enable --now wg-quick@wg0 wg show
-
09
یک گوشی را با کد QR متصل کنید
پیکربندی کلاینت را بهصورت یک کد قابلاسکن رندر کنید و آن را درون اپلیکیشن موبایل WireGuard وارد کنید — هیچ انتقال فایلی لازم نیست.
qrencode -t ansiutf8 < client.conf

