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

وایرگارد روی روتر OpenWrt: کل خانه از طریق VPS شما

روتر OpenWrt 25.12 را کلاینت وایرگارد سرور VPS خودتان کنید تا گوشی و تلویزیون هوشمند بدون نصب اپ از تونل رد شوند، همراه با بستن نشت DNS و راه بررسی هر مرحله.

وایرگارد روی روتر OpenWrt یعنی یک تونل برای همه‌ی خانه

اگر وایرگارد (WireGuard) را روی روتر OpenWrt نصب کنید و روتر را کلاینت سرور VPS خودتان کنید، همه‌ی دستگاه‌های خانه از همان یک تونل رد می‌شوند. گوشی‌ها، تلویزیون هوشمند، کنسول بازی و لپ‌تاپ مهمان دیگر به اپ وایرگارد نیاز ندارند، چون روتر رمزنگاری را به جای آن‌ها انجام می‌دهد. این راهنما برای OpenWrt 25.12 نوشته شده است و هر مرحله را هم با دستورهای UCI و هم با مسیر LuCI نشان می‌دهد.

فرض ما این است که سرور وایرگارد روی VPS شما آماده است. اگر هنوز آماده نیست، اول راه‌اندازی سرور وایرگارد روی VPS را انجام بدهید. آدرس‌های این راهنما با همان آموزش یکی است: سرور داخل تونل آدرس 10.8.0.1 دارد و شبکه‌ی تونل 10.8.0.0/24 است.

اگر روتر شما MikroTik است، این راهنما به کار شما نمی‌آید. برای RouterOS یک آموزش جداگانه در همین سایت داریم و این دو راهنما فقط بر اساس نوع روتر از هم جدا می‌شوند.

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

وایرگارد ترافیک را رمز می‌کند، اما آن را پنهان نمی‌کند. پیام اول هندشیک (handshake، یعنی تبادل اولیه‌ی کلیدها) همیشه اندازه و ساختار ثابتی دارد. بنابراین شبکه‌ای که بسته‌ها را با DPI (deep packet inspection، یعنی بازرسی عمیق بسته) بررسی می‌کند، می‌تواند وایرگارد را تشخیص بدهد و مسدود کند.

نتیجه‌ی عملی این است: اگر روی اینترنت شما هندشیک هیچ‌وقت کامل نمی‌شود و پورت سرور هم باز است، هیچ تنظیمی روی روتر مشکل را حل نمی‌کند. راه‌حل یک پروتکل انتقال دیگر است، نه یک گزینه‌ی دیگر در OpenWrt. برای انتخاب آن، راهنمای وقتی VPN شما مسدود شده چه چیزی اجرا کنید را بخوانید. بخش عیب‌یابی همین راهنما نشان می‌دهد چطور مسدود شدن را از اشتباه در تنظیمات جدا کنید.

نکته‌ی دوم درباره‌ی خود سرور است. تونل ترافیک خانه را از دید ISP (ارائه‌دهنده‌ی اینترنت) پنهان می‌کند، نه از دید VPS. همه‌ی ترافیک از VPS به اینترنت می‌رود، پس هر کسی که سرور را کنترل کند مقصدها را می‌بیند. به همین دلیل سرور باید مال خودتان باشد.

نسخه‌ی OpenWrt و مدیر بسته: apk به جای opkg

نسخه‌ی 25.12.0 در اسفند ۱۴۰۴ (مارس ۲۰۲۶) منتشر شد. در این نسخه مدیر بسته از opkg به apk تغییر کرد و دستورها هم عوض شدند. این راهنما تا مهر ۱۴۰۵ (اکتبر ۲۰۲۶) با شاخه‌ی 25.12 بررسی شده است. نسخه‌ی روتر خود را با این دستور ببینید و به خط DISTRIB_RELEASE نگاه کنید:

cat /etc/openwrt_release

روی OpenWrt 25.12 بسته را این‌طور نصب کنید:

apk update
apk add luci-proto-wireguard

روی OpenWrt 24.10 همان کار با opkg انجام می‌شود:

opkg update
opkg install luci-proto-wireguard

ویکی OpenWrt در راهنمای کلاینت فقط بسته‌ی wireguard-tools را نام می‌برد. ما بسته‌ی luci-proto-wireguard را نصب می‌کنیم، چون در 25.12 به wireguard-tools وابسته است و wireguard-tools هم به kmod-wireguard وابسته است. پس این یک دستور ماژول کرنل و ابزار wg را همراه با صفحه‌ی وایرگارد در LuCI نصب می‌کند. اگر از LuCI استفاده نمی‌کنید، apk add wireguard-tools کافی است.

بعد از نصب، شبکه را یک بار راه‌اندازی مجدد کنید. netifd (سرویسی که رابط‌های شبکه را در OpenWrt می‌سازد) پروتکل‌ها را هنگام شروع می‌خواند، پس تا آن را دوباره اجرا نکنید پروتکل WireGuard را نمی‌شناسد.

service network restart
apk info | grep wireguard

در خروجی دستور دوم باید هر سه بسته را ببینید: kmod-wireguard، wireguard-tools و luci-proto-wireguard. اتصال SSH شما ممکن است هنگام راه‌اندازی مجدد شبکه برای چند ثانیه قطع شود. دوباره وصل شوید و ادامه بدهید.

ساختن کلید روتر

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

cd /root
umask go=
wg genkey | tee wgclient.key | wg pubkey > wgclient.pub
cat wgclient.pub

دستور umask go= باعث می‌شود فایل‌های بعدی فقط برای root خواندنی باشند. بدون آن، فایل کلید خصوصی با دسترسی پیش‌فرض ساخته می‌شود. خروجی cat wgclient.pub را کپی کنید. در مرحله‌ی بعد آن را روی سرور می‌گذارید.

کلید عمومی سرور را هم روی VPS بخوانید:

sudo cat /etc/wireguard/server.pub

معرفی روتر به سرور VPS

روی VPS یک بلوک [Peer] به انتهای /etc/wireguard/wg0.conf اضافه کنید. آدرس 10.8.0.3 را انتخاب کردیم، چون 10.8.0.2 در آموزش سرور به لپ‌تاپ رسیده است. هر آدرس آزاد دیگری در 10.8.0.0/24 هم درست است.

[Peer]
PublicKey = <router public key from wgclient.pub>
AllowedIPs = 10.8.0.3/32

بعد این peer را بدون قطع کردن کاربران فعلی بارگذاری کنید:

sudo bash -c 'wg syncconf wg0 <(wg-quick strip wg0)'
sudo wg show wg0 peers

کلید عمومی روتر باید در فهرست peerها دیده شود. جزئیات این روش در اضافه کردن peer به وایرگارد بدون راه‌اندازی مجدد آمده است.

چرا فقط یک آدرس /32 برای کل خانه کافی است؟ چون روتر همه‌ی دستگاه‌های خانه را پشت NAT (network address translation، یعنی ترجمه‌ی آدرس شبکه) می‌برد. هر بسته‌ای که از گوشی یا تلویزیون وارد تونل می‌شود، با آدرس مبدأ 10.8.0.3 به سرور می‌رسد. سرور فقط همین یک آدرس را می‌بیند، پس نیازی به مسیری به سمت 192.168.1.0/24 خانه‌ی شما ندارد. اگر می‌خواهید خود VPS هم به دستگاه‌های خانه دسترسی داشته باشد، آن یک پیکربندی دیگر است که در مسیریابی وایرگارد به شبکه‌ی خانگی توضیح داده‌ایم.

پیکربندی رابط وایرگارد در OpenWrt با UCI

این دستورها را روی روتر اجرا کنید. اول متغیرها را با مقدارهای خودتان پر کنید. VPN_SERV آدرس IP عمومی VPS است و VPN_PUB کلید عمومی سرور است که در مرحله‌ی قبل خواندید.

VPN_IF="vpn"
VPN_SERV="203.0.113.10"
VPN_PORT="51820"
VPN_ADDR="10.8.0.3/24"
VPN_KEY="$(cat /root/wgclient.key)"
VPN_PUB="SERVER_PUBLIC_KEY"

حالا رابط و peer را بسازید:

uci -q delete network.${VPN_IF}
uci set network.${VPN_IF}="interface"
uci set network.${VPN_IF}.proto="wireguard"
uci set network.${VPN_IF}.private_key="${VPN_KEY}"
uci add_list network.${VPN_IF}.addresses="${VPN_ADDR}"
uci -q delete network.wgserver
uci set network.wgserver="wireguard_${VPN_IF}"
uci set network.wgserver.public_key="${VPN_PUB}"
uci set network.wgserver.endpoint_host="${VPN_SERV}"
uci set network.wgserver.endpoint_port="${VPN_PORT}"
uci set network.wgserver.persistent_keepalive="25"
uci set network.wgserver.route_allowed_ips="1"
uci add_list network.wgserver.allowed_ips="0.0.0.0/1"
uci add_list network.wgserver.allowed_ips="128.0.0.0/1"
uci commit network

هنوز شبکه را راه‌اندازی مجدد نکنید. اول فایروال را در بخش بعد تنظیم کنید. هر گزینه دلیل مشخصی دارد:

  • addresses باید ماسک شبکه داشته باشد، مثل /24. ویکی OpenWrt هشدار می‌دهد که آدرس بدون ماسک به /32 تبدیل می‌شود و مسیر به آن سر تونل ساخته نمی‌شود.
  • endpoint_host را آدرس IP بگذارید، نه نام دامنه. در بخش DNS می‌بینید که بعد از بستن نشت DNS، روتر فقط از داخل تونل نام‌ها را پیدا می‌کند. اگر برای ساختن خود تونل به نام دامنه نیاز باشد، بعد از هر بار روشن شدن روتر هیچ‌کدام کار نمی‌کند.
  • persistent_keepalive="25" هر ۲۵ ثانیه یک بسته‌ی کوچک می‌فرستد. روتر شما معمولاً پشت مودم ADSL یا TD-LTE است که خودش NAT انجام می‌دهد. آن مودم نگاشت UDP را فقط تا وقتی ترافیک هست نگه می‌دارد. بدون keepalive، بعد از مدتی بی‌کاری نگاشت پاک می‌شود و سرور دیگر نمی‌تواند به روتر بسته بفرستد.
  • route_allowed_ips="1" به OpenWrt می‌گوید برای هر آدرس در allowed_ips یک مسیر روی رابط vpn بسازد. بدون این گزینه، تونل بالا می‌آید ولی هیچ ترافیکی وارد آن نمی‌شود.

چرا 0.0.0.0/1 و 128.0.0.0/1 به جای 0.0.0.0/0؟

مثال ویکی OpenWrt از 0.0.0.0/0 استفاده می‌کند. در آن حالت روتر دو مسیر پیش‌فرض دارد، یکی از wan و یکی از vpn. این‌که کدام برنده شود به metric (عدد اولویت مسیر) هر دو بستگی دارد، و کاربران در انجمن OpenWrt گزارش کرده‌اند که گاهی مسیر wan برنده می‌شود و ترافیک اصلاً وارد تونل نمی‌شود.

دو نیمه‌ی 0.0.0.0/1 و 128.0.0.0/1 با هم کل فضای IPv4 را می‌پوشانند. کرنل همیشه دقیق‌ترین مسیر را انتخاب می‌کند و هر مسیر /1 از مسیر پیش‌فرض /0 دقیق‌تر است. پس ترافیک وارد تونل می‌شود، بدون این‌که به metric وابسته باشد. همین فهرست در جهت ورودی هم کار می‌کند: وایرگارد بسته‌ای را که از سرور برمی‌گردد فقط وقتی می‌پذیرد که آدرس مبدأ آن در allowed_ips باشد. این دو نقش در مسیریابی کلید رمزنگاری در وایرگارد توضیح داده شده است.

یک سؤال باقی می‌ماند. اگر همه‌ی ترافیک وارد تونل شود، بسته‌های رمزشده‌ی خود وایرگارد که به VPS می‌روند چه می‌شوند؟ اگر آن‌ها هم وارد تونل شوند، یک حلقه ساخته می‌شود و هیچ چیز کار نمی‌کند. OpenWrt این را خودش حل می‌کند. اسکریپت پروتکل وایرگارد در 25.12 (wireguard.sh) برای هر endpoint تابع proto_add_host_dependency را صدا می‌زند. این تابع یک مسیر /32 به آدرس VPS از طریق wan می‌سازد و /32 از هر /1 دقیق‌تر است. تنها استثنا گزینه‌ی nohostroute است. اگر روی 1 باشد، این مسیر ساخته نمی‌شود.

بعد از راه‌اندازی، این را بررسی کنید. دستور اول نباید 1 برگرداند:

uci -q get network.vpn.nohostroute
ip route get 203.0.113.10

در خروجی دستور دوم باید نام رابط wan شما بیاید (مثلاً wan یا eth1)، نه vpn. اگر vpn دیدید، گزینه‌ی nohostroute را حذف کنید:

uci -q delete network.vpn.nohostroute
uci commit network
service network restart

اضافه کردن رابط vpn به ناحیه‌ی wan در فایروال

ویکی OpenWrt پیشنهاد می‌کند رابط وایرگارد را در ناحیه‌ی wan بگذارید، یعنی آن را مثل اینترنت عمومی و غیرقابل اعتماد حساب کنید. این ساده‌ترین راه است، چون ناحیه‌ی wan در پیکربندی پیش‌فرض ترافیک ورودی را رد می‌کند و masquerade (همان NAT) را روشن دارد. ارسال از lan به wan هم از قبل مجاز است.

در پیکربندی پیش‌فرض، ناحیه‌ی اول lan و ناحیه‌ی دوم wan است. اول این را بررسی کنید. دستور زیر باید wan برگرداند:

uci get firewall.@zone[1].name

بعد رابط را اضافه کنید:

uci rename firewall.@zone[0]="lan"
uci rename firewall.@zone[1]="wan"
uci del_list firewall.wan.network="vpn"
uci add_list firewall.wan.network="vpn"
uci commit firewall
service firewall restart
service network restart

دستورهای rename فقط به این دو ناحیه نام می‌دهند تا بتوانید با firewall.wan به آن اشاره کنید. del_list پیش از add_list باعث می‌شود اگر دستورها را دو بار اجرا کنید، vpn دو بار در فهرست نیاید.

اگر این مرحله را فراموش کنید، هندشیک برقرار می‌شود ولی دستگاه‌های خانه اینترنت ندارند. علت این است که رابط vpn در هیچ ناحیه‌ای نیست، پس فایروال ارسال از lan به آن را اجازه نمی‌دهد و NAT هم روی آن انجام نمی‌شود.

همین تنظیمات در LuCI

اگر رابط وب را ترجیح می‌دهید، همین مقدارها را در LuCI وارد کنید:

  1. به Network و بعد Interfaces بروید و Add new interface را بزنید. نام را vpn بگذارید و پروتکل را WireGuard VPN انتخاب کنید.
  2. در زبانه‌ی General Settings، کلید خصوصی را از /root/wgclient.key در Private Key بگذارید. دکمه‌ی Generate new key pair هم یک جفت کلید تازه می‌سازد، ولی آن وقت باید کلید عمومی تازه را روی سرور بگذارید.
  3. در IP Addresses مقدار 10.8.0.3/24 را با ماسک وارد کنید.
  4. در زبانه‌ی Peers، Add peer را بزنید. Public Key سرور، Endpoint Host (آدرس IP سرور)، Endpoint Port برابر 51820 و Persistent Keep Alive برابر 25 را وارد کنید. در Allowed IPs دو مقدار 0.0.0.0/1 و 128.0.0.0/1 را اضافه کنید و Route Allowed IPs را تیک بزنید.
  5. در زبانه‌ی Advanced Settings مطمئن شوید No Host Routes تیک نخورده است.
  6. در زبانه‌ی Firewall Settings ناحیه‌ی wan را انتخاب کنید و بعد Save و Save & Apply را بزنید.

چطور بفهمیم تونل واقعاً کار می‌کند؟

روی روتر وضعیت تونل را ببینید:

wg show

به دو خط نگاه کنید. خط latest handshake باید زمانی در چند دقیقه‌ی اخیر نشان بدهد. عدد دریافت در خط transfer باید بعد از هر بار باز کردن یک سایت بیشتر شود. اگر خط latest handshake اصلاً وجود ندارد، هیچ هندشیکی کامل نشده است. به بخش عیب‌یابی بروید.

بعد بررسی کنید ترافیک واقعاً به سمت تونل می‌رود:

ip route get 1.1.1.1
ip route get 203.0.113.10

برای 1.1.1.1 باید dev vpn ببینید. برای آدرس VPS باید رابط wan را ببینید. در آخر، با گوشی‌ای که به Wi-Fi روتر وصل است و اپ وایرگارد ندارد، سایتی مثل ifconfig.me را باز کنید. آدرسی که نشان می‌دهد باید آدرس IP عمومی VPS باشد، نه آدرس اینترنت خانه.

چرا DNS روتر از تونل رد نمی‌شود و چطور درستش کنیم؟

این بخش مهم‌ترین قسمت راهنماست. تونل می‌تواند کاملاً درست کار کند و DNS (domain name system، سیستمی که نام دامنه را به آدرس IP تبدیل می‌کند) همچنان بیرون از آن برود. اگر با مفهوم آن آشنا نیستید، DNS چیست را ببینید.

دستگاه‌های خانه پرسش‌های DNS را به روتر می‌فرستند. dnsmasq روی روتر آن‌ها را به سرورهایی می‌فرستد که رابط wan از مودم یا ISP گرفته است. این سرورها در یک فایل نوشته می‌شوند. آن را ببینید و برای هر آدرس بررسی کنید که بسته از کدام رابط می‌رود:

cat /tmp/resolv.conf.d/resolv.conf.auto
ip route get 192.168.1.1

به جای 192.168.1.1 آدرسی را بگذارید که در فایل دیدید. در خیلی از خانه‌ها این آدرس خود مودم است. مودم در زیرشبکه‌ای است که مستقیم به wan وصل است و آن مسیر از هر /1 دقیق‌تر است. پس اگر خروجی رابط wan را نشان بدهد، پرسش‌های DNS بدون رمز به مودم می‌رسند و از آن‌جا به سرور DNS ارائه‌دهنده‌ی اینترنت. یعنی ISP نام همه‌ی سایت‌هایی را که خانواده باز می‌کنند می‌بیند و می‌تواند جواب نادرست برگرداند.

راه‌حل این است که dnsmasq فایل بالا را نادیده بگیرد و فقط از سروری که شما انتخاب می‌کنید و از داخل تونل در دسترس است بپرسد. دو انتخاب دارید.

سرور DNS روی خود VPS. اگر روی VPS یک resolver مثل unbound دارید که روی 10.8.0.1 گوش می‌دهد، این بهترین انتخاب است، چون پرسش‌ها از سرور شما بیرون نمی‌روند مگر برای پیدا کردن پاسخ. راه‌اندازی سمت سرور و باز کردن پورت ۵۳ روی wg0 در رفع مشکل DNS در وایرگارد آمده است.

uci set dhcp.@dnsmasq[0].noresolv="1"
uci -q delete dhcp.@dnsmasq[0].server
uci add_list dhcp.@dnsmasq[0].server="10.8.0.1"
uci commit dhcp
service dnsmasq restart

یک resolver عمومی از داخل تونل. اگر نمی‌خواهید روی VPS سرور DNS نگه دارید، از یک resolver عمومی مثل Quad9 استفاده کنید. آدرس 9.9.9.9 در محدوده‌ی 0.0.0.0/1 است، پس پرسش‌ها از تونل رد می‌شوند و از آدرس VPS به Quad9 می‌رسند. Quad9 پرسش‌ها را می‌بیند، ولی ISP شما نه.

uci set dhcp.@dnsmasq[0].noresolv="1"
uci -q delete dhcp.@dnsmasq[0].server
uci add_list dhcp.@dnsmasq[0].server="9.9.9.9"
uci add_list dhcp.@dnsmasq[0].server="149.112.112.112"
uci commit dhcp
service dnsmasq restart

گزینه‌ی noresolv باعث می‌شود dnsmasq فایل resolv.conf.auto را نخواند. گزینه‌ی server تنها سرورهای مجاز را تعیین می‌کند. دستور delete هر سروری را که قبلاً دستی گذاشته‌اید پاک می‌کند، پس اگر سرور خاصی داشتید، بعد دوباره اضافه‌اش کنید. این همان دلیلی است که endpoint_host را آدرس IP گذاشتیم: حالا روتر بدون تونل هیچ نامی را پیدا نمی‌کند.

حالا از خود روتر یک نام را بپرسید:

nslookup openwrt.org 127.0.0.1

اگر پاسخ یک آدرس IP بود، dnsmasq سرور جدید را از داخل تونل پیدا کرده است. اگر بعد از چند ثانیه خطای timeout داد، سرور DNS از داخل تونل در دسترس نیست. با ip route get 10.8.0.1 یا ip route get 9.9.9.9 بررسی کنید که مسیر dev vpn است. اگر resolver روی VPS است، بررسی کنید که روی 10.8.0.1 گوش می‌دهد و فایروال سرور پورت ۵۳ را روی wg0 باز کرده است.

آزمایش آخر را از یک دستگاه در خانه انجام بدهید. سایت dnsleaktest.com را باز کنید و Extended test را بزنید. در فهرست نتیجه نباید هیچ سرور متعلق به ISP شما دیده شود. با resolver روی VPS، باید آدرس خود VPS را ببینید. با Quad9، باید سرورهای Quad9 را ببینید.

اگر اینترنت شما IPv6 دارد

مسیرهای این راهنما فقط IPv4 هستند و آموزش سرور هم فقط IPv4 را NAT می‌کند. اگر ISP به رابط wan6 آدرس IPv6 بدهد، دستگاه‌های خانه سایت‌هایی را که IPv6 دارند مستقیم و بیرون از تونل باز می‌کنند. در آزمایش نشت DNS یا در سایت نمایش IP، این را به شکل یک آدرس IPv6 از ISP خودتان می‌بینید. ساده‌ترین راه این است که wan6 را خاموش کنید تا هیچ مسیر IPv6 بیرون از تونل وجود نداشته باشد:

uci set network.wan6.auto="0"
uci commit network
ifdown wan6

گزینه‌ی auto="0" جلوی بالا آمدن wan6 را بعد از روشن شدن مجدد روتر هم می‌گیرد.

چرا هندشیک هیچ‌وقت کامل نمی‌شود؟

وقتی wg show روی روتر خط latest handshake ندارد، یا بسته‌ها به سرور نمی‌رسند یا سرور آن‌ها را نمی‌پذیرد. این دو حالت را روی VPS از هم جدا کنید:

sudo tcpdump -ni any udp port 51820

اگر هیچ بسته‌ای از آدرس IP خانه‌ی شما نمی‌رسد، چند علت ممکن است. پورت UDP 51820 ممکن است در فایروال جداگانه‌ی پنل ارائه‌دهنده‌ی VPS بسته باشد. endpoint_host یا endpoint_port ممکن است اشتباه باشد. یا شبکه‌ی بین شما و سرور وایرگارد را مسدود می‌کند. برای آزمایش علت آخر، همان روتر یا یک گوشی با اپ وایرگارد را روی یک اینترنت دیگر (مثلاً اینترنت همراه یک اپراتور دیگر) امتحان کنید. اگر آن‌جا هندشیک کامل می‌شود و این‌جا نه، تنظیمات شما درست است و مشکل از شبکه است. آن وقت به راهنمای پروتکل‌های جایگزین که بالاتر گفتیم برگردید.

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

هندشیک برقرار است ولی دستگاه‌ها اینترنت ندارند

اگر wg show هندشیک تازه نشان می‌دهد ولی گوشی‌ها سایتی باز نمی‌کنند، این موارد را به ترتیب بررسی کنید. اول، uci show firewall.wan.network باید vpn را در فهرست داشته باشد. دوم، ip route get 1.1.1.1 باید dev vpn نشان بدهد. اگر رابط wan را نشان داد، route_allowed_ips تنظیم نشده است. سوم، از روتر ping -c 3 10.8.0.1 را اجرا کنید. اگر پاسخ می‌آید ولی ping -c 3 1.1.1.1 پاسخ ندارد، مشکل روی سرور است: یا ارسال بسته (forwarding) روشن نیست، یا NAT سمت سرور آدرس 10.8.0.3 را پوشش نمی‌دهد. این دو مورد در آموزش سرور توضیح داده شده‌اند.

اگر صفحه‌های ساده باز می‌شوند ولی سایت‌های سنگین یا بعضی اپ‌ها نیمه‌کاره می‌مانند، مشکل معمولاً MTU (maximum transmission unit، بیشترین اندازه‌ی بسته) است. ناحیه‌ی wan در پیکربندی پیش‌فرض mtu_fix را روشن دارد که اندازه‌ی MSS (maximum segment size) اتصال‌های TCP را محدود می‌کند. با uci show firewall.wan بررسی کنید که mtu_fix='1' وجود دارد. اگر مشکل باقی ماند، با uci set network.vpn.mtu="1380" و بعد uci commit network و service network restart یک MTU کوچک‌تر را امتحان کنید. برای پیدا کردن عدد درست به جای حدس زدن، کندی وایرگارد و پیدا کردن MTU درست را دنبال کنید.

FAQ

اگر تونل قطع شود، ترافیک خانه از اینترنت عادی بیرون می‌رود؟

بستگی دارد چطور قطع شود. اگر رابط vpn روی روتر پایین بیاید، netifd مسیرهای /1 آن را حذف می‌کند و مسیر پیش‌فرض wan دوباره استفاده می‌شود، پس ترافیک بدون تونل بیرون می‌رود. اگر رابط بالا بماند ولی VPS در دسترس نباشد، مسیرها باقی می‌مانند و ترافیک فقط متوقف می‌شود. برای این‌که در هیچ حالتی ترافیک بیرون از تونل نرود، باید vpn را در یک ناحیه‌ی جداگانه‌ی فایروال بگذارید و ارسال از lan به wan را حذف کنید.

چرا وایرگارد روی اینترنت خانه وصل نمی‌شود ولی روی اینترنت دیگری وصل می‌شود؟

وایرگارد پروتکلی برای پنهان کردن ترافیک نیست. پیام هندشیک آن ساختار ثابتی دارد و شبکه‌ای که بسته‌ها را بازرسی می‌کند می‌تواند آن را تشخیص بدهد و مسدود کند. اگر همان پیکربندی روی یک اینترنت دیگر کار می‌کند، تنظیمات روتر درست است. در این حالت باید پروتکل انتقالی را انتخاب کنید که برای عبور از این نوع مسدودسازی ساخته شده است، نه این‌که گزینه‌های OpenWrt را تغییر بدهید.

آیا این راهنما روی OpenWrt 24.10 هم کار می‌کند؟

بله. تنها تفاوت مدیر بسته است. روی 24.10 به جای apk update و apk add luci-proto-wireguard از opkg update و opkg install luci-proto-wireguard استفاده کنید. دستورهای uci، تنظیمات فایروال، تنظیمات dnsmasq و مسیر LuCI در هر دو نسخه یکسان هستند.

چرا آدرس رابط وایرگارد روی روتر باید ماسک /24 داشته باشد؟

ویکی OpenWrt هشدار می‌دهد که آدرس بدون ماسک به /32 تبدیل می‌شود، و آن وقت روتر مسیری به بقیه‌ی شبکه‌ی تونل، از جمله سرور در 10.8.0.1، ندارد. با 10.8.0.3/24 روتر می‌داند کل 10.8.0.0/24 از رابط vpn در دسترس است. این با AllowedIPs = 10.8.0.3/32 روی سرور فرق دارد. آن فهرست مشخص می‌کند کدام آدرس‌ها متعلق به این peer هستند و ماسک شبکه نیست.

#wireguard#openwrt#router#vpn#vps#dns