टनेल सुरू आहे, handshake दर दोन मिनिटांनी होतो, आणि दुसऱ्या बाजूला नेमका एक पत्ता उत्तर देतो. पीअरच्या टनेल पत्त्यावर ping चालतात; त्याच्या मागे काहीही चालत नाही. कोणीतरी इंटरफेसची संरचना वाचतो, होस्ट उपसर्ग पाहतो आणि मास्क चुकीचा आहे असा निष्कर्ष काढतो. तो /24 पर्यंत वाढवल्याने ping काही काळ सुधारतो आणि नंतर दुसरे काहीतरी तुटते. उपसर्ग कधीही कारण नव्हता, आणि गायब मार्ग हा मास्क नियंत्रित करतो तो नाही.

इंटरफेस उपसर्ग प्रत्यक्षात काय तयार करतो

Linux मध्ये इंटरफेसला पत्ता देणे त्या उपसर्गासाठी जोडलेला मार्ग तयार करते. होस्ट उपसर्ग दिल्यास जोडलेला मार्ग एक पत्ता व्यापतो. /24 दिल्यास तो 256 व्यापतो, आणि त्यातील प्रत्येक आता त्या दुव्यावर पोहोचण्यायोग्य मानला जातो.

ip -4 addr show dev wg0
ip -4 route show dev wg0
ip route get 10.80.7.1

होस्ट उपसर्ग बिंदू-ते-बिंदू टनेलसाठी पूर्णपणे सामान्य निवड आहे, कारण दुसऱ्या टोकाला नेमका एक पीअर असतो. तिसरा आदेश हाच वापरकर्त्याच्या प्रश्नाचे उत्तर देतो: कर्नल त्या गंतव्यासाठी कोणता इंटरफेस वापरेल ते सांगतो, आणि कोणताही मार्ग जुळत नसल्यास काहीही उपयुक्त दाखवत नाही.

हेच लक्षणाचे संपूर्ण स्पष्टीकरण. एक पत्ता उत्तर देतो कारण त्यासाठी जोडलेला मार्ग अस्तित्वात आहे, किंवा कारण पीअरच्या परवानगीच्या यादीत तो योगायोगाने आहे. बाकी सर्वांना मार्ग नाही आणि WireGuard सहभागी होण्यापूर्वीच तो टाकून दिला जातो. टनेल सर्व वेळ निरोगी असते, म्हणूनच handshake मोजणारा आश्वासक दिसत राहतो.

AllowedIPs एका नावाखाली दोन नियम आहेत

WireGuard ची प्रति-पीअर परवानगी यादी एकाच वेळी दोन कामे करते, आणि संरचनेची आखणी ती एकासारखी दाखवते. आत येताना पीअर कोणते स्रोत पत्ते सादर करू शकतो हे ती ठरवते. बाहेर जाताना पॅकेट कोणत्या पीअरला पाठवायचे हे ती निवडते, सर्वात विशिष्ट जुळणी शोधून.

या दोन्ही कामांपैकी कोणतेही राउटिंग नाही. कर्नलला अजूनही ठरवावे लागते की पॅकेट टनेल इंटरफेसचे आहे, यापूर्वी की WireGuard त्याकडे पाहील, आणि हा निर्णय राउटिंग तक्त्यातून येतो. विस्तृत परवानगी यादी असलेली पीअर नोंद स्वतःच मार्ग बसवत नाही.

म्हणूनच एखादी संरचना पूर्ण दिसू शकते आणि असममित वागू शकते. क्लायंट दुसऱ्या बाजूला पाठवतो कारण मार्ग अस्तित्वात आहे, आणि उत्तरे कधीही पोहोचत नाहीत कारण दुसऱ्या बाजूची परवानगी यादी क्लायंटच्या स्रोताला परवानगी देत नाही, किंवा कारण दुसऱ्या बाजूला परतीचा मार्ग नाही. दोन्ही दिशा वेगवेगळे निर्णय आहेत वेगवेगळ्या अपयशाच्या पद्धतींसह. तुम्ही कोणती चाचणी करत आहात हे लिहिणे निदानाचा अर्धा भाग आहे.

मार्ग कुठून येतो

तुम्ही wg-quick वापरत असल्यास, मार्ग तुमच्यासाठी प्रत्येक पीअरच्या परवानगी यादीतून तयार होतात, जोपर्यंत तुम्ही Table = off सेट केले नाही आणि नियंत्रण स्वतः घेतले नाही. हेच साधनाचे नोंदवलेले वर्तन आहे, आणि यामुळेच स्पष्ट मार्ग सूचनांशिवायही संरचना चालते.

sudo wg show wg0 allowed-ips
ip route show | grep wg0
sudo wg-quick strip wg0

परवानगी यादीची तुलना प्रत्यक्षात असलेल्या मार्गांशी करा. जो पीअर संपूर्ण सबनेटला परवानगी देतो पण फक्त एक होस्ट मार्ग तयार करतो, याचा अर्थ सहाय्यक कधीच चालला नाही, किंवा तुम्ही इंटरफेस थेट wg आणि ip ने चालवता, आणि मग तुमच्यासाठी काहीही मार्ग तयार करत नाही.

जेव्हा तुम्ही तो हाताने चालवता, तेव्हा मार्ग एक ओळ आहे आणि त्याचा आकार स्पष्ट आहे: गंतव्य इंटरफेसवाटे, गेटवे न बसविता कारण दुवा बिंदू-ते-बिंदू आहे. तो जोडणे खराब उपसर्गासाठी कोणताही उपाय नाही; हा असा अभिकल्पाचा गायब अर्धा भाग आहे ज्याने राउटिंग स्वतः घेतले.

रुंद उपसर्ग पीअर नोंद जोडत नाही

मोहक दुरुस्ती म्हणजे पत्ता /24 करणे जेणेकरून जोडलेला मार्ग सर्व्हरचे स्थानिक नेटवर्क व्यापेल. ते चालत असल्यासारखे वाटते, आणि चालत असल्यासारखे वाटण्याचे कारण म्हणजे जोडलेला मार्ग आता जुळतो, असा नाही की WireGuard ने काही नवीन शिकले.

तुम्ही हेही केले की संपूर्ण श्रेणी त्या दुव्यावर थेट पोहोचण्यायोग्य म्हणून दावा केला, त्यात ते पत्तेही समाविष्ट आहेत जे इतर पीअरचे आहेत किंवा सर्व्हरच्या मागे प्रत्यक्षात असलेल्या स्थानिक नेटवर्कचे आहेत. त्या पत्त्यांकडील रहदारी आता टनेलमध्ये जाते, आणि ती दुसऱ्या बाजूला बाहेर पडते का हे सर्व्हरच्या स्वतःच्या राउटिंगवर आणि परवानगी याद्यांवर अवलंबून आहे.

गुप्तलेखनाची बाजू कोणत्याही परिस्थितीत प्रभावित होत नाही. WireGuard ला पीअर निवडण्यासाठी परवानगी यादीत गंतव्य व्यापणारी नोंद अजूनही लागते, आणि दुसऱ्या बाजूला तुमचा स्रोत स्वीकारण्यासाठी तो व्यापणारी नोंद अजूनही लागते. रुंद इंटरफेस उपसर्ग यापैकी एकही देऊ शकत नाही.

काहीही बदलण्यापूर्वी दोन्ही दिशा पुष्टी करा

दोन्ही टोके वेगळी घ्या आणि प्रत्येकजण काय म्हणतो ते लिहा. क्लायंटवर मार्ग आणि पीअर नोंद; सर्व्हरवर आरशातील प्रतिमा अधिक त्याचा स्वतःचा परतीचा मार्ग:

ip route get 192.168.70.20
sudo wg show wg0 allowed-ips
sudo wg show wg0 latest-handshakes
sudo tcpdump -ni wg0 -c 10

कॅप्चर हेच दिशेबद्दलचे वाद मिटवते. बाहेर जाणारे पॅकेट टनेल इंटरफेसवर दिसत असतील आणि सर्व्हर काहीही नोंदवत नसेल, तर दूरचे टोक ते नाकारत आहे, सहसा कारण तुमचा स्रोत त्याच्या परवानगी यादीबाहेर आहे. जर काहीच दिसत नसेल, तर मार्ग गायब आहे किंवा दुसरीकडे निर्देश करतो.

मग सर्वात अरुंद टोक दुरुस्त करा. सर्व्हरच्या बाजूला तुमच्या क्लायंट पत्त्यासाठी परवानगी यादीत नोंद आणि क्लायंटच्या बाजूला गंतव्य सबनेटसाठी नोंद हा सामान्य आकार आहे, आणि तो इंटरफेस उपसर्गाला हात लावत नाही. उपसर्ग फक्त तेव्हाच वाढवा जेव्हा पत्ता योजना खरोखर त्या दुव्यावर सामायिक सबनेट इच्छिते, आणि ते दोषदुरुस्तीच्या पायरीऐवजी योजना बदल म्हणून करा.

संबंधित लेख