VPS-ல் WireGuard VPN எப்படி அமைப்பது
உங்கள் Linux VPS-ல் WireGuard ஐ அமைக்க முழு வழிகாட்டி. key generation, wg0.conf, IP forwarding, NAT, AllowedIPs, DNS மற்றும் handshake failure பிழைகளை தீர்க்க விரிவான படிகள்.
நீங்கள் உருவாக்குவது என்ன
நீங்கள் வைத்திருக்கும் ஒரு சேவையகத்தில் WireGuard VPN என்பது சுமார் நாற்பது வரிக் கட்டமைப்பு மட்டுமே: ஒரு key pair, ஒரு interface கோப்பு, ஒரு sysctl, ஒரு NAT விதி, ஒரு firewall ஓட்டை. நிறுவல் எளிதானது. எனவே இந்த வழிகாட்டி பெரும்பாலும் எது பழுதடைகிறது என்பதைக் கையாளுகிறது — key இசைவுகள், AllowedIPs, forwarding மற்றும் DNS.
WireGuard என்பது kernel இல் இயங்கும் Layer 3 tunnel ஆகும். Linux 5.6 முதல் mainline இல் உள்ளது. எனவே Ubuntu 24.04 மற்றும் Debian 13 இதை வெளிப்புற module இல்லாமல் வழங்குகின்றன. cipher பேச்சுவார்த்தை இல்லை. certificate authority இல்லை. username/password படி இல்லை: ஒரு peer என்பது ஒரு public key மற்றும் அந்த key பயன்படுத்தக்கூடிய IP முகவரிகள் மட்டுமே. MAC சரிபார்ப்பில் தோல்வியுற்ற ஒரு packet பதிலளிக்காமல் நிராகரிக்கப்படுகிறது. எனவே அந்த port scan களுக்கு பதிலளிக்காது. மறுபக்கம்: auth சேவையகம் எதுவும் இல்லை. எனவே அணுகலை நீக்குவது என்பது சேவையகத்தில் ஒரு peer ஐ நீக்குவதைக் குறிக்கிறது.
முதலில் மெய்நிகராக்கத்தை சரிபார்க்கவும்
WireGuard-க்கு ஒரு kernel தேவை, அதில் நீங்கள் module ஐ ஏற்றலாம். ஒரு KVM VPS-ல் இது உடனே வேலை செய்யும். Host kernel-ஐ பகிரும் container மெய்நிகராக்கத்தில் — OpenVZ, LXC — முதல் command ஆனது RTNETLINK answers: Operation not supported பிழையுடன் தோல்வியடையும். அதற்கு பதிலாக wireguard-go userspace செயலாக்கம் பயன்படுத்தப்படும். முதலில் sudo modprobe wireguard && echo ok கொண்டு சரிபார்க்கவும்.
விசைகளை கசியவிடாமல் உருவாக்குதல்
அனைவருக்கும் படிக்கக்கூடிய /etc/wireguard/server.key என்பது VPN இல்லாததற்கு சமம். பொதுவான umask 077 && wg genkey | sudo tee ... வரி நம்பக்கூடியதல்ல, ஏனெனில் sudo தனது சொந்த umask ஐ tee உருவாக்கும் கோப்பிற்குப் பயன்படுத்துகிறது. முறையை வெளிப்படையாக அமைக்கவும்.
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 ஒரு விருப்பத் தேர்வான pre-shared key ஐச் சேர்க்கிறது, ஒவ்வொரு config இலும் ஒரு வரி.
சேவையக இடைமுகம்: /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/32chmod 600 செய்யுங்கள்; கோப்பு அனைவருக்கும் அணுகக்கூடியது என்ற தொடக்க எச்சரிக்கை வந்தால், அதை நீங்கள் தவறவிட்டது என்று பொருள். Address என்பது சேவையகத்தின் சுரங்கத்திற்குள் உள்ள முகவரி. இது முழு VPN சப்நெட்டின் முகமூடியைக் கொண்டிருக்கும். நீங்கள் வெளியில் சந்திக்காத ஒரு வரம்பைத் தேர்ந்தெடுங்கள் — 192.168.1.0/24 உங்கள் கிளையண்டுகள் இணைந்துள்ள பாதி வீட்டு ரவுட்டர்களுடன் மோதுகிறது. அதனால் சுரங்கம் உள்ளக ரவுட்டுக்கு மௌனமாகத் தோல்வியடைகிறது.
சேவையகப் பக்கத்தில் ஒரு peer இன் AllowedIPs என்பது ஒரு /32. அது அந்தக் கிளையண் சொந்தமான ஒரே சுரங்க முகவரி. இரண்டு peer களுக்கு ஒரே allowed IP கொடுத்தால், அது கடைசியாக உள்ளமைக்கப்பட்டவருக்கு மாறுகிறது. முதலவர் போக்குவரத்தைப் பெறுவதை நிறுத்துகிறார். எங்கும் எந்தப் பிழையும் அச்சிடப்படுவதில்லை. SaveConfig ஐ அமைக்காமல் விடுங்கள். இல்லையெனில் wg-quick down இந்தக் கோப்பை நேரடி நிலையிலிருந்து மீண்டும் எழுதுகிறது.
பெட்டியை ஒரு ரவுட்டராக மாற்றுங்கள்
ஒரு Linux சர்வர் தனக்கு அனுப்பப்படாத பேக்கெட்களை நிராகரிக்கிறது. ஃபார்வர்டிங் மற்றும் source 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 கோப்பு filter மற்றும் NAT இரண்டையும் உள்ளடக்கியது. /etc/nftables.conf ஐ எழுதவும் — இது தற்போதுள்ள ruleset ஐ அழிக்கிறது, எனவே 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 வரை. பீர்கள் இணையத்தை அடையும், ஒருவரை ஒருவர் அடைய மாட்டார்கள்; peer-to-peer VPN க்கு iifname "wg0" oifname "wg0" accept ஐச் சேர்க்கவும். இதே செயின் ஒரு peer சர்வரில் எதைத் தொடலாம் என்பதையும் கட்டுப்படுத்துகிறது. இந்த சர்வர் 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 showwg-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 = 25AllowedIPs ஒரே நேரத்தில் இரண்டு வெவ்வேறு வேலைகளைச் செய்கிறது. இவற்றைக் குழப்பிக்கொள்வதே பெரும்பாலான WireGuard குழப்பங்களுக்குக் காரணம்.
வெளிச்செல்லும் போக்கில் இது ஒரு ரவுட்டிங் அட்டவணை. ஒரு peer-இன் AllowedIPs உடன் பேக்கெட்டின் இலக்கம் பொருந்தினால், அது மறைகுறியாக்கப்பட்டு அந்த peer-க்கு அனுப்பப்படுகிறது. 0.0.0.0/0, ::/0 அனைத்தையும் டனல் வழியே அனுப்புகிறது — இது முழு டனல்; சர்வர் டிஃபால்ட் ரவுட்டாகச் செயல்படுகிறது. ஸ்பிளிட் டனல் என்பது ஒரு குறுகிய பட்டியல்: AllowedIPs = 10.8.0.0/24, 10.20.0.0/16 VPN போக்கையும் சர்வருக்குப் பின்னால் உள்ள ஒரு தனியார் நெட்வொர்க்கையும் கடத்துகிறது; மற்ற அனைத்தும் தன் லோக்கல் ரவுட்டைத் தக்கவைத்துக்கொள்கிறது. இந்தக் குறுகிய பட்டியல்தான் சேவைகளைப் பொது இணையத்திலிருந்து முற்றிலும் விலக்கி வைக்க உதவுகிறது — டனல் முகவரியுடன் பிணைக்கப்பட்ட VPS-இல் உள்ள தனியார் Nextcloud நிகழ்வு, அல்லது அதே பெட்டியில் இயங்கும் நெஸ்டட்-விர்ச்சுவலைசேஷன் லேப் VM-கள், peer-களுக்கு அணுகக்கூடியதாகவும் மற்ற அனைவருக்கும் கண்ணுக்குத் தெரியாததாகவும் இருக்கின்றன.
உள்வரும் போக்கில் இது ஒரு அணுகல்-கட்டுப்பாடு பட்டியல். ஒரு peer-இலிருந்து வந்த மறைகுறியாக்கம் நீக்கப்பட்ட பேக்கெட், அந்த peer-இன் AllowedIPs பட்டியலில் அதன் மூல முகவரி இல்லையென்றால், கைவிடப்படுகிறது. அதனால்தான் சர்வர் லேப்டாப்புக்காக 10.8.0.2/32 ஐப் பட்டியலிடுகிறது: அங்கு 0.0.0.0/0 என்ற உள்ளீடு இருந்தால், அந்தக் கிளையன்ட் டனலில் எந்த முகவரியாக வேண்டுமானாலும் போலியாக உருவாக்கலாம்.
PersistentKeepalive NAT-க்குப் பின்னால் உள்ள கிளையன்டுகளுக்கானது. அங்கு பேக்கெட்டுகள் ஓடிக்கொண்டிருக்கும்போது மட்டுமே ரவுட்டர் அந்த UDP மேப்பிங்கைத் திறந்திருக்கும். அது காலாவதியானதும், சர்வரால் கிளையன்டை அடைய முடியாது. PersistentKeepalive = 25 அந்த மேப்பிங்கைத் திறந்தே வைக்கிறது — இதைச் சர்வரில் அல்லாமல் கிளையன்டில் அமைக்கவும்; பொது IP உள்ள சர்வரில் அமைக்க வேண்டாம்.
DNS, மற்றும் யாரும் கவனிக்காத கசிவு
AllowedIPs = 0.0.0.0/0 உள்ள நிலையில் no 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 ஐ input chain இல் சேர்க்கவும் — அந்த வரியை அமைத்துவிட்டு ரிசால்வரை மறந்துவிடவும்; எதுவுமே ரிசால்வ் ஆகாது.
Linux கிளையன்டுகளில் 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 என்பது peer-ஐ latest handshake இல்லாமல் பட்டியலிடுகிறது, மேலும் client பின்வரும் பதிவை எழுப்புகிறது:
Handshake for peer 1 (10.0.0.10:51820) did not complete after 5 seconds, retrying (try 2)எதுவும் வரவில்லை, அல்லது எதுவும் ஏற்கப்படவில்லை. வரிசைப்படி: UDP 51820 துறை VPS firewall-ல் மற்றும் உங்கள் provider-ன் நெட்வொர்க் firewall-ல் திறந்திருக்கிறதா — பெரும்பாலான பேனல்களில் இது தனியான ஒரு கட்டுப்பாடு; Endpoint முகவரியும் துறையும் சரியாக உள்ளதா; திறவுகோல்கள் மாறிவிட்டனவா. Client-ன் [Peer] தொகுதியில் உள்ள திறவுகோல் சேவையகத்தின் பொது திறவுகோலாக இருக்க வேண்டும், மறுதலையும் அப்படியே — தனிப்பட்ட திறவுகோலை, அல்லது client-ன் சொந்த பொது திறவுகோலை ஒட்டினால், இதே அறிகுறி வரும். சேவையகத்தில் sudo tcpdump -ni any udp port 51820 என்பது பேக்கெட்டுகள் ஏதேனும் வந்து சேர்ந்ததா என்பதைக் காட்டுகிறது. kernel module இயல்பாக எதையும் பதிவு செய்வதில்லை; WireGuard செய்திகள் dmesg-ல் தோன்றுவது நீங்கள் dynamic debug-ஐ (echo module wireguard +p | sudo tee /sys/kernel/debug/dynamic_debug/control) இயக்கிய பிறகே, அது இயக்கத்தில் இருந்தால், திறவுகோல் பொருத்தமின்மை invalid-MAC drop ஆகத் தெரியும்.
கைகுலுக்கல் வேலை செய்கிறது, இணையம் இல்லை. ping 10.8.0.1 வெற்றியடைகிறது ஆனால் ping 1.1.1.1 காலக்கெடு முடிகிறது: forwarding அல்லது NAT இல்லை. sysctl net.ipv4.ip_forward 1 என்று படிக்கிறதா எனச் சரிபாருங்கள், பிறகு client ping செய்யும்போது கவுண்டர்களை sudo nft list ruleset அல்லது sudo iptables -t nat -L POSTROUTING -n -v கொண்டு கவனியுங்கள். masquerade விதியில் பூஜ்ய பேக்கெட்டுகள் என்பது அதன் egress interface பெயர் தவறு என்று பொருள்; கவுண்டர் உயர்ந்து பதில்கள் இல்லை என்றால் forward chain policy-ஐ நோக்கி சுட்டிக்காட்டுகிறது.
இணையம் வேலை செய்கிறது, பெயர்கள் இல்லை. ping 1.1.1.1 வெற்றியடைகிறது மேலும் curl https://example.com Could not resolve host என்று திரும்புகிறது. DNS வரி விடுபட்டது, அல்லது அது tunnel-க்குள் இருந்து அணுக முடியாத resolver-ஐ குறிப்பிடுகிறது.
சில HTTPS தளங்கள் நின்றுவிடுகின்றன. SSH மற்றும் ping சரியாக இருக்கின்றன; பெரிய பக்கங்கள் இறுத்து நிற்கின்றன. அது path MTU: tunnel மேலதிக சுமையைச் சேர்க்கிறது, மேலும் நடுவில் உள்ள சில இணைப்புகள் ICMP செய்தி திரும்பாமலேயே பெரிய பேக்கெட்டுகளைக் கைவிடுகின்றன. Client-ல் MTU-ஐ குறைங்கள் [Interface] — 1420 முயற்சிக்கவும், பிறகு 1380, பிறகு 1280.
Interface தொடங்க மறுக்கிறது. Address already in use என்பது வேறொரு செயல்முறை UDP 51820-ஐ பிடித்துள்ளது என்று பொருள். தோல்வியடைந்த up-க்குப் பிறகு Cannot find device wg0 என்பது பொதுவாக config நிராகரிக்கப்பட்டது என்று பொருள்; journalctl -u wg-quick@wg0 -n 50-ஐ படியுங்கள்.
Streisand அல்லது OpenVPN இலிருந்து இடம்பெயர்தல்
Streisand பராமரிக்கப்படாமல் அதன் repository காப்பகப்படுத்தப்பட்டது. கைவிடப்பட்ட automation மீது VPN ஐ இயக்குவது மெதுவான பாதுகாப்புப் பிரச்சினையாகும். இதற்கு in-place upgrade கிடையாது. OpenVPN இன் PKI மாற்றப்படமாட்டாது. WireGuard இல் certificates, CA மற்றும் expiry ஏதுமில்லை. எனவே ஒவ்வொரு client க்கும் புதிய key pair கிடைக்கிறது.
இணையாக இடம்பெயருங்கள். ஒரே server இல் UDP 51820 இல் WireGuard மற்றும் 1194 இல் OpenVPN ஒன்றாக இயங்கும். wg0 ஐ எழுப்புங்கள். client களை ஒவ்வொருவராக மாற்றுங்கள். பின்னர் பழைய service ஐ நிறுத்துங்கள். OpenVPN இன் username/password மற்றும் revocation மாதிரி இங்கு பொருந்தாது. நீங்கள் accounts அல்லது audit trail தேவைப்படின், அதை WireGuard இன் மேல் அடுக்கவும்.
காப்புப்பிரதிகள், மேம்படுத்தல்கள், மற்றும் அளவில் சுமையேற்பவை
/etc/wireguard தான் சேவையகம். இதைக் காப்புப் பிரதி எடுக்கவும் (sudo tar czf wg-backup.tgz -C /etc wireguard, mode 600, சேவையகத்திற்கு வெளியே சேமிக்கவும்); புதிய VPS-ல் நிமிடங்களில் மீண்டும் கட்டமைக்கலாம். சேவையகத்தின் தனிப்பட்ட திறவிகையை இழந்தால் ஒவ்வொரு வாடிக்கையாளர் அமைப்பும் மீண்டும் வழங்கப்பட வேண்டும், ஏனெனில் வாடிக்கையாளர்கள் சேவையகத்தின் பொது திறவிகையை பொருத்தி வைக்கிறார்கள். மேம்படுத்தல்கள் ஒரு சாதாரண apt upgrade ஆகும்; கர்னல் மேம்படுத்தலுக்கு ஒரு reboot தேவை. நீங்கள் இயக்கியிருந்தால் wg-quick@wg0 தானாகவே மீண்டும் தொடங்கும்.
ஒவ்வொரு peer-ன் நிலையும் சிறியது; குறியாக்கம் கர்னலில் இயங்குகிறது. எனவே வரம்பு இந்த அமைப்பில் இல்லை — உங்கள் VPS-ன் CPU மற்றும் அலைவரிசை ஒதுக்கீடு தான் வரம்பு. வெளியிடப்பட்ட எண்ணிக்கையை நம்பாமல் சுரங்கப்பாதை வழியாக iperf3 கொண்டு அளவிடவும். அளவில் சுமையேற்பது செயல்பாடுகள் தான். ஒவ்வொரு peer-க்கும் தனித்துவமான சுரங்கப்பாதை IP தேவை. அறுபது [Peer] தொகுதிகளை கைமுறையாக திருத்துவது தான் நகல் AllowedIPs உள்நுழையக் காரணம்: அமைப்புகளை ஒரு script-லிருந்து உருவாக்கவும். ஒரு சேவையகம் என்பது ஒரு UDP முனையம் மற்றும் ஒரு தோல்விப் புள்ளி. WireGuard-ல் clustering இல்லை: redundancy என்பது தனிப்பட்ட திறவிகைகளுடன் ஒரு இரண்டாவது சேவையகம் என்று பொருள். திறவிகை மாற்றம் கைமுறையாகவே இருக்கும், எனவே யார் எந்த திறவிகையை வைத்திருக்கிறார்கள் மற்றும் ஒரு திறவிகையை எப்படி ரத்து செய்வது என்பதை எழுதி வைக்கவும்.
இவை அனைத்திற்கும் நீங்கள் கட்டுப்படுத்தும் ஒரு Linux சேவையகம் தேவை — ஒரு பொது IP, நீங்கள் module ஏற்றக்கூடிய ஒரு கர்னல், மற்றும் நீங்கள் முழுமையாக வைத்திருக்கும் ஒரு firewall.
FAQ
WireGuard ஹேண்ட்ஷேக் ஏன் ஒருபோதும் முடிவதில்லை?
wg show ஒரு peer-ஐ latest handshake இல்லாமல் பட்டியலிடுவது என்பது பேக்கெட்டுகள் வரவில்லை அல்லது ஏற்கப்படவில்லை என்று பொருள். VPS ஃபயர்வால் மற்றும் உங்கள் provider-ன் தனி நெட்வொர்க் ஃபயர்வால் இரண்டிலும் UDP 51820-ஐ சரிபார்க்கவும். Endpoint host மற்றும் port-ஐ உறுதிப்படுத்தவும். பிறகு keys மாறிமாறி விடவில்லை என்று சரிபார்க்கவும் — client-ன் [Peer] block கட்டாயம் server-ன் public key-ஐ வைத்திருக்க வேண்டும். sudo tcpdump -ni any udp port 51820 சர்வரில் பேக்கெட்டுகள் ஏதாவது வருகிறதா என்பதைக் காட்டும்; dmesg WireGuard-ன் ஹேண்ட்ஷேக் தோல்விகளை நீங்கள் dynamic debug (echo module wireguard +p | sudo tee /sys/kernel/debug/dynamic_debug/control) இயக்கிய பிறகு மட்டுமே தெரிவிக்கும். அப்போது key பொருத்தமின்மை invalid-MAC drop ஆகத் தெரியும்.
டனல் இணைகிறது ஆனால் எனக்கு இணையம் இல்லை. என்ன விடுபட்டுள்ளது?
ping 10.8.0.1 வேலை செய்யும்போது ping 1.1.1.1 காலாவதியாவது forwarding அல்லது NAT-ஐ சுட்டிக்காட்டுகிறது. sysctl net.ipv4.ip_forward மதிப்பு 1 என்று உள்ளதையும், அது /etc/sysctl.d/-ல் அமைக்கப்பட்டுள்ளதையும் உறுதிப்படுத்தவும்; ரீபூட்டில் மறைந்துவிடும் sysctl -w மட்டும் போதாது. பிறகு masquerade rule உங்கள் உண்மையான egress interface-லிருந்து ip route show default — enp1s0 அல்லது ens3, அரிதாக eth0 — எதைப் பெயரிடுகிறது என்று சரிபார்க்கவும்.
எனது client config-ல் DNS = வரி தேவையா?
முழு டனலும் இருக்கும்போது DNS = வரி இல்லையென்றால், client உள்ளூர் நெட்வொர்க்கிலிருந்து கற்றுக்கொண்ட resolver-ஐ தொடர்ந்து பயன்படுத்தும். மற்ற எல்லாவற்றையும் டனல் வழியே அனுப்பும்போதும், அந்த DNS கேள்விகள் உள்ளூர் இணைப்பு வழியே cleartext-ல் வெளியேறும். DNS-ஐ ஒரு public resolver-ஐ நோக்கி அமைக்கவும், அல்லது unbound/dnsmasq-ஐ 10.8.0.1-ல் bind செய்து இயக்கவும், மேலும் input chain-ல் udp dport 53 iifname "wg0"-ஐ திறக்கவும்.
AllowedIPs உண்மையில் எதைக் கட்டுப்படுத்துகிறது?
இது இரண்டு வேலைகளைச் செய்கிறது. வெளிச்செல்லும் போக்குவரத்தில் இது ஒரு routing table: ஒரு peer-ன் AllowedIPs-உடன் பொருந்தும் போக்குவரத்து மறையாக்கப்பட்டு அந்த peer-க்கு அனுப்பப்படுகிறது. உள்வரும் போக்குவரத்தில் இது ஒரு access-control list: மறையாக்கம் நீக்கப்பட்ட ஒரு பேக்கெட்டின் மூலம் அந்த peer-ன் AllowedIPs-க்கு வெளியே இருந்தால் அது கைவிடப்படுகிறது. எனவே தான் server பக்கம் ஒவ்வொரு client-க்கும் ஒரு /32 பட்டியலிடப்படுகிறது, அதே சமயம் client பக்கம் 0.0.0.0/0 பட்டியலிடலாம்.
WireGuard எந்த VPS-ல் வேண்டுமானாலும் இயங்குமா?
KVM VPS-ல் இது in-kernel module உடன் கூடுதல் அமைப்பு இல்லாமல் இயங்கும். host kernel-ஐ பகிரும் container virtualisation-ல், உதாரணமாக OpenVZ அல்லது LXC, modprobe wireguard பிழையுடன் Operation not supported தோல்வியடையும். அதற்கு பதிலாக wireguard-go userspace implementation-ஐ பயன்படுத்தலாம். வேறு எதையும் செய்வதற்கு முன்பு sudo modprobe wireguard && echo ok-ஐ இயக்கவும்.