Как определить логический тип сетевого устройства linux

с логическим я имею в виду все законные в команде ip link как, например:

 ip link add link dum0 name dum0.200 type vlan protocol 802.1Q id 200 

где логическим типом будет «vlan». Все допустимые типы – это цитата из справочной страницы:

vlan | veth | vcan | манекен | ifb | macvlan | macvtap | может | мост | ipoib | ip6tnl | ipip | сидеть | vxlan | gre | gretap | ip6gre | ip6gretap | ВТИ

Обратите внимание, что это явно не физический тип устройства (например, ethernet, wifi, ppp и т. Д.), Заданный в этом вопросе , который содержит драгоценный камень ссылки на физический тип, который заставил меня проверить его:

 find /sys/class/net ! -type d | xargs --max-args=1 realpath | while read d; do b=$(basename $d) ; n=$(find $d -name type) ; echo -n $b' ' ; cat $n; done dum0.200 1 dum0.201 1 dum1.300 1 dum1.301 1 dummy0 1 ens36 1 ens33 1 lo 772 dum0 1 dum1 1 wlan0 1 

Но, по-видимому, он считает, что оба фиктивных, vlan и wlan устройства имеют тип ARPHRD_ETHER.

Знает ли кто-нибудь больше? Заранее спасибо.

One Solution collect form web for “Как определить логический тип сетевого устройства linux”

Существует способ обхода всех доступных типов и отображение всех интерфейсов для каждого типа (используя ip link show type <type> ). Из этого можно собрать интерфейсы для всех типов, а затем проанализировать интерфейс, о котором нужно знать. Это не изящно, но работает:

Использование bash:

 #!/bin/bash # Arguments: $1: Interface ('grep'-regexp). # Static list of types (from `ip link help`): TYPES=(bond bond_slave bridge dummy gre gretap ifb ip6gre ip6gretap ip6tnl ipip ipoib ipvlan macvlan macvtap nlmon sit vcan veth vlan vti vxlan) iface="$1" for type in "${TYPES[@]}"; do ip link show type "${type}" | grep -E '^[0-9]+:' | cut -d ':' -f 2 | sed 's|^[[:space:]]*||' | while read _if; do echo "${_if}:${type}" done | grep "^${iface}" done 

Сохраните это в файл, сделайте его исполняемым и запустите его с помощью интерфейса, о котором вы хотите узнать, в качестве аргумента.

Для примера dum0.200 beeing типа vlan по ссылке eth0 (созданный с помощью ip link add link eth0 name dum0.200 type vlan protocol 802.1Q id 200 ), выход будет dum0.200@eth0:vlan , что указывает на то, что это тип vlan . Обратите внимание, что @eth0 происходит из ip link show и может быть проанализирован, если хотите.

Поскольку аргумент для этого скрипта интерпретируется как grep -regexp, указание ничего не отображает все, что ip link show type <type> , или указывает только префикс, перечисляет некоторые и т. Д.

  • Пакеты препроцессов отправляют в / из интерфейса
  • Статическая адресация VLAN сети
  • Найти модуль ядра за виртуальным сетевым интерфейсом по информации из sysfs / procfs
  • Включить режим Promiscous в CentOS 7
  • Не удается подключиться к VPN с помощью сетевого администратора, тогда как в командной строке
  • Как работает интерфейс loopback
  • Настройте процесс использования конкретной сетевой платы
  • Как установить статический IP-адрес для отключенного интерфейса?
  • Как создать постоянный интерфейс VxLAN при перезагрузке
  • Нет сетей Wi-Fi в настройках gnome
  • Узнайте название интерфейса Linux
  • Linux и Unix - лучшая ОС в мире.