Networking

如何知道網路介面是tap、tun、橋接還是物理介面?

  • June 10, 2021

據我所知,Linux 中有 4 種主要的網路介面類型:tun、tap、bridge 和physical。

當我在執行 KVM 的機器上進行系統管理時,我通常會在同一台機器上遇到 tap、bridge 和物理介面,而無法區分它們。我看不出結果有任何顯著差異ifconfig,就像ip結果一樣。

我如何知道介面是 tun、tap、bridge 還是物理介面?

注意:我並沒有聲稱 Linux 中沒有其他類型的網路介面,但我只知道這 4 種。

我不認為有一個簡單的方法來區分它們。翻來翻去,/sys/class/net我發現了以下區別:

  • 物理設備有/sys/class/net/eth0/device符號連結
  • 橋樑有一個/sys/class/net/br0/bridge目錄
  • TUN 和 TAP 設備有一個/sys/class/net/tap0/tun_flags文件
  • 網橋和環回介面00:00:00:00:00:00/sys/class/net/lo/address

關於 TUN 和 TAP 設備:僅進行上述檢查是不夠的。

原因是我們可能會創建一個 TUN 設備並(錯誤地)將其命名為 tap10;或創建一個 TAP 設備並將其命名為 tun10。那麼,我怎麼知道它是 tun 設備還是 tap 設備,因為兩者當然都會有“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

引用自:https://unix.stackexchange.com/questions/40560