Làm thế nào để biết một giao diện mạng là tap, tun, cầu hoặc vật lý?


19

Theo tôi biết, có 4 loại giao diện mạng chính trong Linux: tun, tap, cầu và vật lý.

Khi tôi làm quản trị hệ thống trên các máy chạy KVM, tôi thường bắt gặp các giao diện chạm, cầu và vật lý trên cùng một máy mà không thể phân biệt chúng. Tôi không thể thấy bất kỳ sự khác biệt đáng kể nào trong ifconfigkết quả, như trong ipkết quả.

Làm thế nào tôi có thể biết nếu một giao diện là một tun, tap, cầu hoặc vật lý?

lưu ý: Tôi không khẳng định rằng không có loại giao diện mạng nào khác trong Linux, nhưng tôi chỉ biết 4 loại này.

Câu trả lời:


18

Tôi không nghĩ có một cách dễ dàng để phân biệt chúng. Chọc vào trong /sys/class/nettôi thấy những điểm khác biệt sau:

  • Thiết bị vật lý có một /sys/class/net/eth0/deviceliên kết tượng trưng
  • Cầu có một /sys/class/net/br0/bridgethư mục
  • Các thiết bị TUN và TAP có một /sys/class/net/tap0/tun_flagstệp
  • Cầu và giao diện loopback có 00:00:00:00:00:00trong/sys/class/net/lo/address

Ý tưởng hay để tìm trong / sys /
user368507

Các thiết bị ảo cũng có thể có một deviceliên kết tượng trưng như vậy : ls -l /sys/class/net/lan1/deviceHiển thị /sys/class/net/lan1/device -> ../../../dsa.0trên bộ định tuyến chạy OpenWrt (nhúng Linux). Tôi thấy rằng Giao diện vật lý có một mục Ngắt trong đầu ra của ifconfig. Thật kỳ lạ khi một câu hỏi đơn giản như vậy về Giao diện dường như rất khó trả lời. Cuộc điều tra vẫn tiếp tục ...
Lumi

Làm thế nào về một thiết bị ảo ppp?
Mâtt Frëëman

23

Về thiết bị TUN và TAP: không đủ để thực hiện kiểm tra ở trên.

Lý do là có thể có trường hợp khi chúng ta tạo một thiết bị TUN và (do lỗi) gọi nó là tap10; hoặc tạo một thiết bị TAP và đặt tên là tun10. Vì vậy, làm thế nào tôi có thể biết nếu đó là thiết bị điều chỉnh hoặc thiết bị nhấn, vì cả hai khóa học sẽ có mục "tun_flags"?

Câu trả lời là chạy ethtool -i tunOrTapDeviceName.

  • Trong trường hợp thiết bị TAP, chúng tôi sẽ nhận được: "bus-information: tap".
  • Trong trường hợp thiết bị TUN, chúng tôi sẽ nhận được: "bus-information: tun".

Thí dụ

$ 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

Không có lệnh ethtool để tìm xem một giao diện mà nó là vật lý hay cầu nối?
madCode

Câu trả lời này là giải pháp ngắn gọn và có mục đích chung hơn.
Joshua Miller

@madcode Trong trường hợp chung bạn muốn driverlĩnh vực này. cầu sẽ hiển thị driver: bridge. Thật không may tun / tap cả hai hiển thị như driver: tun, phá vỡ mô hình :).
nguồn

Vâng, đây là câu trả lời. Một cái khác chỉ cho bạn biết nếu intf là ảo không! Bạn có thể đặt tên cho giao diện nhấn với tên không cho biết bản chất của giao diện
MiniMe

9

Bạn có thể sử dụng -dtùy chọn không có giấy tờ nhiều hơn hoặc ít hơn để ip(8)cho bạn biết loại thiết bị nhất định bao gồm tun, tap & veth:

ví dụ

$ 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

... Lưu ý tunvề dòng cuối cùng.

Bạn cũng có thể sử dụng -dvới ip l.


iproute2 là một công cụ tốt như vậy. Quá tệ nên nhiều tính năng rất khó để khám phá.
anh chàng nhỏ bé

4

Lệnh này sẽ thực hiện công việc:

tuntap ip

Ví dụ kết quả:

vnet0: tap

hoặc với chi tiết:

ip -details tuntap

Ví dụ kết quả:

vnet0: tap
    Attached to processes: qemu-system-x86(2225)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.