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