इसका उचित तरीका उस इंटरफ़ेस को बांधना () है जिसे आप आउटगोइंग पैकेट के लिए उपयोग करना चाहते हैं। जब से आप अपने आउटगोइंग इंटरफ़ेस के आधार पर पैकेट को रूट करने के तरीके को नियंत्रित करने के लिए ip route
और ip rule
कमांड के साथ रूट सेट कर सकते हैं। मेरे उदाहरण के लिए, मैं निम्नलिखित नेटवर्क को मानूंगा:
- eth0:
- पता: 192.168.0.2/24
- डिफ़ॉल्ट गेटवे: 192.168.0.1
- eth1:
- पता: 192.168.1.2/24
- डिफ़ॉल्ट गेटवे: 192.168.1.1
मैं दो रूटिंग टेबल बनाऊंगा, एक के लिए ट्रैफ़िक जा रहा है eth0 के लिए जिसे अल्टरनेट कहा जाता है और एक टेबल के लिए eth1 कहा जाता है। तालिका मुख्य रूटिंग हमेशा मौजूद है और सामान्य तालिका द्वारा प्रयोग किया जाता है route
और ip route
आदेशों। अधिकांश लोग कभी भी किसी अन्य तालिकाओं के साथ व्यवहार नहीं करते हैं। वैकल्पिक नामक तालिका बनाने के लिए, हम निम्नलिखित पंक्ति को जोड़ेंगे/etc/iproute2/rt_tables
:
10 alternate
तालिका मुख्य में 254 की डिफ़ॉल्ट प्राथमिकता है। नियम जिसके लिए रूटिंग तालिका प्रभावी है, ip rule
कमांड द्वारा नियंत्रित किया जाता है । डिफ़ॉल्ट रूप से, वह आदेश मौजूदा नियमों की एक सूची का प्रिंट आउट करेगा, जो कुछ इस तरह दिखना चाहिए:
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
यह मूल रूप से कहता है कि यह तालिका में एक मार्ग की तलाश करेगा local
जो कि एक विशेष तालिका है जो स्थानीय मार्गों जैसे कि मेरे स्वयं के आईपी पते के लिए कर्नेल द्वारा रखी गई है। इसके बाद टेबल मेन और टेबल डिफॉल्ट की कोशिश होगी। टेबल डिफॉल्ट आम तौर पर खाली होता है, यदि मुख्य में कोई मेल नहीं है, तो होस्ट करने का कोई रास्ता नहीं है। सबसे पहले, eth0 के लिए नियमों के साथ तालिका वैकल्पिक भरने की सुविधा देता है।
sudo ip route add table alternate 192.168.0.0/24 dev eth0
sudo ip route add table alternate 192.168.1.0/24 dev eth1
sudo ip route add table alternate default via 192.168.0.1
आप सामान्य रूप से alternate
तालिका को समान दिखना चाहेंगेmain
। केवल अंतर तब होता है जब रूटिंग अलग होना चाहिए। यदि आप शाब्दिक रूप से सभी NFS, HTTP, इत्यादि को यातायात के लिए डिफ़ॉल्ट रूप से गेटवे से गुजरना चाहते हैं, तो यह दूसरी पंक्ति को ऊपर शामिल नहीं करना चाहेगा, भले ही यह eth1 पर नेटवर्क के लिए नियत हो। अगला कदम इस वैकल्पिक रूटिंग तालिका का उपयोग करने के लिए एक नियम जोड़ना है:
sudo ip rule add from 192.168.0.0/24 pref 10 table alternate
यह नियम कहता है कि 192.168.0 नेटवर्क पर एक पते से आने वाला कोई भी ट्रैफ़िक alternate
सामान्य main
टेबल के बजाय रूटिंग टेबल का उपयोग करेगा । अंतिम चरण यह सुनिश्चित करना है कि सभी ग्राहक eth0
इसे बांधने का उपयोग करें । साथ wget
, उदाहरण के लिए, सेट --bind-address=192.168.0.2
, एनएफएस के लिए निर्धारितclientaddr=192.168.0.2
माउंट विकल्प। अगर पर्ल के साथ LibWWW का उपयोग कर रहे हैं, तो आप LWP :: UserAgent में स्थानीय इंटरफ़ेस को नियंत्रित करने के लिए इसे सेट कर सकते हैं। यदि आपके पास ऐसा कोई क्लाइंट है, जिसे आप बाइंडिंग को नियंत्रित नहीं कर सकते हैं और संकलन का स्रोत कोई विकल्प नहीं है, तो आप इसका पता बदलने के लिए iptables नियम का उपयोग करने में सक्षम हो सकते हैं, लेकिन यह हैक का अधिक है और काम नहीं कर सकता है। आपको एक एनएटी नियम की आवश्यकता होगी जो एनएटी टेबल या मेंगल टेबल की PREROUTING श्रृंखला में स्थापित हो। इसके बाद भी आपको काम करने के लिए ऊपर दी गई संशोधित रूटिंग टेबल की आवश्यकता होगी।
iftop
और वे प्रत्येक को सही प्रकार का ट्रैफ़िक दिखा रहे हैं। बहुत बहुत धन्यवाद।