У меня есть небольшой домашний маршрутизатор под управлением OpenWrt (вид встроенного Linux для маршрутизаторов). Он имеет пять портов Ethernet, один с меткой WAN и четыре с меткой LAN от 1 до 4. Он имеет следующие сетевые интерфейсы, определенные в соответствии с ifconfig
:
root@TIBERIUS: ~ > ifconfig | grep Link
br-lan Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
eth0 Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
lan1 Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
lan2 Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
lan3 Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
lan4 Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
lo Link encap:Local Loopback
pppoe-wan Link encap:Point-to-Point Protocol
wan Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
wlan0 Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
Как видите, довольно много устройств, но только один MAC-адрес.
Я понимаю, что некоторые из этих устройств являются виртуальными. Давайте отложим в сторону lo
и pppoe-wan
это устройство loopback и мое соединение PPPoE. Но для остальных из них, как я могу сказать, физические они или виртуальные? Я понимаю, что существует соглашение об именовании для обозначения виртуальных интерфейсов eth0.1
, но это явно не соблюдается. Давайте посмотрим на вывод ifconfig
для двух из этих интерфейсов:
root@TIBERIUS: ~ > ifconfig wan
wan Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:15007 errors:0 dropped:0 overruns:0 frame:0
TX packets:12055 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:13341276 (12.7 MiB) TX bytes:1831757 (1.7 MiB)
root@TIBERIUS: ~ > ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:25799 errors:0 dropped:0 overruns:23 frame:0
TX packets:25294 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:15481996 (14.7 MiB) TX bytes:15160380 (14.4 MiB)
Interrupt:4
Помимо непонятной детализации txqueuelen
ненулевого значения eth0
, единственное различие заключается в том, что в нем eth0
есть Interrupt
запись, которая, насколько я знаю, является аппаратной функцией. Так вот как вы говорите, что сетевой интерфейс является физическим или нет, ища Interrupt
вход в ifconfig
? Или есть лучший способ? Простой и понятный способ узнать, является ли сетевое устройство физическим или виртуальным?
Обратите внимание, что есть связанный вопрос, но, хотя он и имеет принятый ответ, он не является окончательным.
Обновить
В ответ на ответ Дероберта вот информация, полученная из ls -l /sys/class/net
:
br-lan -> ../../devices/virtual/net/br-lan
eth0 -> ../../devices/platform/ag71xx.0/net/eth0
lan1 -> ../../devices/platform/dsa.0/net/lan1
lan2 -> ../../devices/platform/dsa.0/net/lan2
lan3 -> ../../devices/platform/dsa.0/net/lan3
lan4 -> ../../devices/platform/dsa.0/net/lan4
lo -> ../../devices/virtual/net/lo
pppoe-wan -> ../../devices/virtual/net/pppoe-wan
wan -> ../../devices/platform/dsa.0/net/wan
[Приложение к этому списку: wlan0
показалось бы так же хорошо wlan0 -> ../../devices/platform/ath9k/net/wlan0
, но когда я скопировал приведенный выше список, у меня была отключена WLAN, поэтому он не появился.]
Я бы сказал, eth0
это единственное устройство. Не понятно что это dsa.0
такое.
И в ответ на ответ Брайана Эйджи:
root@TIBERIUS: ~ > cat /etc/config/network
config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config interface 'eth'
option ifname 'eth0'
option proto 'none'
config interface 'lan'
option ifname 'lan1 lan2 lan3 lan4'
option type 'bridge'
option proto 'static'
option ipaddr '192.168.33.1'
option netmask '255.255.255.0'
config interface 'wan'
option ifname 'wan'
option proto 'pppoe'
option username '…'
option password '…'
источник
lshw -class network
lshw
отсутствует в списке пакетов. Знающий и целеустремленный парень может успешно установить инструменты разработкиtmpfs
, но стоит ли это того? Я собираюсь углубить свое понимание работы с сетью Linux с помощью стандартного ПК. Это будет проще. Хотя я не совсем понимаю эту конфигурацию маршрутизатора, она работает нормально. Спасибо за вашу помощь.Ответы:
Вы можете проверить
/sys
:Итак, реальные устройства отображаются в / sys / class / net. Обратите внимание, что псевдонимы (например, lan: 0) этого не делают (поэтому вы можете определить, какие из них являются псевдонимами). И вы можете ясно увидеть, какие из них являются аппаратными (lan), а какие нет (br0, lo, tun0).
уточнить
Вы можете сказать, какие из них реальны, потому что все виртуальные находятся в виртуальном. И LAN находится на шине PCI.
В вашем случае у вас есть шесть: eth0, wan и lan1–4. Это довольно странно, так как вы говорите, что у вас всего пять портов. Я полагаю, что eth0 фактически подключен к микросхеме коммутатора, а остальные 5 портов являются портами этого коммутатора. wlan0, вероятно, тоже реален (это будет беспроводной адаптер), хотя он не отображается в / sys….
Итак, я бы сказал, что для всех практических целей ваши настоящие порты - wan, lan1–4 и wlan0. br-lan - это мост, настроенный так, чтобы все 4 порта локальной сети работали как коммутатор (так что вы можете разделить этот коммутатор).
источник
ag71xx
этого заставляет меня думать, что это аппаратное обеспечение, так как оно выглядит как драйвер.wlan0
будет присутствовать в списке устройств, если/sys/class/net
оно было включено, когда я скопировал список. :) Я уже добавил это выше. Я не согласен с вами по количеству устройств, думаю, их всего два, LAN и WLAN. Но это мелочь ... хороший ответ, принят, спасибо!brctrl delif br-lan lan1
(или аналогичный), чтобы сбросить порт с моста. Я подозреваю, что тогда он будет функционировать как отдельный порт (не является частью коммутатора локальной сети).Предполагая, что MAC-адрес вашего интерфейса не был подделан , вы можете попробовать использовать ethtool :
« Постоянный адрес: 00: 00: 00: 00: 00: 00 » будет означать, что это виртуальный сетевой интерфейс.
Следующий цикл bash будет отображать MAC-адрес для всех сетевых интерфейсов:
источник
Я бы начал с заглядывания внутрь
/etc/network/config
; большинство дистрибутивов имеют аналогичный файл для определения и настройки сетевых устройств. В Debian / Ubuntu это / etc / network / interfaces. Если бы вы разместили содержимое этого, мы могли бы определить псевдоним, связь и записи моста; остальное будет вашим физическим устройством.Посмотрев на
ifconfig
вывод, вы можете сказать (как вы уже упоминали) по устройствам, которые имеют прерывания (IRQ); многим также назначена память, чего нет у виртуальных интерфейсов.Вы никогда не сможете судить только по MAC-адресам, так как связи ( агрегация ссылок ) переопределят mac отдельных устройств, и мосты будут использовать то же самое. Таким образом, если у вас есть два устройства, связанных и соединенных мостом - общая конфигурация для виртуальных хостов и маршрутизаторов высокой доступности - будет четыре устройства с одним и тем же Mac:
Очевидно, что псевдонимы, используемые в openwrt, не те, что указаны выше, но концепция верна; Я использовал их, потому что они стандартная практика.
источник
/etc
принципу. Например, интерфейсы, созданные NetworkManager, там не упоминаются.Я думаю, что простой проверки, если значение
/sys/class/net/<interface>/type
1 (ARPHRD_ETHER) должно быть достаточно, чтобы понять, является ли устройство физическим.http://lxr.linux.no/linux+v3.0/include/linux/if_arp.h#L30
например. базовое имя $ (dirname
grep -l ^1$ /sys/class/net/*/type
)источник