मैं कैसे बता सकता हूं कि नेटवर्क इंटरफ़ेस भौतिक है (डिवाइस) या वर्चुअल (उपनाम)?


17

मेरे पास एक छोटा सा होम राउटर है जो OpenWrt (रूटर्स के लिए एम्बेडेड लिनक्स की तरह) है। इसमें पांच ईथरनेट पोर्ट हैं, एक लेबल WAN और चार लेबल लैन 1 से 4। इसमें निम्नलिखित नेटवर्क इंटरफेस निम्नानुसार हैं ifconfig:

root@TIBERIUS: ~ > ifconfig | grep Link
br-lan    Link encap:Ethernet  HWaddr 00:23:CD:20:C3:B0
eth0      Link encap:Ethernet  HWaddr 00:23:CD:20:C3:B0
lan1      Link encap:Ethernet  HWaddr 00:23:CD:20:C3:B0
lan2      Link encap:Ethernet  HWaddr 00:23:CD:20:C3:B0
lan3      Link encap:Ethernet  HWaddr 00:23:CD:20:C3:B0
lan4      Link encap:Ethernet  HWaddr 00:23:CD:20:C3:B0
lo        Link encap:Local Loopback
pppoe-wan Link encap:Point-to-Point Protocol
wan       Link encap:Ethernet  HWaddr 00:23:CD:20:C3:B0
wlan0     Link encap:Ethernet  HWaddr 00:23:CD:20:C3:B0

जैसा कि आप देख सकते हैं, काफी सारे डिवाइस, लेकिन केवल एक मैक एड्रेस।

मैं समझता हूं कि उनमें से कुछ उपकरण आभासी हैं। आइए डालते हैं एक loऔर pppoe-wan, यह लूपबैक डिवाइस और मेरा PPPoE कनेक्शन। लेकिन बाकी लोगों के लिए, मैं यह कैसे बता पाऊंगा कि वे शारीरिक या आभासी हैं? मैं समझता हूं कि वर्चुअल इंटरफेसेस को लेबल करने के लिए एक नामकरण सम्मेलन है eth0.1, लेकिन यह स्पष्ट रूप से यहां का पालन नहीं किया गया है। आइए ifconfigइन दो इंटरफेस के आउटपुट देखें :

root@TIBERIUS: ~ > ifconfig wan
wan       Link encap:Ethernet  HWaddr 00:23:CD:20:C3:B0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:15007 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12055 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:13341276 (12.7 MiB)  TX bytes:1831757 (1.7 MiB)

root@TIBERIUS: ~ > ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:23:CD:20:C3:B0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:25799 errors:0 dropped:0 overruns:23 frame:0
          TX packets:25294 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:15481996 (14.7 MiB)  TX bytes:15160380 (14.4 MiB)
          Interrupt:4

txqueuelenगैर-शून्य होने के अस्पष्ट विवरण के अलावा eth0, एकमात्र अंतर यह है कि eth0इसमें एक Interruptप्रविष्टि है, जहां तक ​​मुझे पता है कि एक हार्डवेयर फीचर है। तो यह है कि आप कैसे बताएं कि एक नेटवर्क इंटरफेस भौतिक है या नहीं, एक Interruptप्रविष्टि की तलाश में है ifconfig? या कोई बेहतर तरीका है? यह पता लगाने का एक सरल और सीधा तरीका है कि नेटवर्क डिवाइस भौतिक है या आभासी?

ध्यान दें कि एक संबंधित प्रश्न है, लेकिन जब उसके पास एक स्वीकृत उत्तर होता है, तो वह निर्णायक नहीं होता है।

अपडेट करें

Derobert के जवाब के जवाब में, यहां से दी गई जानकारी दी गई है ls -l /sys/class/net:

br-lan      -> ../../devices/virtual/net/br-lan
eth0        -> ../../devices/platform/ag71xx.0/net/eth0
lan1        -> ../../devices/platform/dsa.0/net/lan1
lan2        -> ../../devices/platform/dsa.0/net/lan2
lan3        -> ../../devices/platform/dsa.0/net/lan3
lan4        -> ../../devices/platform/dsa.0/net/lan4
lo          -> ../../devices/virtual/net/lo
pppoe-wan   -> ../../devices/virtual/net/pppoe-wan
wan         -> ../../devices/platform/dsa.0/net/wan

[इस सूची में परिशिष्ट: wlan0के रूप में अच्छी तरह से दिखाया है wlan0 -> ../../devices/platform/ath9k/net/wlan0, लेकिन जब मैंने उपरोक्त सूची की प्रतिलिपि बनाई तो मेरे पास WLAN अक्षम था, यही कारण है कि यह दिखाई नहीं दिया।]

मैं कहूंगा कि eth0एकमात्र उपकरण है। स्पष्ट नहीं है कि क्या dsa.0है।

और ब्रायन एज के जवाब में:

root@TIBERIUS: ~ > cat /etc/config/network

config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config interface 'eth'
        option ifname 'eth0'
        option proto 'none'

config interface 'lan'
        option ifname 'lan1 lan2 lan3 lan4'
        option type 'bridge'
        option proto 'static'
        option ipaddr '192.168.33.1'
        option netmask '255.255.255.0'

config interface 'wan'
        option ifname 'wan'
        option proto 'pppoe'
        option username '…'
        option password '…'

आपने पहले से ही अपने स्वयं के प्रश्न का उत्तर दिया (हार्डवेयर-विशिष्ट वस्तुओं जैसे IRQ, txqueue, ... के लिए देखें)। मेरे लिए सवाल यह है कि आपको अपने उपयोग-मामले में अंतर करने की आवश्यकता क्यों है?
निल्स

@ निल्स, मेरे पास अपने राउटर डिवाइस पर नेटवर्क कॉन्फ़िगरेशन की स्पष्ट समझ नहीं होने के बाद मैंने उस पर OpenWrt को फ्लैश किया। मुझे यह पूरी तरह से भ्रामक लगता है। प्रोजेक्ट डॉक्स और फ़ोरम ने कुछ मदद दी है, लेकिन पर्याप्त नहीं है, और मूल सवालों को छोड़ दिया गया है। उन सवालों में से एक यहाँ उठाया गया है। अब मुझे लगता है कि मेरे राउटर के पास केवल एक एनआईसी है जब मुझे यकीन था कि यह दो था। स्पष्ट विवरण भ्रम को कम करता है। इसीलिए।
लूमी

क्या आप उस राउटर के लिए एक छोटी सी फोटो या फोटो / डॉक्यूमेंट का लिंक यहां डाल सकते हैं? बॉन्डिंग / ब्रिजिंग / नैटिंग जैसी चीजें हो सकती हैं जो असली एमएसीएस को छुपाती हैं ...
निल्स

आपको बेहतर विवरण देखने में सक्षम होना चाहिए, और जिनका आपको उपयोग करना चाहिए,lshw -class network
नथन वी

@ निल्स, यहां आप जाएं: wiki.openwrt.org/toh/tp-link/tl-wr941nd - @ नथन, सिर्फ 4 एमबी फ्लैश के साथ, बॉक्स बल्कि विवश है, और lshwपैकेज सूची में नहीं है। एक जानकार और दृढ़निश्चयी व्यक्ति में देव उपकरण स्थापित करने में सफल हो सकता है tmpfs, लेकिन क्या यह लायक होगा? मैं एक मानक पीसी के माध्यम से लिनक्स नेटवर्किंग की अपनी समझ को आगे बढ़ाने जा रहा हूं। यह आसान होने जा रहा है। जबकि मैं इस राउटर कॉन्फ़िगरेशन को ठीक से नहीं समझता, यह ठीक काम करता है। आपकी सहायता के लिए धन्यवाद।
लूमी डिक

जवाबों:


19

आप देख सकते हैं /sys:

anthony@Zia:/sys/class/net$ ls -l /sys/class/net/
total 0
lrwxrwxrwx 1 root root 0 Dec 11 15:38 br0 -> ../../devices/virtual/net/br0
lrwxrwxrwx 1 root root 0 Dec 11 15:38 lan -> ../../devices/pci0000:00/0000:00:1e.0/0000:07:01.0/net/lan
lrwxrwxrwx 1 root root 0 Dec 11 15:38 lo -> ../../devices/virtual/net/lo
lrwxrwxrwx 1 root root 0 Dec 11 15:38 tun0 -> ../../devices/virtual/net/tun0

तो, वास्तविक उपकरण / sys / वर्ग / नेट में दिखाते हैं। ध्यान दें कि उपनाम (जैसे कि लैन: 0) नहीं है (ताकि आप बता सकें कि कौन से उपनाम हैं)। और आप स्पष्ट रूप से देख सकते हैं कि कौन से वास्तविक हार्डवेयर (लैन) हैं और जो (br0, lo, tun0) नहीं हैं।

स्पष्ट करने के लिए

आप बता सकते हैं कि उपरोक्त में कौन से वास्तविक हैं क्योंकि आभासी सभी आभासी हैं। और lan PCI बस में है।

आपके मामले में, आपके पास छह हैं: eth0, wan, और lan1–4। यह बल्कि विषम है, क्योंकि आप कहते हैं कि आपके पास केवल पांच पोर्ट हैं। मुझे लगता है कि eth0 वास्तव में आ-ईश चिप के लिए हार्डवेयर्ड है, और अन्य 5 पोर्ट उस स्विच पर पोर्ट हैं। wlan0 संभवत: वास्तविक है (वायरलेस एडेप्टर होगा), हालांकि यह / sys में नहीं दिखा रहा है ...

तो, मैं कहूंगा कि सभी व्यावहारिक उद्देश्यों के लिए, आपके वास्तविक पोर्ट वान, lan1–4 और wlan0 हैं। br-lan एक सेतु के रूप में सभी 4 लैन पोर्ट्स को बनाने के लिए एक पुल सेट है (ताकि आप उस स्विच को विभाजित करने में सक्षम हो सकें)।


धन्यवाद। मैंने अपने प्रश्न के समान आउटपुट जोड़ा। यह उतना स्पष्ट नहीं है जितना कि आप यहाँ दिखा रहे हैं, पीसीआई बस या व्हाट्सएप के साथ जो आउटपुट दिखा रहे हैं; हालाँकि मुझे वास्तव में आउटपुट की समझ नहीं है, मैं मानता हूँ कि यह हार्डवेयर आइडेंटिफ़ायर की तरह दिखता है। ऊपर पोस्ट किए गए मेरे आउटपुट के मामले में, यह उस की उपस्थिति है ag71xxजो मुझे लगता है कि यह हार्डवेयर है, क्योंकि यह एक चालक की तरह दिखता है।
लूमी

@Lumi ने उत्तर देने का प्रयास करने के लिए संपादन किया।
डेसर

यह शायद मेरी प्रतिक्रिया से अधिक व्यावहारिक है।
ब्रायन आयु

धन्यवाद। नोट wlan0डिवाइस डिवाइस सूची में मौजूद होगा, /sys/class/netजब मैंने सूची को कॉपी किया तो यह सक्षम था। :) मैंने अब इसे ऊपर जोड़ दिया है। मैं उपकरणों की संख्या पर आपसे असहमत हूं, मुझे लगता है कि केवल दो हैं, LAN और WLAN। लेकिन यह एक मामूली बात है ... अच्छा जवाब, स्वीकार किया, धन्यवाद!
लूमी

@ Lumi उपयोग brctrl delif br-lan lan1(या समान) पुल से एक बंदरगाह को छोड़ने के लिए। मुझे संदेह है कि यह एक अलग बंदरगाह (लैन स्विच का हिस्सा नहीं) के रूप में कार्य करेगा।
derobert

5

मान लें कि आपका इंटरफ़ेस मैक एड्रेस खराब नहीं हुआ था , तो आप एथलेट का उपयोग करने का प्रयास कर सकते हैं :

ethtool -P {Network interface name}

" स्थायी पता: 00: 00: 00: 00: 00: 00 " यह इंगित करेगा कि यह एक वर्चुअल नेटवर्क इंटरफ़ेस है।

निम्नलिखित बैश लूप सभी नेटवर्क इंटरफेस के लिए मैक पता प्रदर्शित करेगा:

for i in $(ip -o link show | awk -F': ' '{print $2}'); \
do mac=$(ethtool -P $i) \
&& printf '%-10s %-10s\n' "$i" "$mac"; \
done

lo         Permanent address: 00:00:00:00:00:00
enp5s0f0   Permanent address: 44:1e:a1:73:39:c8
enp4s0f0   Permanent address: 00:9c:02:b0:ef:20
enp5s0f1   Permanent address: 44:1e:a1:73:39:c9
enp4s0f1   Permanent address: 00:9c:02:b0:ef:24
virbr1     Permanent address: 00:00:00:00:00:00
virbr1-nic Permanent address: 00:00:00:00:00:00
virbr0     Permanent address: 00:00:00:00:00:00
virbr0-nic Permanent address: 00:00:00:00:00:00
vnet0      Permanent address: 00:00:00:00:00:00
vnet1      Permanent address: 00:00:00:00:00:00

2

में देख कर शुरू करूँगा /etc/network/config; अधिकांश डिस्ट्रोस में नेटवर्क उपकरणों को परिभाषित करने और कॉन्फ़िगर करने के लिए एक समान फ़ाइल है। डेबियन / उबंटू में, यह / आदि / नेटवर्क / इंटरफेस है। यदि आप उस की सामग्री को पोस्ट करने के लिए थे, तो हम उपनाम, बॉन्ड और ब्रिज प्रविष्टियों की पहचान कर सकते थे; बाकी आपके भौतिक उपकरण होंगे।

ifconfigआउटपुट को देखकर , आप उन डिवाइसों द्वारा बता सकते हैं (जिनके बारे में आपने बताया है) जिनमें व्यवधान हैं (IRQs); कई को मेमोरी भी सौंपी गई है, जो वर्चुअल इंटरफेस नहीं है।

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

eth0  - physical device 1
eth1  - physical device 2
bond0 - the virtual device that uses either or both of the above
br0   - the bridge that uses bond0 and allows sharing/forwarding across bond0

स्पष्ट रूप से ओपनरैट में उपयोग किए गए उपनाम ऊपर वाले नहीं हैं, लेकिन अवधारणा रखती है; मैंने इनका उपयोग किया क्योंकि वे मानक अभ्यास हैं।


यह अन्य तरीकों से निर्मित इंटरफेस के लिए जिम्मेदार नहीं है, 'मानक' /etcतरीके से काम किया है । उदाहरण के लिए, NetworkManager द्वारा बनाए गए इंटरफेस का उल्लेख नहीं किया गया है।
gertvdijk

@gertvdijk यह सच है, हालांकि ओपनराइट नेटवर्क 4 में नेटवर्क मैनजर को पैक नहीं करता है, इसलिए सभी इंटरफेस को विन्यास में होना चाहिए।
ब्रायन आयु

-3

मुझे लगता है कि अगर /sys/class/net/<interface>/type1 (ARPHRD_ETHER) का मान चेक करना है, तो यह समझने के लिए पर्याप्त होना चाहिए कि डिवाइस भौतिक है।

http://lxr.linux.no/linux+v3.0/include/linux/if_arp.h#L30

जैसे। बेसन $ (dirname grep -l ^1$ /sys/class/net/*/type)


मैं कई इंटरफेसों के लिए 1 देख रहा हूं (एथ, वायरलेस, ब्रिज, और पुल से लटका हुआ
वलन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.