काम करने के लिए, टनल के एक छोर को दूसरे इंटरफ़ेस से जोड़ा जाना चाहिए। चूँकि आप इस सभी आभासी को रखना चाहते हैं, आप एक पुल प्रकार वर्चुअल इंटरफ़ेस के साथ, vm1 सुरंग के vm1 छोर (vm2 सुरंग का दूसरा छोर है) को पुल कह सकते हैं। अब आप brm2 और vm2 (10.0.0.1 और 10.0.0.2, क्रमशः) को IP पते देते हैं, IPv4 को माध्यम से अग्रेषित करते हुए सक्षम करते हैं
echo 1 > /proc/sys/net/ipv4/ip_forward
सभी इंटरफेस लाएँ, और कर्नेल को निर्देश दें कि आईपी एड्रेस 10.0.0.0/24 तक कैसे पहुँचा जाए। बस इतना ही।
यदि आप अधिक जोड़े बनाना चाहते हैं, तो अलग-अलग सबनेट के साथ नीचे दिए चरणों को दोहराएं, उदाहरण के लिए 10.0.1.0/24, 10.0.2.0/24, और इसी तरह। चूंकि आपने IPv4 को अग्रेषित करने में सक्षम किया है और कर्नेल राउटिंग टेबल के लिए उपयुक्त मार्ग जोड़े हैं, वे तुरंत एक दूसरे से बात कर पाएंगे।
यह भी याद रखें कि आपके द्वारा उपयोग किए जा रहे अधिकांश कमांड (brctl, ifconfig, ...) अप्रचलित हैं: iproute2 सूट में यह सब करने के लिए कमांड हैं, नीचे आईपी कमांड के मेरे उपयोग को देखें ।
यह प्रकार वेथ के इंटरफेस के उपयोग के लिए कमांड का एक सही क्रम है :
पहले सभी आवश्यक इंटरफेस बनाएं,
ip link add dev vm1 type veth peer name vm2
ip link set dev vm1 up
ip tuntap add tapm mode tap
ip link set dev tapm up
ip link add brm type bridge
ध्यान दें कि हम brm और vm2 को नहीं लाए हैं क्योंकि हमें उन्हें IP पते निर्दिष्ट करने हैं, लेकिन हमने tmm और vm1 को लाया, जिन्हें ब्रिज brm में शामिल करना आवश्यक है। अब ब्रिजम को इंटरफेस टेप और वीएम 1 को गुलाम करें,
ip link set tapm master brm
ip link set vm1 master brm
अब पुल और शेष वेथ इंटरफ़ेस vm2 के पते दें,
ip addr add 10.0.0.1/24 dev brm
ip addr add 10.0.0.2/24 dev vm2
अब vm2 और brm को लाएं,
ip link set brm up
ip link set vm2 up
रूट को सबनेट 10.0.0.0/24 में जोड़ने की कोई आवश्यकता नहीं है, यह स्पष्ट रूप से उत्पन्न होता है, आप आईपी रूट शो के साथ जांच कर सकते हैं । इसका परिणाम यह होगा
ping -c1 10.0.0.2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=0.035 m
--- 10.0.0.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.035/0.035/0.035/0.000 ms
आप इसे पीछे से भी कर सकते हैं, अर्थात vm2 से वापस brm तक:
ping -I 10.0.0.2 -c1 10.0.0.1
PING 10.0.0.1 (10.0.0.1) from 10.0.0.2 : 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.045 ms
--- 10.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.045/0.045/0.045/0.000 ms
वीथ प्रकार के एनआईसी का सबसे उपयोगी अनुप्रयोग एक नेटवर्क नेमस्पेस है , जो कि लिनक्स कंटेनर (एलएक्सएक्स) में उपयोग किया जाता है। आप nnsm नामक एक को इस प्रकार शुरू करते हैं
ip netns add nnsm
तब हम vm2 को इसमें स्थानांतरित करते हैं,
ip link set vm2 netns nnsm
हम एक लो इंटरफेस (बिल्कुल आवश्यक) के साथ नए नेटवर्क के नाम स्थान का समर्थन करते हैं,
ip netns exec nnsm ip link set dev lo up
हम मुख्य मशीन में अनुमति देते हैं,
iptables -t nat -A POSTROUTING -o brm -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
(यदि आप eth0 के माध्यम से इंटरनेट से जुड़े हैं , तो तदनुसार बदलें), नए नेटवर्क नामस्थान में एक शेल शुरू करें,
ip netns exec nnsm xterm &
और अब, यदि आप नए xterm में लिखना शुरू करते हैं, तो आप पाएंगे कि आप एक अलग वर्चुअल मशीन में हैं जिसका पता 10.0.0.2 है, लेकिन आप इंटरनेट तक पहुंच सकते हैं। इसका लाभ यह है कि नए नेटवर्क नेमस्पेस का अपना एक स्टैक है, जिसका अर्थ है, उदाहरण के लिए, आप इसमें एक वीपीएन शुरू कर सकते हैं, जबकि आपका पीसी शेष वीपीएन पर नहीं है । यह गर्भनिरोधक LXCs पर आधारित है।
संपादित करें:
मैंने एक गलती की, vm2 इंटरफ़ेस लाने से यह नीचे आता है और अपना पता साफ करता है। इस प्रकार आपको इन आदेशों को xterm के भीतर से जोड़ने की आवश्यकता है:
ip addr add 10.0.0.2/24 dev vm2
ip link set dev vm2 up
ip route add default via 10.0.0.1
echo "nameserver 8.8.8.8" >> /etc/resolv.conf
echo "nameserver 8.8.4.4" >> /etc/resolv.conf
और अब आप xterm के भीतर से नेविगेट कर सकते हैं।
ip
आदेशों भी साथ टर्म से पहले किया जा सकता है
ip -netns nnsm addr add 10.0.0.2/24 dev vm2
ip -netns nnsm link set dev vm2 up
ip -netns nnsm route add default via 10.0.0.1
br0
ही ऊपर?