จะทราบได้อย่างไรว่าส่วนต่อประสานเครือข่ายเป็นแบบแตะแบบปรับแบบบริดจ์หรือแบบฟิสิคัล?


19

เท่าที่ฉันรู้มีอินเทอร์เฟซเครือข่ายหลัก 4 ประเภทใน Linux: tun, tap, bridge และ physical

เมื่อฉันทำผู้ดูแลระบบ sys บนเครื่องที่ใช้ KVM ฉันมักจะเจอแท็บบริดจ์และอินเทอร์เฟซทางกายภาพในเครื่องเดียวกันโดยไม่สามารถแยกพวกเขาออกจากกันได้ ฉันไม่เห็นความแตกต่างอย่างมีนัยสำคัญในifconfigผลลัพธ์เช่นเดียวกับในipผลลัพธ์

ฉันจะรู้ได้อย่างไรว่าอินเทอร์เฟซคือ tun, tap, bridge หรือ physical?

หมายเหตุ: ฉันไม่ได้อ้างว่าไม่มีส่วนต่อประสานเครือข่ายประเภทอื่นใน Linux แต่ฉันรู้เพียง 4 ตัวนี้

คำตอบ:


18

ฉันไม่คิดว่าจะมีวิธีง่ายๆในการแยกแยะพวกเขา poking รอบใน/sys/class/netผมพบว่าแตกต่างต่อไปนี้:

  • อุปกรณ์ทางกายภาพมี/sys/class/net/eth0/devicesymlink
  • สะพานมี/sys/class/net/br0/bridgeไดเรกทอรี
  • อุปกรณ์ TUN และ TAP มี/sys/class/net/tap0/tun_flagsไฟล์
  • บริดจ์และอินเทอร์เฟซย้อนกลับมี00:00:00:00:00:00ใน/sys/class/net/lo/address

เป็นความคิดที่ดีที่จะดูใน / sys /
368507

อุปกรณ์เสมือนอาจมีdevicesymlink ดังกล่าว: ls -l /sys/class/net/lan1/deviceแสดง/sys/class/net/lan1/device -> ../../../dsa.0บนเราเตอร์ที่ใช้ OpenWrt (Linux แบบฝัง) ifconfigฉันพบว่าการเชื่อมต่อทางกายภาพมีรายการขัดจังหวะในการส่งออกของ มันแปลกที่คำถามง่าย ๆ เกี่ยวกับอินเทอร์เฟซดูเหมือนจะตอบยาก การสอบสวนยังคงดำเนินต่อไป ...
Lumi

วิธีการเกี่ยวกับอุปกรณ์เสมือน ppp
MâttFrëëman

23

เกี่ยวกับอุปกรณ์ TUN และ TAP: มันไม่เพียงพอที่จะทำการตรวจสอบข้างต้น

เหตุผลก็คืออาจมีบางกรณีเมื่อเราสร้างอุปกรณ์ TUN และ (โดยข้อผิดพลาด) เรียกมันว่า tap10; หรือสร้างอุปกรณ์ TAP และตั้งชื่อเป็น tun10 ดังนั้นฉันจะรู้ได้อย่างไรว่าเป็นอุปกรณ์รับสัญญาณหรืออุปกรณ์ประปาเนื่องจากทั้งสองหลักสูตรจะมีรายการ "tun_flags"

ethtool -i tunOrTapDeviceNameคำตอบคือการวิ่ง

  • ในกรณีของอุปกรณ์ TAP เราจะได้รับ: "bus-info: tap"
  • ในกรณีของอุปกรณ์ TUN เราจะได้รับ: "bus-info: tun"

ตัวอย่าง

$ ethtool -i tapfffb93e9-6a
driver: tun
version: 1.6
firmware-version:
bus-info: tap
supports-statistics: no
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no

ไม่มีคำสั่ง ethtool เพื่อค้นหาว่าอินเตอร์เฟสเป็นฟิสิคัลหรือบริดจ์หรือไม่?
madCode

คำตอบนี้เป็นคำตอบที่กระชับและมีวัตถุประสงค์ทั่วไปมากขึ้น
Joshua Miller

@madcode ในกรณีทั่วไปที่คุณต้องการdriverฟิลด์ driver: bridgeสะพานจะแสดง น่าเสียดายที่ tun / tap ทั้งคู่แสดงเป็นdriver: tunทำลายรูปแบบ :)
sourcejedi

ใช่นี่คือคำตอบ อีกอันหนึ่งจะบอกคุณว่า intf นั้นเสมือนจริงหรือไม่! คุณสามารถตั้งชื่ออินเตอร์เฟซประปาที่มีชื่อที่ให้ข้อบ่งชี้ของธรรมชาติของอินเตอร์เฟซไม่มี
MiniMe

9

คุณสามารถใช้-dตัวเลือกที่ไม่มีเอกสารมากไปip(8)กว่าซึ่งจะบอกประเภทของอุปกรณ์บางอย่างรวมถึง tun, tap & veth:

เช่น

$ ip -d a
[regular devices]
6: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether 52:54:00:c8:12:ec brd ff:ff:ff:ff:ff:ff promiscuity 0 
tun

... บันทึกtunในบรรทัดสุดท้าย

นอกจากนี้คุณยังสามารถใช้กับ-dip l


iproute2 เป็นเครื่องมือที่ดีมาก คุณสมบัติที่แย่มากจนยากที่จะค้นพบ
เพื่อนน้อย

4

คำสั่งนี้จะทำงาน:

ip tuntap

ตัวอย่างผลลัพธ์:

vnet0: tap

หรือมีรายละเอียด:

ip -details tuntap

ตัวอย่างผลลัพธ์:

vnet0: tap
    Attached to processes: qemu-system-x86(2225)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.