web-dev-qa-db-ja.com

ネットワークインターフェイスがタップ、調整、ブリッジ、または物理であるかどうかを知る方法は?

私の知る限り、Linuxのネットワークインターフェイスには、主に、tun、tap、bridge、およびphysicalの4つのタイプがあります。

KVMを実行しているマシンでsys adminを実行しているとき、通常、同じマシン上でタップ、ブリッジ、および物理インターフェイスに遭遇しますが、それらを区別することはできません。 ifconfigの結果のように、ipの結果に大きな違いはありません。

インターフェイスがtun、tap、bridge、またはphysicalであるかどうかをどのようにして知ることができますか?

注:Linuxには他のタイプのネットワークインターフェイスがないとは言いませんが、知っているのはこれら4つだけです。

20
user368507

それらを区別する簡単な方法はないと思います。 /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
18
mgorven

TUNおよびTAPデバイスに関して:上記のチェックを行うだけでは不十分です。

その理由は、TUNデバイスを作成し、(エラーにより)tap10と呼ぶ場合があるためです。または、TAPデバイスを作成し、tun10という名前を付けます。それで、もちろんどちらも「tun_flags」エントリを持つので、それがtunデバイスであるかタップデバイスであるかをどのようにして知ることができますか?

答えは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
23
Rami Rosen

ほぼ文書化されていない_-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_を併用することもできます。

10
Ben

このコマンドは、仕事をします:

ip tuntap

結果の例:

vnet0: tap

または詳細:

ip -details tuntap

結果の例:

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