दुई प्रयोगशालाले एउटै VPN टोपोलोजी मोडेल गर्न सक्छन् र पूर्ण रूपमा फरक तरिकाले असफल हुन सक्छन्: एउटा नेटवर्क नेमस्पेसमा बस्छ, अर्को होस्टको आफ्नै रुटमा। नेमस्पेस संस्करणले प्रत्येक इन्टरफेस, रुट र सकेटलाई तपाईंले मेटाउन सक्ने सन्दर्भमा राख्छ, जबकि होस्ट संस्करण छिटो सुरु हुन्छ र पछाडि स्थिति छोड्छ। त्यही बाँकी स्थिति एक महिनापछि दोस्रो प्रयोगशाला दोहोर्याउन गाह्रो हुनुको कारण हो। पहिले सफाइको तुलना गर्नुहोस्, किनकि प्रयोग दुई पटक चलाउन सक्नुहुन्छ कि भन्ने यसले निर्धारण गर्छ।

एउटै प्रयोगशाला बनाउने दुई तरिका, र कहिले कुन जित्छ

होस्ट-रुट प्रयोगशालामा तपाईंले काम गरिरहेको मेसिनमा टनेल इन्टरफेस र रुटहरू थप्नुहुन्छ, त्यसैले प्रयोगले तपाईंको shell, प्याकेज म्यानेजर र अन्य हरेक जडानसँग भाग्य साझा गर्छ। नेमस्पेस प्रयोगशालामा प्रत्येक भूमिकाले इन्टरफेस, ठेगाना, रुट र सकेटको आफ्नै स्ट्याक पाउँछ, र नेमस्पेस मेटाउँदा त्यो सबै हट्छ। कुनै पनि मोडेल बढी सही छैन, किनकि तिनीहरू फरक प्रश्नको जवाफ दिन्छन्। विषय राउटिङ र फर्वार्डिङ भए नेमस्पेस रोज्नुहोस्, र विषय एक डेस्कटप क्लाइन्ट कसरी एकीकृत हुन्छ भन्ने भए होस्ट प्रयोगशाला रोज्नुहोस्।

AspectNamespace labHost-route lab
IsolationFull stack per roleShares the host stack
CleanupDelete named namespacesManual route and rule removal
RealismStrong for routingNeeded for GUI clients

दुवैलाई मिसाउनु सामान्य गल्ती हो: होस्ट क्लाइन्टसँग मात्र परीक्षण गरिएको नेमस्पेस प्रयोगशाला दुवै मध्ये कुनै पनि व्यवस्थाबारे केही प्रमाणित गर्दैन। पहिलो लिङ्क बनाउनु अघि तपाईं कुन प्रश्न सोधिरहनुभएको छ भन्ने निर्णय गर्नुहोस्।

प्रत्येक भूमिकाका लागि एक सन्दर्भ, जानाजान जोडिएको

प्रत्येक भूमिकाका लागि एक नेमस्पेस बनाउनुहोस् र प्रत्येक veth जोडीको प्रत्येक छेउ त्यसलाई राख्ने सन्दर्भमा सार्नुहोस्। पहिला चार आदेश आकार देख्न पर्याप्त छन्:

ip netns add client
ip netns add gateway
ip link add veth-c type veth peer name veth-g
ip link set veth-c netns client

प्रयोगशालालाई होस्टमा कुनैसँग नओभरल्याप हुने दायरा दिनुहोस्, र सुरु गर्नु अघि कुन नेमस्पेसले कुन ठेगाना राख्छ लेख्नुहोस्। काम गर्ने प्रयोगशालालाई दुई अलग बाटो चाहिन्छ: VPN एन्डपोइन्टले आफ्नो साथीसम्म पुग्न बाहिरी बाटो, र सुरक्षित स्रोतका लागि फर्कने बाटो। तिनीहरूलाई दुई निर्णयका रूपमा मोडेल गर्नुहोस्, किनकि केवल बाहिर जाने आधा भाग मात्र बनाउने प्रयोगशाला ह्यान्डशेक परीक्षण पास गर्छ र अनुप्रयोग परीक्षणमा असफल हुन्छ।

फर्वार्डिङ भूमिका नै प्रयोगशाला रोचक हुने ठाउँ हो

एउटा भूमिकाले फर्वार्ड गर्नुपर्छ, जसको अर्थ त्यो नेमस्पेसभित्र फर्वार्डिङ सक्षम गर्नु र डिजाइनलाई चाहिने नियम थप्नु हो। फर्वार्डिङ स्थिति प्रत्येक नेमस्पेसको लागि छुट्टै हुन्छ, त्यसैले होस्टको सेटिङ प्रयोगशालाका लागि अप्रासंगिक छ र प्रयोगशालाको सेटिङ बाहिर चुहिँदैन, जस्तै नेटवर्क नेमस्पेस कागजात वर्णन गर्छन्। WireGuard ले इन्टरफेस र यसको बाहिरी सकेट फरक-फरक नेमस्पेसमा बस्न सक्ने कुरा अभिलेख गर्छ, जुन उपयोगी उपाय र आफैंलाई अलमल्याउने उत्कृष्ट तरिका हो। इन्टरफेस सार्दा जडानको हरेक भाग एउटै तरिकाले सर्छ भनी नमान्नुहोस्।

परीक्षण प्याकेटपछि फर्वार्डिङ काउन्टर जाँच्नुहोस्, किनकि कहिल्यै नमिलेको नियम र प्याकेट फाल्ने नियम रुट तालिकामा एउटै देखिन्छन्। काउन्टरहरूले मात्र तिनीलाई छुट्याउँछन्।

आधाररेखा अभिलेख गर्नुहोस्, त्यसपछि एउटा रुट तोड्नुहोस्

के छ त्यसको अभिलेख गरेर सुरु गर्नुहोस्, प्रत्येक लाइनको छेउमा सन्दर्भ लेख्नुहोस्। नेमस्पेसहरू पढ्नुहोस्, त्यसपछि परीक्षण गन्तव्यले तीमध्ये एउटाभित्र लिने रुट, त्यसपछि त्यो बोक्ने लिङ्कमा काउन्टरहरू:

ip netns list
ip -n client route get 10.0.0.5
ip -n gateway -s link show veth-g

तेस्रो आदेश त्यो हो जुन मानिसहरूले छोड्छन्, र प्रमाण त्यहीँ बस्छ: फालिएका र त्रुटिका काउन्टरहरूले प्याकेट फर्वार्डिङ भूमिकासम्म पुग्यो कि भन्ने बताउँछन्। परिवर्तनपछि तीही तीन दृश्य क्याप्चर गर्नुहोस्, र प्रमाण तपाईंको सम्झना नभई diff होस्। त्यसपछि ठ्याक्कै एउटा कुरा तोड्नुहोस्, या त रुट मेटाएर या फर्वार्डिङ बाटोमा अस्वीकार नियम थपेर, र तपाईंले अनुमान गरेको लक्षण पुष्टि गर्नुहोस्: जवाफविना पूरा भएको ह्यान्डशेक, वा टाइमआउटको सट्टा नाम समाधानमा असफलता। केवल सफलता देखाउने प्रयोगशालाले धेरै थोरै सिकाउँछ।

सफाइले नै अर्को पटक चलाउनु दोहोर्याउन योग्य बनाउँछ

सफाइलाई तपाईंले नाम दिएका स्रोतहरूमा मात्र सीमित राख्नुहोस्, किनकि पूर्ण फायरवाल रिसेट वा होस्ट रुट हटाउनु पुनरुत्पादनशीलता होइन, त्यो दोस्रो घटना हो। टोपोलोजी, सटीक आदेश र तपाईंले अपेक्षा गरेका अवलोकनहरू सुरक्षित गर्नुहोस्, ताकि अर्को पटकको चालले अघिल्लो स्थिति कुन सन्दर्भमा थियो भनी अनुमान गर्नुको सट्टा त्यही असफलता पुनःउत्पादन गरोस्। त्यो अभिलेखविना प्रयोगशाला कथा हो, प्रक्रिया होइन।

प्रयोगशालाका लागि स्थानीय रूपमा उत्पन्न पहुँच विवरण प्रयोग गर्नुहोस्, र उत्पादन खाताहरूलाई साझा उदाहरणबाट टाढा राख्नुहोस्। त्यसपछि प्रत्येक नेमस्पेस मेटाउनुहोस् र होस्टको दृश्य अपरिवर्तित छ भनी पुष्टि गर्नुहोस्, यही यो मोडेल छान्नुको पूरा कारण हो। जुन प्रयोगशाला तपाईं सफा रूपमा हटाउन सक्नुहुन्न त्यो थप चरणहरूसहितको होस्ट परिवर्तन हो।

सम्बन्धित लेखहरू