host-only एडाप्टरहरूले स्थानीय भर्चुअल नेटवर्क बनाउँछन्, र रुट गरिएका TUN टनेलहरूले ठेगानाहरूबीच IP प्याकेट बोक्छन्। दुवैमध्ये कुनै पनि अर्कोको लागि ब्रिज होइन, त्यसैले काम गर्ने कन्फिगरेसनले कसले फर्वार्ड गर्छ र फर्किने रुट कसको हो भन्नैपर्छ। यी दुई जिम्मेवारी बदलिए गेस्टले टनेललाई टनेल क्लाइन्टले कहिल्यै नमागेको स्रोतसँग जवाफ दिन्छ। तलको डिजाइनले दुवै प्रिफिक्स अलग राख्छ र फर्किने बाटो स्पष्ट बनाउँछ।

दुई नेटवर्क, दुई प्रिफिक्स

टनेल पूल र host-only नेटवर्कलाई फरक प्रिफिक्स दिनुहोस् र कहिल्यै एउटालाई अर्कोको लागि पुनः प्रयोग नगर्नुहोस्। यस उदाहरणमा VPN पूल 10.44.0.0/24 छ र host-only नेटवर्क 192.168.99.0/24 छ, होस्ट 192.168.99.1 मा र गेस्ट 192.168.99.20 मा। एउटै प्रिफिक्स TUN यन्त्र र host-only एडाप्टर दुवैलाई दिँदा तिनीहरू जोडिँदैनन्। यसले एउटै ठेगाना दायरामा दुई दाबी सिर्जना गर्छ, र रुटिङ तालिकाले त्यसपछि संयोगवश राखिएको दाबीको पक्षमा जवाफ दिन्छ।

host-only एडाप्टर होस्टमा र गेस्टभित्र दुवै ठाउँमा हुन्छ, र यसलाई आफैंले मेसिनबाट बाहिर जाने बाटो हुँदैन। ब्रिज र NAT जडानको जोखिम फरक हुन्छ, र एउटा गेस्ट सेवासम्म पुग्न ब्रिज मोडमा जानु आवश्यक छैन।

होस्टसँग बाटो पहिले नै छ

केही थप्नुअघि के छ हेर्नुहोस्। होस्टसँग host-only नेटवर्कमा इन्टरफेस र त्यो प्रिफिक्सको रुट छ, दुवै एडाप्टर उठ्दा बनेका थिए।

ip -br addr show
ip route show 192.168.99.0/24
sysctl net.ipv4.ip_forward

तेस्रो लाइन त्यही संयन्त्र हो जसले होस्टलाई हप बनाउँछ। त्यो बिना, टनेलबाट आउने प्याकेट होस्ट पुग्न सक्ने तर फर्वार्ड नगर्ने नेटवर्कमा ठेगाना पाउँछ। फर्वार्डिङ आवश्यक छ र पर्याप्त छैन। फिल्टर नीतिले टनेल इन्टरफेस र host-only इन्टरफेसबीचको विशेष प्रवाह अनुमति छ कि छैन अझै निर्णय गर्छ, र त्यो निर्णय कसैले नपढेको डिफल्ट नीतिमा होइन, लिखित रूपमा हुनुपर्छ।

रुट पुश गर्नुहोस्, त्यसपछि त्यसले पुग्ने कुरा फिल्टर गर्नुहोस्

पुश गरिएका रुट स्वीकार गर्ने क्लाइन्टहरूलाई सर्भरले host-only प्रिफिक्स दिन सक्छ, जुन टनेलपछाडिको अन्य कुनै पनि सबनेटका लागि प्रयोग हुने त्यही संयन्त्र हो।

push "route 192.168.99.0 255.255.255.0"
iptables -A FORWARD -i tun0 -o vboxnet0 -d 192.168.99.20 -p tcp --dport 5432 -j ACCEPT
iptables -A FORWARD -i vboxnet0 -o tun0 -s 192.168.99.20 -p tcp --sport 5432 -m conntrack --ctstate ESTABLISHED -j ACCEPT

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

गेस्टलाई फर्किने बाटो चाहिन्छ

10.44.0.x बाट पुगिने गेस्टले आफ्ना जवाफ होस्टको host-only ठेगानामा पठाउनुपर्छ, वा होस्टले स्रोत अनुवाद गर्नुपर्छ। VirtualBox DHCP बाट ठेगाना पाउनुले यी दुईमध्ये कुनै पनि व्यवस्थाबारे केही भन्दैन।

ip route add 10.44.0.0/24 via 192.168.99.1 dev enp0s8
ip route get 10.44.0.15

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

TUN यन्त्रले IP प्याकेट बोक्छ, त्यसैले गेस्टभित्र डिफल्ट गेटवे थप्दा टनेल host-only एडाप्टरसँग इथरनेट खण्ड बन्दैन। TAP ब्रिजिङ आफ्नै क्लाइन्ट समर्थन र ठेगाना स्वामित्व भएको फरक डिजाइन हो, र दुवै विवरण मिसाउँदा कहिल्यै नमिल्ने कन्फिगरेसन बन्छ।

प्रमाणित गर्नुहोस्, त्यसपछि यसलाई रिस्टार्ट सहने बनाउनुहोस्

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

ss -lntp '( sport = :5432 )'
conntrack -L | grep 192.168.99.20

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

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