WireGuard హ్యాండ్షేక్ పనిచేస్తుంది, కానీ కార్యాలయ సబ్నెట్ ప్రతిస్పందించడం లేదు
WireGuard అమలులో ఉంది మరియు సర్వర్కు పింగ్ వెళ్తుంది, అయినా దాని LANలో ఏదీ ప్రతిస్పందించడం లేదు. క్లయింట్ ప్రిఫిక్స్, సర్వర్ ఫార్వార్డింగ్ మరియు ప్రతిస్పందన మార్గాన్ని తనిఖీ చేయండి.
హ్యాండ్షేక్ పూర్తవుతుంది, wg show ఇటీవలి బదిలీని నివేదిస్తుంది, మరియు సర్వర్ యొక్క టన్నెల్ చిరునామా పింగ్కు ప్రతిస్పందిస్తుంది. కానీ సర్వర్ LANలోని హోస్ట్ ప్రతిస్పందించదు. మూడు షరతులు ఒకేసారి నెరవేరాలి: క్లయింట్ LAN ప్రిఫిక్స్ను టన్నెల్కు రూట్ చేయాలి, సర్వర్ ప్యాకెట్లను ఫార్వార్డ్ చేయాలి, మరియు ప్రతిస్పందనకు తిరిగి వెళ్లే మార్గం అవసరం. మూడింటిలో ఒకటి లేకపోతే లక్షణం అదే ఉంటుంది.
AllowedIPs ఒకేసారి యాక్సెస్ జాబితా మరియు రూటింగ్ పట్టిక
క్లయింట్లో, AllowedIPs జాబితా ఆ పీర్కు ఏమి పంపవచ్చు మరియు WireGuard ఏ మార్గాలను ఇన్స్టాల్ చేస్తుంది అనే రెండింటినీ నిర్ణయిస్తుంది. సర్వర్ టన్నెల్ చిరునామాను మాత్రమే జాబితా చేసే పీర్ నమోదు ఒకే హోస్ట్ మార్గాన్ని ఇన్స్టాల్ చేస్తుంది, కాబట్టి LAN గమ్యస్థానాలు ఎప్పుడూ టన్నెల్లోకి ప్రవేశించవు. LAN ప్రిఫిక్స్ను జోడించడం మొదట తనిఖీ చేయవలసిన విషయం, మరియు కాపీ చేసిన కాన్ఫిగరేషన్ తర్వాత ఎక్కువగా మిస్ అయ్యే మార్పు కూడా అదే. డిఫాల్ట్ మార్గానికి విస్తరించిన పీర్ వేరే డిజైన్, మరియు అది క్లయింట్ ఇంటర్నెట్ ట్రాఫిక్ను కూడా కదిలిస్తుంది.
హోస్ట్ మార్గాన్ని మరియు LAN ప్రిఫిక్స్ను వేర్వేరు నమోదులుగా ఉంచండి. కార్యాలయంలో రెండు సబ్నెట్లు ఉంటే రెండూ జాబితాలో ఉంటాయి, మరియు మిస్ అయిన రెండవ ప్రిఫిక్స్ పూర్తి కాని, ఎంపిక చేసినట్లు కనిపించే వైఫల్యాన్ని సృష్టిస్తుంది.
[Peer] PublicKey = <server public key> Endpoint = vpn.example.net:51820 AllowedIPs = 10.66.0.1/32, 192.168.50.0/24
ఫార్వార్డింగ్ మరియు అనువాదం సర్వర్లోనే ఉండాలి
సర్వర్కు IP ఫార్వార్డింగ్ ప్రారంభించబడి, టన్నెల్ నుండి వచ్చే ట్రాఫిక్ను అంగీకరించే ఫార్వార్డ్ నియమం, మరియు దాని LAN ఇంటర్ఫేస్ వైపు అనువాద నియమం అవసరం. ఈ అనువాదమే కార్యాలయ నెట్వర్క్లోని ప్రతి హోస్ట్ను తాకకుండా డిజైన్ను పనిచేయిస్తుంది. అప్పుడు ప్రతిస్పందనలు LAN ఎప్పుడూ వినని చిరునామాకు కాదు, సర్వర్కు తిరిగి వస్తాయి. అది లేకపోతే ప్రతి హోస్ట్కు టన్నెల్ సబ్నెట్కు మార్గం మరియు దానిని అనుమతించే ఫైర్వాల్ నియమం అవసరం, ఇది మరొకరు నిర్వహించే నెట్వర్క్లో అరుదుగా ఆమోదయోగ్యం.
sysctl -w net.ipv4.ip_forward=1 iptables -A FORWARD -i wg0 -j ACCEPT iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
చేతితో జోడించిన నియమాలు రీబూట్లో మాయమవుతాయి, కాబట్టి సర్వర్ కాన్ఫిగరేషన్లోని hook ఆదేశాలతో వాటిని ఇంటర్ఫేస్కు కట్టండి. తన ఇంటర్ఫేస్ కంటే ఎక్కువ కాలం జీవించే నియమ సమూహమే, ఇక లేని టన్నెల్ కోసం యంత్రం ట్రాఫిక్ను అనువదించడానికి దారి.
LAN కదిలింది కానీ నియమం కదలలేదు
కార్యాలయ సబ్నెట్ను తిరిగి నంబర్ చేసే రౌటర్ మార్పిడి ఈ వైఫల్యానికి సాంప్రదాయ రూపం. టన్నెల్ ఆన్లోనే ఉంటుంది, హ్యాండ్షేక్ తాజాగానే ఉంటుంది, మరియు సర్వర్ వెనుక ఏదీ ప్రతిస్పందించదు, ఎందుకంటే అనువాద నియమం ఇంకా పాత చిరునామాను పేర్కొంటుంది. ఇన్స్టాలర్ స్క్రిప్ట్లు తరచుగా సర్వర్ LAN చిరునామాను POSTROUTING నియమంలో ఇముడ్చుతాయి, మరియు తిరిగి నంబరింగ్ తర్వాత ఆ చిరునామా ఏ ఇంటర్ఫేస్లోనూ ఉండదు. అప్పుడు ప్యాకెట్లు ప్రతిస్పందించలేని గమ్యస్థానానికి తిరిగి రాయబడతాయి.
iptables -t nat -n -L POSTROUTING ip -br addr show
రెండు అవుట్పుట్లను పోల్చండి. ఇంటర్ఫేస్ జాబితాలో కనిపించని అనువాద లక్ష్యమే బగ్, మరియు ఒకసారి చూసిన తర్వాత దాన్ని సరిచేయడం ఒక పంక్తి మార్పు. నియమం WireGuard కాన్ఫిగరేషన్లో కాకుండా రూపొందించిన unitలో ఉండవచ్చు, కాబట్టి సవరణ తర్వాత ఆ unitను మళ్లీ లోడ్ చేసి, తదుపరి బూట్ మీ మార్పును తిరిగి రాయదని నిర్ధారించుకోండి.
NAT వెనుక ఉన్న రెండు సైట్లకు కలిసే స్థలం అవసరం
ఏ పక్షం లోపలికి వచ్చే కనెక్షన్లను అంగీకరించనప్పుడు, ఆచరణాత్మక సమాధానం పబ్లిక్ చిరునామా మరియు రెండు WireGuard ఇంటర్ఫేస్లు ఉన్న చిన్న హోస్ట్. ప్రతి సైట్ బయటకు కనెక్ట్ అవుతుంది, మధ్య హోస్ట్ ప్రతి పీర్ LANను తన AllowedIPs, అంటే తన జాబితాలో, జాబితా చేస్తుంది, మరియు ఫార్వార్డింగ్ రెండు టన్నెల్ల మధ్య ప్యాకెట్లను తరలిస్తుంది. ఏ సైట్ ఫైర్వాల్లో ఏదీ మార్చాల్సిన అవసరం లేదు, అందుకే ఈ డిజైన్ సులభంగా వ్యాపిస్తుంది.
సైట్ల మధ్య రూటింగ్ అసలు మూల చిరునామాలను నిలుపుతుంది మరియు అందువల్ల ప్రతి హోస్ట్ లాగింగ్ను అర్థవంతంగా ఉంచుతుంది. రెండు LANలు అతివ్యాప్తి చెందినప్పుడు మధ్య హోస్ట్లో అనువాదం సులభం, కానీ లాగ్లలో మూల గుర్తింపు కోల్పోయే ధరకు. ఎంచుకునే ముందు ఏ లక్షణం ముఖ్యమో నిర్ణయించండి.
నాలుగు తనిఖీలతో పొరలను వేరు చేయండి
మూడు విషయాలు మార్చి ఆశించడం కంటే ప్రతి పొరకు ఒక తనిఖీ చేయండి. మొదటిది ప్రతి పీర్కు హ్యాండ్షేక్ వయస్సు మరియు కౌంటర్లను చూపిస్తుంది. రెండవది క్లయింట్ ఆ గమ్యస్థానాన్ని నిజంగా టన్నెల్కు రూట్ చేస్తుందా అని చూపిస్తుంది. మూడవది మరియు నాల్గవది అభ్యర్థన చేరిందా మరియు చేరిన తర్వాత ఏదైనా విధానం దాన్ని వదిలేసిందా అని చెబుతాయి.
wg show ip route get 192.168.50.20 tcpdump -ni wg0 icmp iptables -vnL FORWARD --line-numbers
చేరి కూడా ప్రతిస్పందన రాని అభ్యర్థన ప్రతిస్పందన మార్గాన్ని లేదా LAN హోస్ట్ను సూచిస్తుంది. ఎప్పుడూ చేరని అభ్యర్థన AllowedIPs లేదా క్లయింట్ మార్గాన్ని సూచిస్తుంది. ఈ రెండు ఫలితాలకు వేర్వేరు సరిదిద్దులు అవసరం, మరియు క్యాప్చర్ వాటిని వేరు చేస్తుంది.