लिनक्स नेटवर्क ट्रैफ़िक केवल eth0 के माध्यम से क्यों जाता है?


20

मैं दो NIC सर्वर साइड, eth0 पर मिला? 192.168.8.140 और eth1? 192.168.8.142। क्लाइंट 192.168.8.142 को डेटा भेजता है, और मुझे iftopएथ 1 के लिए ट्रैफ़िक दिखाने की उम्मीद है, लेकिन यह नहीं करता है। सभी नेटवर्क eth0 से गुजरते हैं, इसलिए मैं दो NIC का परीक्षण कैसे कर सकता हूं?

सभी ट्रैफ़िक eth1 के बजाय eth0 से क्यों चलते हैं? मुझे उम्मीद थी कि मुझे प्रति इंटरफ़ेस 1 Gbit / s मिल सकता है। मेरे सेटअप या कॉन्फ़िगरेशन में क्या गड़बड़ है?

सर्वर

ifconfig

eth0    Link encap:Ethernet  HWaddr 00:00:00:19:26:B0
        inet addr:192.168.8.140  Bcast:0.0.0.0  Mask:255.255.252.0
        inet6 addr: 0000::0000:0000:fe19:26b0/64 Scope:Link
        UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
        RX packets:45287446 errors:0 dropped:123343 overruns:2989 frame:0
        TX packets:3907747 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:1000
        RX bytes:66881007720 (62.2 GiB)  TX bytes:261053436 (248.9 MiB)
        Memory:f7e00000-f7efffff

eth1    Link encap:Ethernet  HWaddr 00:00:00:19:26:B1
        inet addr:192.168.8.142  Bcast:0.0.0.0  Mask:255.255.255.255
        inet6 addr: 0000::0000:0000:fe19:26b1/64 Scope:Link
        UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
        RX packets:19358 errors:0 dropped:511 overruns:0 frame:0
        TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:1000
        RX bytes:1772275 (1.6 MiB)  TX bytes:1068 (1.0 KiB)
        Memory:f7c00000-f7cfffff

सर्वर साइड

# Listen for incomming from 192.168.8.142
nc -v -v -n -k -l 192.168.8.142 8000 | pv > /dev/null
Listening on [192.168.8.142] (family 0, port 8000)
Connection from 192.168.8.135 58785 received!

ग्राहक

# Send to 192.168.8.142
time yes | pv |nc -s 192.168.8.135 -4 -v -v -n 192.168.8.142 8000 >/dev/null
Connection to 192.168.8.142 8000 port [tcp/*] succeeded!

सर्वर साइड

$ iftop -i eth0
interface: eth0
IP address is: 192.168.8.140

TX:             cumm:  6.34MB   peak: 2.31Mb   rates: 2.15Mb  2.18Mb  2.11Mb
RX:                    2.55GB          955Mb           874Mb   892Mb   872Mb
TOTAL:                 2.56GB          958Mb           877Mb   895Mb   874Mb

$ iftop -i eth1
interface: eth1
IP address is: 192.168.8.142

TX:             cumm:      0B   peak:     0b   rates:     0b      0b      0b
RX:                    4.51KB         3.49Kb          3.49Kb  2.93Kb  2.25Kb
TOTAL:                 4.51KB         3.49Kb          3.49Kb  2.93Kb  2.25Kb

$ ip link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 00:00:00:19:26:b0 brd ff:ff:ff:ff:ff:ff
$ ip link show eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 00:00:00:19:26:b1 brd ff:ff:ff:ff:ff:ff

1
ऐसा लगता है कि आप वास्तव में क्या देख रहे हैं इंटरफ़ेस संबंध है: wiki.linuxfoundation.org/networking/bonding
फ्लेक्सो

@flexo पूरी तरह से सही है - अपने अंतिम लक्ष्य के आधार पर, दो नेटवर्क इंटरफेस को एक साथ जोड़कर आप अधिक समग्र बैंडविड्थ दे सकते हैं, लेकिन संबंध विकल्प अलग-अलग हैं। सर्वश्रेष्ठ आप प्राप्त कर सकते हैं ~ 1 Gbit की 2 धाराएँ, और 2 Gbit की 1 धारा नहीं। साथ ही आपको एक प्रबंधित ईथरनेट स्विच की सेवाओं की आवश्यकता होती है। इसी तरह, बॉन्डिंग 4 एक ही बार में 4x 1 Gbit प्रवाह दे सकती है।
क्रैगी

जवाबों:


32

एक टीसीपी / आईपी नेटवर्क स्टैक के लिए दो संभावित डिज़ाइन मॉडल हैं: एक मजबूत होस्ट मॉडल और एक कमजोर होस्ट मॉडल। आप व्यवहार की उम्मीद कर रहे हैं जो मजबूत मेजबान मॉडल से मेल खाएगा। लिनक्स कमजोर होस्ट मॉडल का उपयोग करने के लिए डिज़ाइन किया गया है। सामान्य तौर पर कमजोर होस्ट मॉडल अधिक सामान्य होता है क्योंकि यह रूटिंग कोड की जटिलता को कम करता है और इस तरह बेहतर प्रदर्शन की पेशकश कर सकता है। अन्यथा दो मेजबान मॉडल सिर्फ अलग डिजाइन सिद्धांत हैं: न तो स्वाभाविक रूप से दूसरे से बेहतर है।

मूल रूप से, कमजोर होस्ट मॉडल का अर्थ है कि आउटगोइंग ट्रैफ़िक को रूट तालिका में सूचीबद्ध पहला इंटरफ़ेस भेजा जाएगा जो गंतव्य के आईपी पते (या चयनित गेटवे, यदि गंतव्य सीधे पहुंच योग्य नहीं है) से मेल खाता है, बिना स्रोत आईपी के पता

यदि आप एक ही नेटवर्क सेगमेंट पर दो आईपी एड्रेस की जरूरत है तो यह मूल रूप से दो अलग-अलग भौतिक इंटरफेस का उपयोग करने के लिए आम तौर पर असावधान है। इसके बजाय एक इंटरफ़ेस के लिए दो आईपी पते निर्दिष्ट करें (आईपी उपनाम: जैसे eth1 = 192.168.8.142 और eth1: 0 = 192.168.8.140)। यदि आपको एक एकल इंटरफ़ेस की तुलना में अधिक बैंडविड्थ की आवश्यकता है, तो बॉन्ड (या टीम, यदि लागू हो) दो या अधिक इंटरफेस एक साथ प्रदान कर सकते हैं, और फिर दोनों बॉन्ड / टीम पर आईपी चला सकते हैं।

कई sysctl सेटिंग्स को ट्विक करके और प्रत्येक एनआईसी के लिए स्वतंत्र रूटिंग टेबल स्थापित करने के लिए "उन्नत रूटिंग" कार्यक्षमता का उपयोग करके लिनक्स को एक मजबूत-होस्ट-मॉडल सिस्टम की तरह व्यवहार करना संभव है। लेकिन यह एक बहुत ही विशेष विन्यास है, और मैं इसे लागू करने से पहले दो बार सोचने की सलाह दूंगा।

लिनक्स सोर्स रूटिंग, स्ट्रांग एंड सिस्टम मॉडल / स्ट्रॉन्ग होस्ट मॉडल के जवाब देखें ? अगर आपको वास्तव में इसकी आवश्यकता है।


डिफ़ॉल्ट मोड भी एक बुरा आश्चर्य की प्रतीक्षा कर रहा है अगर iptables के साथ ट्रैफ़िक को आकार देने का प्रयास किया जा रहा है :)
rackandboneman

हाँ, मुझे अतीत में मजबूत मेजबान मॉडल को लागू करने में मज़ा आया है। यह उस परियोजना के लिए आवश्यक था, लेकिन मैं एक निजी मशीन के लिए उस सिरदर्द से गुजरने से परेशान नहीं होता।
बाल्ड्रिक

11

विचार करने के लिए एक अतिरिक्त बिंदु यह है कि eth1 इंटरफ़ेस 255.255.255.255 के सबनेट मास्क के साथ कॉन्फ़िगर किया गया है।

इसका मतलब यह है कि eth1 इंटरफ़ेस को इसके नेटवर्क इंटरफ़ेस पर कोई अन्य डिवाइस (होस्ट) की अपेक्षा करने के लिए कॉन्फ़िगर किया गया है। इसका अर्थ है कि यह आपके 192.168.8.142 ग्राहक के साथ संवाद करने में सक्षम नहीं होगा।


2

बहुत खोज के बाद, मैंने पाया कि क्यों नेटकैट आईपी से जुड़े सही इंटरफ़ेस का उपयोग नहीं करता है? , और यह वही समस्या है। जैसा कि @telcoM ने कहा, आउटगोइंग ट्रैफ़िक को पहले इंटरफ़ेस पर भेजा जाएगा, और यह समस्या है, इसलिए, इसे हल करने का सबसे आसान तरीका है:

ip route add default via 192.168.8.142 dev eth1 table 142
ip rule add from 192.168.8.142 table 142

यह मार्ग ip route get 192.168.8.135 from 192.168.8.142eth0 के बजाय वापसी को eth1 बना देगा । फिर सब कुछ उम्मीद के मुताबिक काम करता है।


3
यदि आप मेरे द्वारा निर्दिष्ट प्रश्न में उल्लिखित ARP sysctl सेटिंग्स को छोड़ देते हैं, और एंटरप्राइज़-ग्रेड स्विच और राउटर के साथ काम कर रहे हैं, तो आपका नेटवर्क व्यवस्थापक राउटर पर अनावश्यक "आईपी एड्रेस फ्लैपिंग" संदेशों के कारण आपके साथ थोड़ा नाखुश हो जाएगा, जैसा कि सिस्टम अभी भी दोनों इंटरफेस पर आईपी के लिए एआरपी अनुरोधों का जवाब दे सकता है। या यदि आपके पास नेटवर्क में आईपी अपहरण सुरक्षा है, तो यह आपके सिस्टम के सभी ट्रैफ़िक को संलग्न और अक्षम कर सकता है।
टेल्कोएम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.