Eu tenho um pequeno roteador doméstico executando o OpenWrt (tipo de Linux embarcado para roteadores). Possui cinco portas Ethernet, uma rotulada WAN e quatro rotuladas LAN 1 a 4. Ela possui as seguintes Interfaces de Rede definidas como 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
Como você pode ver, vários dispositivos, mas apenas um endereço MAC.
Eu entendo que alguns desses dispositivos são virtuais. Vamos colocar de lado lo
e pppoe-wan
, esse é o dispositivo de loopback e minha conexão PPPoE. Mas para o resto deles, como posso saber se são físicos ou virtuais? Eu entendo que há uma convenção de nomenclatura para rotular Interfaces virtuais como eth0.1
, mas isso obviamente não é respeitado aqui. Vamos ver a saída de ifconfig
para duas dessas interfaces:
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
Além do detalhe obscuro de txqueuelen
ter um valor diferente de zero para eth0
, a única diferença marcante é que eth0
tem uma entrada Interrupt
, que, até onde eu sei, é um recurso de hardware. Então é assim que você diz a uma Interface de Rede que é física ou não, procurando por uma entrada Interrupt
em ifconfig
? Ou há uma maneira melhor? Uma maneira simples e direta de descobrir se um dispositivo de rede é físico ou virtual?
Observe que há uma pergunta relacionada , mas embora tenha uma resposta aceita, ela não é conclusiva.
Atualizar
Em resposta à resposta de derobert, aqui estão as informações derivadas de 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
[Adendo a esta lista: wlan0
teria aparecido bem como wlan0 -> ../../devices/platform/ath9k/net/wlan0
, mas quando eu copiei a lista acima eu tive a WLAN desativada, e é por isso que ela não apareceu.]
Eu diria que eth0
é o único dispositivo. Não está claro o que é dsa.0
.
E em resposta à resposta de Bryan Agee:
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 '…'