私の知る限り、Linuxのネットワークインターフェイスには、主に、tun、tap、bridge、およびphysicalの4つのタイプがあります。
KVMを実行しているマシンでsys adminを実行しているとき、通常、同じマシン上でタップ、ブリッジ、および物理インターフェイスに遭遇しますが、それらを区別することはできません。 ifconfig
の結果のように、ip
の結果に大きな違いはありません。
インターフェイスがtun、tap、bridge、またはphysicalであるかどうかをどのようにして知ることができますか?
注:Linuxには他のタイプのネットワークインターフェイスがないとは言いませんが、知っているのはこれら4つだけです。
それらを区別する簡単な方法はないと思います。 /sys/class/net
次の違いが見つかりました:
/sys/class/net/eth0/device
シンボリックリンク/sys/class/net/br0/bridge
ディレクトリ/sys/class/net/tap0/tun_flags
ファイル00:00:00:00:00:00
/sys/class/net/lo/address
TUNおよびTAPデバイスに関して:上記のチェックを行うだけでは不十分です。
その理由は、TUNデバイスを作成し、(エラーにより)tap10と呼ぶ場合があるためです。または、TAPデバイスを作成し、tun10という名前を付けます。それで、もちろんどちらも「tun_flags」エントリを持つので、それがtunデバイスであるかタップデバイスであるかをどのようにして知ることができますか?
答えはethtool -i tunOrTapDeviceName
を実行することです。
$ 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
ほぼ文書化されていない_-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
に注意してください。
_-d
_と_ip l
_を併用することもできます。
このコマンドは、仕事をします:
ip tuntap
結果の例:
vnet0: tap
または詳細:
ip -details tuntap
結果の例:
vnet0: tap
Attached to processes: qemu-system-x86(2225)