SSD Nodes Learn
تعلیمی Matt Connorتحریر: Matt Connor · اپ ڈیٹ شدہ 2026-07-25

VPS پر WireGuard VPN کیسے سیٹ اپ کریں

Linux VPS پر WireGuard کی تنصیب: کلید بنانا، wg0.conf، IP forwarding، NAT، AllowedIPs اور DNS۔ ہینڈ شیک فیلئرز اور کلید کی اجازتوں جیسی عام خرابیوں کا حل۔

آپ کیا بنا رہے ہیں

آپ کے اپنے سرور پر ایک WireGuard VPN تقریباً چالیس سطروں کی کنفیگریشن پر مشتمل ہوتا ہے: ایک کلید جوڑا، ایک انٹرفیس فائل، ایک sysctl، ایک NAT رول، اور ایک فائر وال سوراخ۔ تنصیب بہت آسان ہے، اس لیے اس گائیڈ کا زیادہ تر حصہ ان چیزوں پر مشتمل ہے جو خراب ہوتی ہیں — کلید کی اجازتیں، AllowedIPs، فارورڈنگ اور DNS۔

WireGuard کرنیل میں ایک Layer 3 سرنگ ہے، جو Linux 5.6 سے مین لائن میں شامل ہے، اس لیے Ubuntu 24.04 اور Debian 13 اسے بغیر کسی بیرونی ماڈیول کے فراہم کرتے ہیں۔ کوئی خفیہ نگاری کے معاہدے کی بات چیت نہیں، کوئی سرٹیفکیٹ اتھارٹی نہیں، کوئی صارف نام/پاس ورڈ کا مرحلہ نہیں: ایک پیر ایک پبلک کلید اور وہ IP پتے ہیں جو اس کلید کو استعمال کرنے کی اجازت ہے۔ جو پیکیٹ اپنے MAC چیک میں ناکام ہو جاتا ہے اسے بغیر کسی جواب کے چھوڑ دیا جاتا ہے، اس لیے پورٹ سکینز کا جواب نہیں دیتا۔ اس کا دوسرا پہلو: کوئی تصدیق کا سرور موجود نہیں ہے، اس لیے رسائی ختم کرنے کا مطلب باکس سے ایک پیر کو حذف کرنا ہے۔

سب سے پہلے ورچوئلائزیشن کی جانچ کریں

WireGuard کو ایک ایسے کرنیل کی ضرورت ہے جس میں آپ کوئی ماڈیول لوڈ کر سکیں، اور KVM VPS پر یہ بغیر کسی اضافی کام کے چل جاتا ہے۔ کنٹینر ورچوئلائزیشن جو ہوسٹ کرنیل شیئر کرتی ہے — جیسے OpenVZ اور LXC — پر پہلا کمانڈ RTNETLINK answers: Operation not supported کے ساتھ ناکام ہو جاتا ہے، اور متبادل wireguard-go یوزرسپیس امپلیمنٹیشن ہے۔ سب سے پہلے sudo modprobe wireguard && echo ok سے جانچ کریں۔

کلیدز کو بغیر لیک کیے جنریٹ کریں

ایک ورلڈ ریڈایبل /etc/wireguard/server.key بالکل وہی ہے جو کچھ کوئی VPN نہ ہو۔ عام umask 077 && wg genkey | sudo tee ... لائن غیر قابلِ اعتماد ہے، کیونکہ sudo فائل tee کی تخلیق پر اپنا خود کا umask لاگو کرتا ہے۔ موڈ کو واضح طور پر سیٹ کریں۔

sudo apt update && sudo apt install -y wireguard nftables
sudo install -d -m 700 /etc/wireguard
sudo sh -c 'umask 077; wg genkey > /etc/wireguard/server.key'
sudo sh -c 'wg pubkey < /etc/wireguard/server.key > /etc/wireguard/server.pub'
sudo chmod 600 /etc/wireguard/server.key

کلائنٹ پیئر کو اسی طرح جنریٹ کریں۔ wg genpsk ایک اختیاری پری شیئرڈ کلید شامل کرتا ہے، ہر کنفگ میں ایک لائن۔

سرور انٹرفیس: /etc/wireguard/wg0.conf

[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <contents of /etc/wireguard/server.key>

[Peer]
PublicKey = <laptop public key>
PresharedKey = <psk, optional>
AllowedIPs = 10.8.0.2/32

chmod 600 کریں؛ اسٹارٹ اپ پر یہ تنبیہ کہ فائل ہر کے لیے قابل رسائی ہے کا مطلب ہے کہ آپ نے یہ چھوڑ دیا ہے۔ Address سرور کا ٹنل کے اندر پتہ ہے، جس میں پورے VPN سب نیٹ کا ماسک شامل ہے۔ ایسا رینج منتخب کریں جو آپ کو عام استعمال میں نہ ملے — 192.168.1.0/24 آپ کے کلائنٹس کے پیچھے موجود آدھے ہوم روٹرز سے ٹکرا جاتا ہے، اور پھر ٹنل خاموشی سے لوکل روٹ کے سامنے ہار جاتی ہے۔

سرور کی طرف کسی پیر کا AllowedIPs ایک /32 ہے، یعنی وہ واحد ٹنل پتہ جو اس کلائنٹ کی ملکیت ہے۔ دو پیرز کو ایک ہی allowed IP دیں تو وہ آخری کنفیگر شدہ کلائنٹ کی طرف منتقل ہو جاتا ہے، اور پہلا کلائنٹ ٹریفک وصول کرنا بند کر دیتا ہے جبکہ کہیں کوئی خرابی بھی نہیں چھپی ہوتی۔ SaveConfig کو غیر مقررہ چھوڑیں، ورنہ wg-quick down اس فائل کو موجودہ حالت سے دوبارہ لکھ دیتا ہے۔

اس باکس کو روٹر میں تبدیل کریں

ایک Linux سرور ان پیکیٹس کو ڈراپ کر دیتا ہے جو اس کے لیے نہیں ہوتے۔ فارورڈنگ اور سورس NAT دونوں بطور ڈیفالٹ غیر موجود ہوتے ہیں۔

printf 'net.ipv4.ip_forward = 1\nnet.ipv6.conf.all.forwarding = 1\n' \
  | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl --system
sysctl net.ipv4.ip_forward

ایک خالی sysctl -w اگلی ری بوت تک کام کرتا ہے اور پھر خاموشی سے بند ہو جاتا ہے۔ NAT کو egress انٹرفیس درکار ہوتا ہے — وہ NIC جو انٹرنیٹ تک پہنچتا ہے، نہ کہ wg0۔ eth0 کو فرض نہ کریں؛ اپنا نام ip route show default سے لیں، کیونکہ حالیہ امیجز enp1s0 یا ens3 جیسے نام استعمال کرتے ہیں۔

فائر وال: پورٹ، اور فارورڈ پاتھ

ایک nftables فائل فلٹر اور NAT کا احاطہ کرتی ہے۔ /etc/nftables.conf لکھیں — یہ موجودہ رول سیٹ کو فلش کر دیتا ہے، اس لیے ایسے سرور پر اسے چھوڑ دیں جو پہلے سے ufw یا Docker کے زیر انتظام ہو۔

#!/usr/sbin/nft -f
flush ruleset

table inet filter {
  chain input {
    type filter hook input priority filter; policy drop;
    ct state established,related accept
    iif lo accept
    tcp dport 22 accept
    udp dport 51820 accept
  }
  chain forward {
    type filter hook forward priority filter; policy drop;
    ct state established,related accept
    iifname "wg0" oifname "enp1s0" accept
  }
}

table ip nat {
  chain postrouting {
    type nat hook postrouting priority srcnat; policy accept;
    ip saddr 10.8.0.0/24 oifname "enp1s0" masquerade
  }
}

اسے sudo systemctl enable --now nftables سے لاگو کریں، اور دوسرا SSH سیشن کھلا رکھیں: policy drop کے ساتھ SSH رول میں کوئی ٹائپو آپ کو اپنے ہی سرور سے باہر لاک کر دے گا۔ نوٹ کریں کہ فارورڈ چین کیا اجازت نہیں دیتا — wg0 سے wg0۔ پیرز انٹرنیٹ تک پہنچتے ہیں، ایک دوسرے تک نہیں؛ پیر ٹو پیر VPN کے لیے iifname "wg0" oifname "wg0" accept شامل کریں۔ یہی چین اس بات کو بھی کنٹرول کرتی ہے کہ ایک پیر سرور پر خود کیا چھو سکتا ہے، جو اس وقت اہم ہوتا ہے جب یہ باکس tmux میں Claude Code چلانے والا ریموٹ ڈیولپمنٹ باکس کے طور پر بھی کام کرتا ہو اور آپ اس کے اس پہلو کو عوامی طور پر ظاہر نہ کریں۔

ufw والے باکس پر: ufw allow 51820/udp، /etc/default/ufw میں DEFAULT_FORWARD_POLICY="ACCEPT"، اور /etc/ufw/before.rules کے اوپر *nat POSTROUTING MASQUERADE رول۔

اسے systemd کے تحت لائیں

sudo systemctl enable --now wg-quick@wg0
sudo wg show

wg-quick انٹرفیس بناتا ہے، ایڈریسز شامل کرتا ہے، اور AllowedIPs سے اخذ کردہ روٹس انسٹال کرتا ہے۔ enable --now اہم حصہ ہے: ہاتھ سے چلایا گیا wg-quick up wg0 اگلے ریبوٹ کے بعد ختم ہو جاتا ہے، اور کرنل اپ گریڈز کا مطلب ریبوٹس ہیں۔

کلائنٹ کنفیگریشن، اور وہ سیٹنگ جو ہر کوئی غلط کرتا ہے

[Interface]
PrivateKey = <laptop private key>
Address = 10.8.0.2/32
DNS = 10.8.0.1

[Peer]
PublicKey = <server public key>
Endpoint = vpn.example.com:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25

AllowedIPs ایک ہی وقت میں دو مختلف کام کرتا ہے، اور انہیں ملانا WireGuard کے زیادہ تر الجھن کا باعث ہے۔

باہر جانے والے ٹریفک کے لیے یہ ایک روٹنگ ٹیبل ہے۔ وہ پیکیٹ جس کی منزل کسی پیر کے AllowedIPs سے ملتی ہے، اسے خفیہ کیا جاتا ہے اور اسی پیر کو بھیجا جاتا ہے۔ 0.0.0.0/0, ::/0 ہر چیز کو سرنگ کے ذریعے بھیجتا ہے — یہ ایک مکمل سرنگ ہے، جہاں سرور ڈیفالٹ روٹ بن جاتا ہے۔ اسپلٹ سرنگ ایک محدود فہرست ہے: AllowedIPs = 10.8.0.0/24, 10.20.0.0/16 VPN ٹریفک کے ساتھ ساتھ سرور کے پیچھے موجود ایک نجی نیٹ ورک کو بھی لے جاتا ہے، اور باقی سب کچھ اپنا مقامی روٹ استعمال کرتا رہتا ہے۔ یہ محدود فہرست ہی آپ کو خدمات کو عوامی انٹرنیٹ سے بالکل ہٹا کر رکھنے کی اجازت دیتی ہے — ایک VPS پر نجی Nextcloud انسٹنس جو سرنگ پتے سے جڑا ہو، یا نیسٹڈ ورچولائزیشن لیب VMs جو اسی مشین پر چل رہے ہوں، وہ پیرز کے لیے قابل رسائی رہتے ہیں اور باقی سب کے لیے پوشیدہ رہتے ہیں۔

اندر آنے والے ٹریفک کے لیے یہ ایک ایکسس کنٹرول لسٹ ہے۔ کسی پیر سے موصول ہونے والا خفیہ کردہ پیکیٹ، اگر اس کا سورس پتہ اسی پیر کے AllowedIPs میں شامل نہیں ہے، تو اسے ڈراپ کر دیا جاتا ہے۔ اسی وجہ سے سرور لیپ ٹاپ کے لیے 10.8.0.2/32 درج کرتا ہے: وہاں 0.0.0.0/0 کی اندراج اس کلائنٹ کو سرنگ میں کوئی بھی پتہ سپوف کرنے کی اجازت دے دیتا۔

PersistentKeepalive NAT کے پیچھے موجود کلائنٹس کے لیے ہے، جہاں روٹر UDP میپنگ کو صرف پیکیٹس بہتے رہنے تک کھلا رکھتا ہے۔ جب یہ ختم ہو جاتی ہے، تو سرور کلائنٹ تک پہنچ نہیں سکتا۔ PersistentKeepalive = 25 اس میپنگ کو کھلا رکھتا ہے — اسے کلائنٹ پر سیٹ کریں، عوامی IP والے سرور پر نہیں۔

DNS، اور وہ لیک جس پر کسی کی نظر نہیں پڑتی

AllowedIPs = 0.0.0.0/0 کے ساتھ اور بغیر DNS = لائن کے، کلائنٹ اپنے مقامی نیٹ ورک سے سیکھے ہوئے ریزارور کو برقرار رکھتا ہے — یعنی 192.168.1.1 پر موجود کیفے کا روٹر۔ وہ روٹ ڈیفالٹ روٹ سے زیادہ مخصوص ہوتا ہے، اس لیے DNS استفسارات مقامی لنک پر کلئیر ٹیکسٹ میں باہر نکلتے ہیں، جبکہ باقی سب کچھ ٹنل کے ذریعے گزرتا ہے۔ ٹریفک پرائیویٹ ہے؛ ناموں کی فہرست نہیں۔

دو درست آپشنز ہیں۔ DNS کو کسی پبلک ریزارور (DNS = 9.9.9.9) کی طرف اشارہ کریں، تو استفسارات ٹنل سے گزر کر آپ کے سرور سے باہر نکلیں گے، البتہ وہ ریزارور اب بھی انہیں دیکھے گا۔ یا پھر unbound یا dnsmasq کو 10.8.0.1 سے بائنڈ کر کے چلائیں، DNS = 10.8.0.1 سیٹ کریں، اور ان پٹ چین میں udp dport 53 iifname "wg0" accept شامل کریں — یہ لائن سیٹ کریں اور ریزارور کو بھلا دیں، اور کچھ بھی ریزارو نہیں ہوگا۔

لینکس کلائنٹس پر wg-quick، DNS کو resolvconf کے ذریعے لاگو کرتا ہے؛ اگر یہ موجود نہ ہو تو آپ کو resolvconf: command not found ملے گا۔ openresolv انسٹال کریں، یا systemd-resolved کلائنٹ پر PostUp = resolvectl dns %i 10.8.0.1 سیٹ کریں۔

سرنگ کو منقطع کیے بغیر پیرز کا اضافہ اور حذف

انٹرفیس کو دوبارہ شروع کرنے سے متصل تمام صارفین بے دخل ہو جاتے ہیں۔ [Peer] بلاک کو wg0.conf میں شامل کریں، پھر پیر سیٹ کو موجودہ حالت میں دوبارہ لوڈ کریں۔

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

wg-quick strip wg-quick کے مخصوص کلیدز (Address، DNS، PostUp) کے بغیر کنفیگریشن کو دکھاتا ہے، اور syncconf چلتے سیشنز کو برقرار رکھتے ہوئے فرق کو لاگو کر دیتا ہے۔ یہ صرف پیرز کو اپ ڈیٹ کرتا ہے: تبدیل شدہ Address کے لیے پھر بھی مکمل down/up کی ضرورت ہوتی ہے۔ sudo wg set wg0 peer <public key> remove کے ساتھ رسائی منسوخ کریں، پھر فائل سے بلاک حذف کر دیں ورنہ اگلی دوبارہ لوڈنگ پر یہ واپس آ جائے گا۔

ناکامی کے طریقے، جن سے آپ جن اسٹرنگز کا سامنا کریں گے

ہینڈ شیک مکمل نہیں ہوتا۔ wg show پیر کو بغیر latest handshake کے درج کرتا ہے، اور کلائنٹ لاگ کرتا ہے:

Handshake for peer 1 (10.0.0.10:51820) did not complete after 5 seconds, retrying (try 2)

کچھ نہیں پہنچ رہا، یا کچھ قبول نہیں ہو رہا۔ ترتیب وار: کیا VPS فائر وال پر UDP 51820 کھلا ہے اور آپ کے فراہم کنندہ کے نیٹ ورک فائر وال پر بھی کھلا ہے، جو زیادہ تر پینلز پر ایک الگ کنٹرول ہے؛ کیا Endpoint ایڈریس اور پورٹ درست ہیں؛ کیا کلیدز الجھ گئی ہیں۔ کلائنٹ کے [Peer] بلاک میں موجود کلید سرور کی پبلک کلید ہونی چاہیے، اور اس کے برعکس — پرائیویٹ کلید، یا کلائنٹ کی اپنی پبلک کلید پیسٹ کرنے سے بالکل یہی علامت ظاہر ہوتی ہے۔ سرور پر sudo tcpdump -ni any udp port 51820 بتاتا ہے کہ پیکیٹس پہنچتے ہیں یا نہیں۔ کرنل ماڈیول بذات خود کچھ لاگ نہیں کرتا؛ WireGuard کے پیغامات dmesg میں اس وقت ظاہر ہوتے ہیں جب آپ ڈائنامک ڈی بگ فعال کرتے ہیں (echo module wireguard +p | sudo tee /sys/kernel/debug/dynamic_debug/control)، اور اسے آن کرنے کے بعد، کلید میں بے میچ ایک غیر درست-MAC ڈراپ کے طور پر ظاہر ہوتا ہے۔

ہینڈ شیک کام کرتا ہے، انٹرنیٹ نہیں۔ ping 10.8.0.1 کامیاب ہوتا ہے لیکن ping 1.1.1.1 ٹائم آؤٹ ہو جاتا ہے: فارورڈنگ یا NAT غائب ہے۔ چیک کریں کہ sysctl net.ipv4.ip_forward میں 1 درج ہے، پھر کلائنٹ کے پنگ کرنے کے دوران کاؤنٹرز دیکھیں، sudo nft list ruleset یا sudo iptables -t nat -L POSTROUTING -n -v کے ساتھ۔ مسکیورایڈ رول پر زیرو پیکیٹس کا مطلب ہے کہ اس کی ایگریس انٹرفیس کا نام غلط ہے؛ بڑھتا ہوا کاؤنٹر لیکن کوئی جواب نہ ہونا فارورڈ چین پالیسی کی طرف اشارہ کرتا ہے۔

انٹرنیٹ کام کرتا ہے، نام نہیں۔ ping 1.1.1.1 کامیاب ہوتا ہے اور curl https://example.com میں Could not resolve host واپس آتا ہے۔ DNS لائن غائب ہے، یا یہ ایسے ریزالور کا نام بتاتی ہے جو ٹنل کے اندر سے پہنچنے کے قابل نہیں ہے۔

کچھ HTTPS سائٹیں ہینگ ہو جاتی ہیں۔ SSH اور پنگ ٹھیک ہیں؛ بڑے صفحے رک جاتے ہیں۔ یہ پات MTU ہے: ٹنل اوور ہیڈ شامل کرتی ہے، اور بیچ کا کوئی لنک بغیر ICMP پیغام واپس آنے کے بڑے سائز کے پیکیٹس ڈراپ کر دیتا ہے۔ کلائنٹ پر MTU کو کم کریں [Interface] — پہلے 1420 آزمائیں، پھر 1380، پھر 1280۔

انٹرفیس شروع ہونے سے انکار کرتا ہے۔ Address already in use کا مطلب ہے کہ کوئی دوسرا عملہ UDP 51820 کو پکڑے ہوئے ہے۔ ناکام up کے بعد Cannot find device wg0 کا عام مطلب ہے کہ کنفیگ مسترد کر دی گئی تھی؛ journalctl -u wg-quick@wg0 -n 50 پڑھیں۔

Streisand یا OpenVPN سے منتقلی

Streisand کی دیکھ بھال نہیں کی جا رہی اور اس کا ذخیرہ محفوظ کر دیا گیا ہے۔ ترک شدہ آٹومیشن پر VPN چلانا ایک مسلسل سیکورٹی مسئلہ ہے۔ کوئی موجودہ جگہ پر اپ گریڈ نہیں ہے۔ OpenVPN کی PKI تبدیل نہیں ہوتی کیونکہ WireGuard میں کوئی سرٹیفکیٹ نہیں ہے، کوئی CA نہیں ہے، اور کوئی ختم ہونے کی میعاد نہیں ہے۔ اس لیے ہر کلائنٹ کو ایک نیا کلید جوڑا ملتا ہے۔

متوازی منتقلی کریں۔ WireGuard پر UDP 51820 استعمال ہوتا ہے اور OpenVPN پر 1194، یہ دونوں ایک ہی سرور پر موجود رہ سکتے ہیں۔ wg0 کو لائو کریں۔ کلائنٹس کو ایک ایک کر کے منتقل کریں۔ پھر پرانی سروس بند کر دیں۔ OpenVPN کا یوزرنیم/پاس ورڈ اور منسوخی کا طریقہ منتقل نہیں ہوتا۔ اگر آپ کو اکاؤنٹس یا آڈٹ ٹریل درکار ہے تو اسے WireGuard کے اوپر ایک الگ تہہ کے طور پر شامل کریں۔

بیک اپس، اپ گریڈز، اور پیمانے پر بڑھنے پر کیا چیز دباؤ میں آتی ہے

/etc/wireguard سرور ہے۔ اس کا بیک اپ لیں (sudo tar czf wg-backup.tgz -C /etc wireguard، mode 600، سرور سے باہر محفوظ رکھا ہوا) اور آپ منٹوں میں ایک نئے VPS پر دوبارہ تعمیر کر سکتے ہیں۔ سرور کا پرائیویٹ کی گم ہو جائے تو ہر کلائنٹ کنفیگر دوبارہ جاری کرنا ہوگا، کیونکہ کلائنٹس سرور کا پبلک کی پن کرتے ہیں۔ اپ گریڈ ایک عام apt upgrade ہے، اور کرنل اپ ڈیٹ کے لیے ری بوت درکار ہے۔ اگر آپ نے wg-quick@wg0 فعال کیا ہے تو یہ خود بخود واپس آ جاتا ہے۔

ہر پیر کا اسٹیٹ چھوٹا ہوتا ہے اور کرپٹو کرنل میں چلتی ہے۔ اس لیے حد آپ کے VPS کا CPU اور بینڈوڈتھ الاؤنس ہے، نہ کہ اس کنفیگر میں کوئی چیز۔ کسی شائع شدہ عدد پر بھروسہ کرنے کے بجائے اسے ٹنل کے پار iperf3 سے ناپیں۔ پیمانے پر بڑھنے پر آپریشنز دباؤ میں آتے ہیں۔ ہر پیر کو ایک منفرد ٹنل IP درکار ہے، اور ساٹھ [Peer] بلاکس کو ہاتھ سے ایڈٹ کرنے سے ڈپلیکیٹ AllowedIPs آ جاتے ہیں۔ کنفیگرز کو اسکرپٹ سے جنریٹ کریں۔ ایک سرور کا مطلب ایک UDP اینڈ پوائنٹ اور ایک ناکامی کا نقطہ ہے، اور WireGuard میں کلسترنگ نہیں ہے۔ ری ڈنڈنسی کا مطلب اپنے الگ کیز کے ساتھ دوسرا سرور ہے۔ کی روٹیشن اب بھی مینول ہے، اس لیے لکھ کر رکھیں کہ کس کے پاس کون سا کی ہے اور آپ اسے کیسے منسوخ کرتے ہیں۔

ان سب کے لیے ایک Linux باکس درکار ہے جس پر آپ کا کنٹرول ہو۔ ایک پبلک IP، ایسا کرنل جس میں آپ ماڈیول لوڈ کر سکیں، اور ایک فائر وال جس پر آپ مکمل ملکیت رکھتے ہوں۔

FAQ

WireGuard ہینڈ شییک مکمل کیوں نہیں ہوتا؟

wg show کسی پیر کو latest handshake کے بغیر درج کرنے کا مطلب ہے کہ پیکیٹز نہیں پہنچ رہے یا قبول نہیں ہو رہے۔ VPS فائر وال اور آپ کے فراہم کنندہ کے الگ نیٹ ورک فائر وال دونوں پر UDP 51820 کی جانچ کریں، Endpoint ہوسٹ اور پورٹ کی تصدیق کریں، پھر چیک کریں کہ کلیدز تبدیل نہیں ہوئیں — کلائنٹ کے [Peer] بلاک میں سرور کی public کلید ہونی چاہیے۔ sudo tcpdump -ni any udp port 51820 سرور پر یہ بتاتا ہے کہ پیکیٹز پہنچ رہے ہیں یا نہیں؛ dmesg صرف WireGuard کی ہینڈ شییک ناکامیوں کی اطلاع دیتا ہے جب آپ ڈائنامک ڈی بگ (echo module wireguard +p | sudo tee /sys/kernel/debug/dynamic_debug/control) فعال کریں، اور پھر کلید میں بے میچ ایک invalid-MAC ڈراپ کے طور پر ظاہر ہوتا ہے۔

ٹنل کنیکٹ ہو جاتی ہے لیکن انٹرنیٹ نہیں ہے۔ کیا کمی ہے؟

ping 10.8.0.1 کام کرنا جبکہ ping 1.1.1.1 ٹائم آؤٹ ہو جاتا ہے، فوروارڈنگ یا NAT کی طرف اشارہ کرتا ہے۔ تصدیق کریں کہ sysctl net.ipv4.ip_forward میں 1 درج ہے اور یہ /etc/sysctl.d/ میں سیٹ ہے، نہ کہ صرف sysctl -w کے ساتھ جو ری بوٹ پر ختم ہو جائے۔ پھر اپنے حقیقی ایگریس انٹرفیس سے مسکریڈ رول ناموں کی جانچ کریں جو ip route show default سے ملے — enp1s0 یا ens3، شاذ و نادر ہی eth0۔

کیا مجھے اپنے کلائنٹ کنفیگ میں DNS = لائن کی ضرورت ہے؟

مکمل ٹنل اور DNS = لائن کے بغیر، کلائنٹ اپنے لوکل نیٹ ورک سے سیکھے ہوئے ری سلور کو برقرار رکھتا ہے، اور وہ کویریز کلئیر ٹیکسٹ میں لوکل لنک پر نکلتے ہیں جبکہ باقی سب ٹنل ہو جاتا ہے۔ DNS کو کسی پبلک ری سلور کی طرف اشارہ کریں، یا unbound/dnsmasq کو 10.8.0.1 سے بائنڈ کر کے چلائیں اور ان پٹ چین میں udp dport 53 iifname "wg0" کھولیں۔

AllowedIPs دراصل کیا کنٹرول کرتا ہے؟

یہ دو کام کرتا ہے۔ باہر کی طرف یہ ایک روٹنگ ٹیبل ہے: کسی پیر کے AllowedIPs سے میچ ہونے والا ٹریفک انکرپٹ ہو کر اس پیر کو بھیجا جاتا ہے۔ اندر کی طرف یہ ایک ایکسس کنٹرول لسٹ ہے: ایک ڈکرپٹڈ پیکیٹ جس کا ذریعہ اس پیر کے AllowedIPs سے باہر ہو، ڈراپ کر دیا جاتا ہے۔ اسی لیے سرور سائڈ پر ہر کلائنٹ کے لیے ایک /32 درج ہوتا ہے جبکہ کلائنٹ سائڈ پر 0.0.0.0/0 درج ہو سکتا ہے۔

کیا WireGuard کسی بھی VPS پر چلے گا؟

KVM VPS پر یہ ان کرنیل ماڈیول کے ساتھ بغیر کسی اضافی سیٹ اپ کے کام کرتا ہے۔ کنٹینر ورچوئلائزیشن پر جو ہوسٹ کرنیل شیئر کرتی ہے، جیسے OpenVZ یا LXC، modprobe wireguard Operation not supported کے ساتھ ناکام ہو جاتا ہے اور فال بیک wireguard-go یوزر اسپیس امپلیمنٹیشن ہے۔ کسی بھی چیز سے پہلے sudo modprobe wireguard && echo ok چلائیں۔

#wireguard#vpn#linux-networking#nftables#systemd#self-hosting