दोहरी नेटवर्क कनेक्शन


9

मेरे पास अपने Ubuntu 10.10 बॉक्स पर एक USB सेलुलर मॉडेम और एक होम लैन कनेक्शन है।

दोनों स्वतंत्र रूप से काम करते हैं।

मैं यह जानना चाहता हूं कि दोनों एक ही समय में कैसे जुड़े हैं, और यह निर्दिष्ट करने में सक्षम हैं कि कौन सा एप्लिकेशन इंटरनेट से कनेक्ट करने के लिए किस डिवाइस का उपयोग करता है।

क्या किसी को भी यह करना आता है?

जवाबों:


11

कई संभावनाएं हैं, इस बात पर निर्भर करता है कि आप कैसे तय करना चाहते हैं कि पैकेट कहाँ जाते हैं। उनमें से अधिकांश को लिनक्स में टीसीपी / आईपी नेटवर्किंग कैसे काम करता है, इसकी कुछ समझ की आवश्यकता होगी। जटिल काम करने के लिए आपको जिन मुख्य उपकरणों को जानना होगा वे हैं iptables(Ubuntu: iptables Iptables स्थापित करें ) और iproute2 ( ipकमांड) (Ubuntu: iproute Iproute स्थापित करें , iproute-doc IProute-doc स्थापित करें )।

यदि आप IP पते को लक्षित करके पूरी तरह से भेदभाव कर सकते हैं, तो यह सरल है: अपनी इच्छा के अनुसार आईपी पते को रूट करें। उदाहरण के लिए, निम्न आदेश 1.2.3 के लिए सभी पैकेट का कारण बनेंगे। x और 1.2.4.2 के माध्यम से जाने के लिए ppp0, और अन्य पैकेट के माध्यम से जाने के लिए eth0

route add -net 1.2.3.4/24 ppp0
route add -host 1.2.4.2 ppp0
route add -net 0.0.0.0/0 eth0

और अधिक जटिल आवश्यकताओं के लिए, आप का उपयोग शुरू करने की जरूरत है iptablesऔर ip route। उदाहरण के लिए, निम्न आदेशों ने विशेष रूटिंग तालिकाओं की स्थापना की, ताकि चिह्नित किए गए सभी पैकेट 1 से गुज़रें eth0और चिह्नित किए गए सभी पैकेट 2 बाहर जाएँ ppp0(उस पैकेट localhostको लूपबैक इंटरफ़ेस से चिपके रहने के लिए छोड़कर )।

ip rule add fwmark 1 table 1
ip route add 127.0.0.0/0 table 1 dev lo
ip route add 0.0.0.0/0 table 1 dev eth0
ip rule add fwmark 2 table 2
ip route add 127.0.0.0/8 table 2 dev lo
ip route add 0.0.0.0/0 table 2 dev ppp0

अब आप iptablesआउटगोइंग पैकेट को "मैंग्ल" करने के लिए उपयोग कर सकते हैं , एक निशान जोड़ सकते हैं जो तय करेगा कि वे किस मार्ग को लेते हैं। उदाहरण के लिए, यहां सभी आउटगोइंग SMTP ट्रैफ़िक (पोर्ट 25) को कैसे भेजा जाए eth0, और सभी ट्रैफ़िक की उत्पत्ति उपयोगकर्ता proxyद्वारा चलाए जा रहे एप्लिकेशन द्वारा होती है ppp0

iptables -t mangle -A OUTPUT -p tcp --dport 25 -j MARK --set-mark 1
iptables -t mangle -A OUTPUT -m owner --uid-owner proxy -j MARK --set-mark 2

इंटरनेट से जुड़े 2 नेटवर्क इंटरफेस भी देखें डोमेन नाम के अनुसार उपयोग करने के लिए एक का चयन करें और सॉफ्टवेयर को अलग-अलग नेटवर्क इंटरफेस से बांधें


जब दोनों इंटरफ़ेस कनेक्ट होते हैं, तो आपको इन कमांड को चलाने की व्यवस्था करने की आवश्यकता होगी। मेरा सुझाव है कि आप एक स्क्रिप्ट लिखें, जिसे /etc/network/if-up.d/0justin-routesआप चाहते हैं कि कमांड चलाता है। जब भी नेटवर्क इंटरफ़ेस लाया जाएगा, तो यह स्क्रिप्ट निष्पादित की जाएगी; जैसा कि इसके नाम के साथ शुरू होता है, 0यह उस प्रक्रिया में जल्दी चलेगा, आवेदन-विशिष्ट सेटअप से पहले जो मार्गों के होने की उम्मीद कर सकता है। /etc/network/if-down.d/अगर आप किसी एक इंटरफेस के नीचे आते हैं, तो आप एक सममिति चाहते हैं। (सभी संबद्ध मार्गों को स्वचालित रूप से मिटा दिया जाएगा, जो फंसे हुए कुछ पैकेटों को छोड़ सकते हैं जब आप चाहेंगे कि वे दूसरे इंटरफ़ेस पर वापस आएं।)

Ifup स्क्रिप्ट में प्रलेखित हैं interfaces(5) man page। पता करने के लिए मुख्य बात यह है कि इंटरफ़ेस का नाम ऊपर या नीचे लाया जा रहा है, एनवायरनमेंट चर में है IFACE। आप यह पता लगा सकते हैं कि क्या अन्य इंटरफ़ेस पहले से है if ifconfig | sed 's/ .*//' | grep -Fqx 'eth0'; then …


@ जस्टिन: यह ऐसा सामान नहीं है जिसके साथ मुझे बहुत अनुभव है, इसलिए कृपया इस बात की प्रतिक्रिया दें कि क्या काम किया, क्या काम नहीं किया, क्या समझ में नहीं आया, आदि
गाइल्स 'एसओ- बुराई को रोकें'

1
मुझे बनाने के लिए दो परिवर्धन मिले हैं: पहला, यह pp0 पर यातायात को eth0 से स्रोत पते के साथ भेजता है। आप इसका उपयोग करके बदल सकते हैं: उस एडेप्टर का आईपी पता iptables -t nat -A POSTROUTING -o tun0 -j SNAT --to-source ppp_ipकहां ppp_ipहै। दूसरे, आप सख्त बंद करने के लिए की आवश्यकता होगी rp_filterपर /proc/sys/net/ipv4/config/ppp0/rp_filter। यह काम करता है जब आराम करने के लिए सेट किया जाता है, जो है 2.
कर्लगा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.