Насколько я знаю, в Linux существует 4 основных типа сетевых интерфейсов: tun, tap, bridge и физический.
Когда я выполняю sys admin на машинах под управлением KVM, я обычно сталкиваюсь с tap, bridge и физическими интерфейсами на одной машине, не имея возможности их различить. Я не вижу каких-либо существенных различий в ifconfig
результатах, как в ip
результатах.
Как я могу узнать, является ли интерфейс Tun, Tap, Bridge или физическим?
примечание: я не утверждаю, что в Linux нет других типов сетевых интерфейсов, но я знаю только эти 4.
device
символическую ссылку:ls -l /sys/class/net/lan1/device
Показывает/sys/class/net/lan1/device -> ../../../dsa.0
на маршрутизаторе, работающем под OpenWrt (встроенный Linux). Я обнаружил, что физические интерфейсы имеют запись прерывания на выходеifconfig
. Странно, что на такой простой вопрос об интерфейсе так сложно ответить. Расследование продолжается ...Относительно устройств TUN и TAP: недостаточно выполнить вышеуказанную проверку.
Причина в том, что могут быть случаи, когда мы создаем устройство TUN и (по ошибке) называем его tap10; или создайте устройство TAP и назовите его tun10. Итак, как я могу узнать, является ли оно устройством tun или устройством прослушивания, так как оба, конечно, будут иметь записи "tun_flags"?
Ответ - бежать
ethtool -i tunOrTapDeviceName
.пример
источник
driver
поле. мосты покажетdriver: bridge
. К сожалению, TUN / TAPP оба обнаруживаются какdriver: tun
, ломая образец :).Вы можете использовать более или менее недокументированную
-d
опциюip(8)
, которая сообщает тип определенных устройств, включая tun, tap & veth:например
... обратите внимание
tun
на последнюю строку.Вы также можете использовать
-d
сip l
.источник
Эта команда сделает работу:
ip tuntap
Пример результата:
или с деталями:
ip-подробности tuntap
Пример результата:
источник