Bagaimana cara mengetahui apakah antarmuka jaringan adalah ketuk, tun, jembatan atau fisik?

19

Sejauh yang saya tahu, ada 4 jenis utama antarmuka jaringan di Linux: tun, ketuk, jembatan dan fisik.

Ketika saya melakukan sys admin pada mesin yang menjalankan KVM, saya biasanya menemukan tap, jembatan dan antarmuka fisik pada mesin yang sama, tanpa bisa membedakan mereka. Saya tidak dapat melihat perbedaan yang signifikan dalam ifconfighasil, seperti dalam iphasil.

Bagaimana saya bisa tahu jika antarmuka adalah tun, ketuk, jembatan, atau fisik?

Catatan: Saya tidak mengklaim bahwa tidak ada jenis antarmuka jaringan lain di Linux, tetapi saya hanya tahu 4 ini.

pengguna368507
sumber

Jawaban:

18

Saya tidak berpikir ada cara mudah untuk membedakan mereka. Mengaduk-aduk di dalam /sys/class/netsaya menemukan perbedaan berikut:

  • Perangkat fisik memiliki /sys/class/net/eth0/devicesymlink
  • Jembatan memiliki /sys/class/net/br0/bridgedirektori
  • Perangkat TUN dan TAP memiliki /sys/class/net/tap0/tun_flagsfile
  • Jembatan dan antarmuka loopback ada 00:00:00:00:00:00di/sys/class/net/lo/address
Mgorven
sumber
Ide bagus untuk mencari di / sys /
user368507
Perangkat virtual juga dapat memiliki devicesymlink: ls -l /sys/class/net/lan1/deviceMenunjukkan /sys/class/net/lan1/device -> ../../../dsa.0pada router yang menjalankan OpenWrt (Linux tertanam). Saya menemukan bahwa Antarmuka fisik memiliki entri Interupsi dalam output dari ifconfig. Sungguh aneh bahwa pertanyaan sederhana tentang Antarmuka tampaknya sangat sulit untuk dijawab. Investigasi berlanjut ...
Lumi
Bagaimana dengan perangkat virtual ppp?
Mâtt Frëëman
23

Mengenai perangkat TUN dan TAP: tidak cukup untuk melakukan pemeriksaan di atas.

Alasannya adalah bahwa mungkin ada kasus ketika kita membuat perangkat TUN dan (secara tidak sengaja) menyebutnya tap10; atau buat perangkat TAP dan beri nama tun10. Jadi, bagaimana saya bisa tahu apakah itu perangkat tun atau perangkat tap, karena keduanya tentu saja akan memiliki entri "tun_flags"?

Jawabannya adalah berlari ethtool -i tunOrTapDeviceName.

  • Dalam hal perangkat TAP kita akan mendapatkan: "bus-info: ketuk".
  • Dalam hal perangkat TUN kita akan mendapatkan: "bus-info: tun".

Contoh

$ 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
Rami Rosen
sumber
Apakah tidak ada perintah ethtool untuk menemukan apakah suatu antarmuka itu fisik atau jembatan?
madCode
Jawaban ini adalah solusi yang lebih ringkas dan bertujuan umum.
Joshua Miller
@ Ahmadcode Dalam kasus umum, Anda ingin driverbidang. jembatan akan ditampilkan driver: bridge. Sayangnya tun / ketuk keduanya muncul sebagai driver: tun, melanggar pola :).
sourcejedi
Ya ini jawabannya. Yang lain hanya memberi tahu Anda jika intf virtual bukan! Anda dapat memberi nama antarmuka sentuh dengan nama yang tidak memberikan indikasi sifat antarmuka
MiniMe
9

Anda dapat menggunakan opsi lebih atau kurang tidak terdokumentasi -duntuk ip(8), yang memberitahu Anda jenis perangkat tertentu termasuk tun, ketuk & veth:

misalnya

$ 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

... perhatikan tundi baris terakhir.

Anda juga bisa menggunakannya -dbersama ip l.

Ben
sumber
iproute2 adalah alat yang bagus. Sayang sekali begitu banyak fitur yang sulit ditemukan.
Bung kecil
4

Perintah ini akan melakukan pekerjaan:

ip tuntap

Contoh hasil:

vnet0: tap

atau dengan detail:

ip -detail tuntap

Contoh hasil:

vnet0: tap
    Attached to processes: qemu-system-x86(2225)
BMWW
sumber