ฉันจะบอกได้อย่างไรว่าส่วนต่อประสานเครือข่ายนั้นมีอยู่จริง (อุปกรณ์) หรือเสมือน (นามแฝง)


17

ฉันมีเราเตอร์ในบ้านขนาดเล็กที่ใช้ OpenWrt (ชนิดของ Linux ที่ฝังตัวสำหรับเราเตอร์) มันมีห้าพอร์ตอีเธอร์เน็ตหนึ่งที่มีข้อความว่า WAN และ LAN labeld สี่ถึง 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

อย่างที่คุณเห็นมีอุปกรณ์จำนวนมาก แต่มีเพียงที่อยู่ MAC เดียวเท่านั้น

ฉันเข้าใจว่าอุปกรณ์เหล่านั้นบางอย่างเป็นเสมือนจริง ลองแยกกัน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รายการซึ่งเท่าที่ฉันรู้ว่าเป็นคุณสมบัติฮาร์ดแวร์ ดังนั้นวิธีที่คุณบอก Network Interface นั้นมีอยู่จริงหรือไม่โดยการค้นหา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เป็นอะไร

และในการตอบกลับถึงคำตอบของ Bryan Agee:

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 ฉันพบว่ามันทำให้เกิดความสับสนอย่างทั่วถึง เอกสารโครงการและฟอรัมได้ให้ความช่วยเหลือ แต่ไม่เพียงพอและยังไม่ได้ตอบคำถามพื้นฐาน หนึ่งในคำถามเหล่านั้นเป็นคำถามที่เกิดขึ้นที่นี่ ตอนนี้ฉันคิดว่าเราเตอร์ของฉันมี NIC เพียงอันเดียวเมื่อฉันแน่ใจว่ามีสองอัน รายละเอียดที่ชัดเจนช่วยลดความสับสน นั่นเป็นเหตุผล
Lumi

คุณสามารถใส่รูปถ่ายขนาดเล็กหรือลิงค์ไปยังรูปถ่าย / เอกสารสำหรับเราเตอร์ที่นี่ได้หรือไม่? อาจจะมีสิ่งที่ต้องการพันธะ / แก้ / natting ที่ซ่อนแม็คจริง ...
นิลส์

คุณควรจะสามารถดูรายละเอียดที่ดีขึ้นและสิ่งที่คุณต้องการโดยใช้lshw -class network
Nathan V

@ ไม่มีคุณไปที่นี่: wiki.openwrt.org/toh/tp-link/tl-wr941nd - @Nathan มีเพียงแฟลช 4 MB กล่องค่อนข้าง จำกัด และlshwไม่ได้อยู่ในรายการแพ็คเกจ คนที่มีความรู้และมุ่งมั่นอาจประสบความสำเร็จในการติดตั้งเครื่องมือ dev ในtmpfsแต่มันจะคุ้มค่าหรือไม่? ฉันจะทำความเข้าใจเพิ่มเติมเกี่ยวกับระบบเครือข่าย Linux ด้วยพีซีมาตรฐาน มันจะง่ายขึ้น แม้ว่าฉันจะไม่เข้าใจการกำหนดค่าเราเตอร์นี้อย่างถูกต้อง แต่ก็ใช้งานได้ดี ขอบคุณสำหรับความช่วยเหลือของคุณ.
Lumi

คำตอบ:


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 / class / net โปรดทราบว่านามแฝง (เช่น lan: 0) ไม่ได้ (เพื่อให้คุณสามารถบอกได้ว่าเป็นนามแฝง) และคุณสามารถเห็นได้อย่างชัดเจนว่าฮาร์ดแวร์ตัวใดที่แท้จริง (lan) และที่ไม่ได้ (br0, แท้จริง, tun0)

เพื่อชี้แจง

คุณสามารถบอกได้ว่าสิ่งใดเป็นของจริงในข้างต้นเพราะสิ่งที่เป็นเสมือนนั้นเป็นเสมือนจริงทั้งหมด และ lan อยู่บนบัส PCI

ในกรณีของคุณคุณมีหก: eth0, wan และ lan1–4 ค่อนข้างแปลกเนื่องจากคุณบอกว่าคุณมีพอร์ตรวมทั้งหมดห้าพอร์ตเท่านั้น ฉันเดาว่า eth0 นั้นจริง ๆ แล้วเดินสายไปที่ชิพสวิตช์ไอเอชเอและอีก 5 พอร์ตเป็นพอร์ตบนสวิตช์นั้น wlan0 อาจเป็นของจริงเช่นกัน (จะเป็นอแด็ปเตอร์ไร้สาย) แม้ว่ามันจะไม่แสดงใน / sys ….

ดังนั้นฉันจะบอกว่าเพื่อวัตถุประสงค์ในทางปฏิบัติพอร์ตที่แท้จริงของคุณคือ wan, lan1–4 และ wlan0 br-lan เป็นบริดจ์ที่ตั้งค่าเพื่อให้พอร์ต LAN ทั้ง 4 พอร์ตทำงานเป็นสวิตช์ (ดังนั้นคุณอาจแยกสวิตช์นั้นได้)


ขอบคุณ ฉันเพิ่มผลลัพธ์ที่คล้ายกับคำถามของฉัน ไม่ชัดเจนเท่ากับเอาต์พุตที่คุณแสดงที่นี่ด้วยบัส PCI หรืออะไรก็ตามที่ไม่ปรากฏขึ้นที่นี่ แม้ว่าฉันจะไม่เข้าใจผลลัพธ์จริง ๆ แต่ฉันก็เห็นด้วยเหมือนตัวระบุฮาร์ดแวร์ ในกรณีที่เอาท์พุทของฉันโพสต์ข้างต้นมันเป็นสิ่งag71xxที่ทำให้ฉันคิดว่ามันเป็นฮาร์ดแวร์เนื่องจากดูเหมือนว่าไดรเวอร์
Lumi

@Lumi แก้ไขเพื่อพยายามตอบ
derobert

นี่อาจเป็นประโยชน์มากกว่าคำตอบของฉัน
ไบรอัน Agee

ขอบคุณ หมายเหตุwlan0จะปรากฏในรายการอุปกรณ์ภายใต้/sys/class/netการเปิดใช้งานเมื่อฉันคัดลอกรายการ :) ฉันได้เพิ่มไปแล้วตอนนี้ ฉันไม่เห็นด้วยกับคุณเกี่ยวกับจำนวนอุปกรณ์ฉันคิดว่ามีเพียงสอง LAN และ WLAN แต่นั่นเป็นประเด็นย่อย…คำตอบที่ดีตอบรับขอบคุณ!
Lumi

@Lumi ใช้brctrl delif br-lan lan1(หรือที่คล้ายกัน) เพื่อวางพอร์ตออกจากสะพาน ฉันสงสัยว่ามันจะทำงานเป็นพอร์ตแยกต่างหาก (ไม่ใช่ส่วนหนึ่งของสวิตช์ LAN) จากนั้น
Derobert

5

สมมติว่าที่อยู่ MAC ของอินเทอร์เฟซของคุณไม่ได้ถูกหลอกคุณสามารถลองใช้ethtool :

ethtool -P {Network interface name}

"ที่อยู่ถาวร: 00: 00: 00: 00: 00: 00 " จะระบุว่าเป็นส่วนต่อประสานเครือข่ายเสมือน

bash loop ต่อไปนี้จะแสดงที่อยู่ MAC สำหรับการเชื่อมต่อเครือข่ายทั้งหมด:

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; distros ส่วนใหญ่มีไฟล์ที่คล้ายกันเพื่อกำหนดและกำหนดค่าอุปกรณ์เครือข่าย ใน debian / Ubuntu เป็น / etc / network / interfaces หากคุณต้องการโพสต์เนื้อหาของสิ่งนั้นเราสามารถระบุนามแฝงบอนด์และรายการบริดจ์ได้ ส่วนที่เหลือจะเป็นอุปกรณ์ทางกายภาพของคุณ

โดยการดูที่ifconfigเอาต์พุตคุณสามารถบอกได้ (ตามที่คุณพูดถึง) โดยอุปกรณ์ที่มีอินเตอร์รัปต์ (IRQ) ส่วนใหญ่ยังมีหน่วยความจำที่ได้รับมอบหมายซึ่งอินเตอร์เฟสเสมือนไม่ได้

คุณไม่สามารถตัดสินด้วยที่อยู่ mac เพียงอย่างเดียวเนื่องจากการเชื่อมโยง (การรวมลิงก์ ) จะแทนที่ mac ของอุปกรณ์แต่ละเครื่องและบริดจ์จะใช้เหมือนกัน ดังนั้นหากคุณมีอุปกรณ์สองเครื่องที่ถูกผูกมัดและเชื่อมโยง - การกำหนดค่าทั่วไปสำหรับโฮสต์และเราเตอร์เสมือน HA จะมีสี่อุปกรณ์ที่มี mac เครื่องเดียวกัน:

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

เห็นได้ชัดว่านามแฝงที่ใช้ใน openwrt ไม่ได้เป็นคนข้างต้น แต่แนวคิดถือ; ฉันใช้สิ่งเหล่านี้เพราะพวกเขาเป็นแบบฝึกหัดมาตรฐาน


นี้ไม่ได้บัญชีสำหรับอินเตอร์เฟซที่สร้างขึ้นในรูปแบบอื่น ๆ ทำงานรอบ 'มาตรฐาน' /etcวิธี ตัวอย่างเช่นอินเตอร์เฟสที่สร้างโดย NetworkManager ไม่ได้กล่าวถึง
gertvdijk

@ gertvdijk นั่นเป็นความจริงแม้ว่า openwrt ไม่ได้บรรจุ NetworkManager ลงใน 4MB นั้นดังนั้นอินเตอร์เฟสทั้งหมดควรอยู่ในการกำหนดค่า
ไบรอัน Agee

-2

ฉันคิดว่าเพียงตรวจสอบว่าค่าของ/sys/class/net/<interface>/type1 (ARPHRD_ETHER) ควรเพียงพอที่จะเข้าใจหรือไม่ว่าอุปกรณ์นั้นเป็นอุปกรณ์จริง

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

เช่น. basename $ (dirname grep -l ^1$ /sys/class/net/*/type)


ฉันเห็น 1 สำหรับอินเทอร์เฟซมากมาย (eth, wireless, bridge, & vlan ที่ห้อยลงมาจากบริดจ์ - ไม่เลย)
พฤศจิกายน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.