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

LAN ठेगानामा केही उत्तर नआउने कारण

नेमस्पेस पूर्ण नेटवर्क स्ट्याक हो: इन्टरफेस, रुट, फायरवाल नियम र निजी लूपब्याक। ip netns exec मार्फत सुरु गरिएको प्रक्रियाले त्यो स्ट्याक मात्र देख्छ, त्यसैले यसले बाँध्यो ठेगाना नेमस्पेस भित्र मात्र समाधान हुन्छ। होस्टको आफ्नै 127.0.0.1 पूर्ण रूपमा अर्कै लूपब्याक हो।

त्यसैले होस्टमा curl असफल हुन्छ जबकि नेमस्पेस भित्र उही आदेश सफल हुन्छ। एप्लिकेसन स्वस्थ छ; ठेगाना होस्टको स्ट्याकमा छैन, त्यति मात्र।

socat हपबाट एउटा पोर्ट प्रकाशित गर्नुहोस्

socat ले दुई स्ट्याकलाई प्रयोगकर्ता ठाउँमा जोड्छ, एउटा मात्र TCP पोर्ट पार गर्नुपर्दा यो पर्याप्त हुन्छ। होस्ट पक्ष LAN मा सुन्छ र स्वीकारिएको प्रत्येक जडानका लागि नेमस्पेस भित्र दोस्रो socat सुरु गर्छ, जुन एपको लूपब्याकमा जोडिन्छ। भित्री प्रक्रिया स्थानीय क्लाइन्टले जस्तै एप्लिकेसनसम्म पुग्छ। नेमस्पेसको रुटिङमा केही पनि बदलिँदैन, त्यसैले एपले टनेललाई आफ्नो एकमात्र निकासका रूपमा प्रयोग गरिरहन्छ।

socat TCP-LISTEN:9100,reuseaddr,fork EXEC:'ip netns exec vpn socat STDIO tcp-connect:127.0.0.1:9100',nofork

बाहिरी प्रक्रियालाई root वा नेमस्पेसमा प्रवेश गर्ने क्षमता चाहिन्छ। VPN खस्दा एपले आफ्नो बाटो गुमाउँछ र प्रकाशित पोर्ट बन्द भएर असफल हुन्छ, र जेलबाट तपाईंले यही व्यवहार चाहनुहुन्छ।

एकभन्दा बढी पोर्ट पार गर्दा veth जोडी प्रयोग गर्नुहोस्

धेरै पोर्ट वा प्रोटोकल पार गर्नुपर्दा, वा अरू होस्टले जडान सुरु गर्नुपर्दा veth जोडी नै सही उत्तर हो। एउटा छेउ होस्टमा रहन्छ, अर्को नेमस्पेसमा जान्छ, र सानो /30 ले दुवै पक्षलाई स्थिर ठेगाना दिन्छ। त्यसपछि होस्ट रुटले नेमस्पेसको ठेगाना जोडीमाथि पठाउँछ।

ip link add veth0 type veth peer name veth1
ip link set veth1 netns vpn
ip addr add 10.77.0.1/30 dev veth0
ip link set veth0 up
ip netns exec vpn ip addr add 10.77.0.2/30 dev veth1
ip netns exec vpn ip link set veth1 up

जेल तोड्ने इरादा नभए होस्टबाट डिफल्ट रुट नथप्नुहोस्। टनेल नै निकास रहनुपर्छ, त्यसैले जोडीमाथि प्रकाशित सेवा ठेगानामा मात्र पुग्न सकिन्छ। नेमस्पेसलाई यसको आफ्नै रिजोल्भर फाइल पनि दिनुहोस्, किनकि ip netns exec /etc/netns/vpn/resolv.conf पढ्छ र त्यो बिना जेलभित्र नाम समाधान खाली हुन्छ।

होस्टबाट होइन, अर्को मेसिनबाट परीक्षण गर्नुहोस्

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

ip netns exec vpn ss -lntp

होस्टको जडान चलेर LAN को नचल्ने हो भने छुटेको भाग हप वा रुट हो, बाँध्ने ठेगाना होइन। चलिरहेको tun यन्त्र भित्र सार्नुको सट्टा नेमस्पेस भित्रै OpenVPN सुरु गर्नुहोस्, किनकि इन्टरफेस सार्दा त्यो बन्द हुन्छ र पछि बाहिरबाट सुधार्न नसकिने रुट मेटिन सक्छन्। पुनर्प्राप्ति आदेशहरू जेलभित्र होइन, कन्सोलमा राख्नुहोस्।

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