Networking
如何知道網路介面是tap、tun、橋接還是物理介面?
據我所知,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