Você pode descobrir qual módulo um dispositivo está usando por meio desses dois métodos. Nota: As interfaces de alias também são chamadas de interfaces virtuais.
Ao pesquisar isso, não acredito que exista um módulo de kernel real que facilite as interfaces virtuais nas físicas, mas sim uma função que os drivers físicos fornecem.
Usando o sistema de arquivos / sys
Se você observar qual dispositivo está usando, tem uma interface de rede de alias.
$ ip addr show eth1
3: eth1: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:a0:cc:79:36:b3 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.6/24 brd 192.168.1.255 scope global eth1
inet 192.168.1.254/24 brd 192.168.1.255 scope global secondary eth1:0
Observe a última linha, essa é a minha interface virtual, eth1:0
. Agora, para descobrir qual módulo do kernel está facilitando isso. Observando o sistema de arquivos /sys
para este dispositivo. O caminho será o dispositivo base que tem o alias anexado a ele, eth1
em nosso exemplo.
$ ls -l /sys/class/net/eth1/device/driver/
total 0
lrwxrwxrwx 1 root root 0 Jan 8 09:42 0000:00:0a.0 -> ../../../../devices/pci0000:00/0000:00:0a.0
lrwxrwxrwx 1 root root 0 Jan 8 09:42 0000:00:0b.0 -> ../../../../devices/pci0000:00/0000:00:0b.0
Portanto, se ls -l
seguir esses caminhos, obteremos o seguinte driver que está sendo usado pelo dispositivo.
$ ls -l /sys/class/net/eth1/device/driver/0000\:00\:0*/ | grep driver
/sys/class/net/eth1/device/driver/0000:00:0a.0/:
lrwxrwxrwx 1 root root 0 Jan 8 09:42 driver -> ../../../bus/pci/drivers/natsemi
/sys/class/net/eth1/device/driver/0000:00:0b.0/:
lrwxrwxrwx 1 root root 0 Jan 8 09:43 driver -> ../../../bus/pci/drivers/natsemi
Então, estamos usando o driver natsemi
.
$ lsmod | grep natsemi
natsemi 32673 0
lshw
Outro método para encontrar o driver é usar a ferramenta lshw
e consultar os dispositivos de rede.
Exemplo
$ sudo lshw -C network
...
*-network:1
description: Ethernet interface
product: DP83815 (MacPhyter) Ethernet Controller
vendor: National Semiconductor Corporation
physical id: b
bus info: pci@00:0b.0
logical name: eth1
version: 00
serial: 00:a0:cc:79:36:b3
size: 100MB/s
capacity: 100MB/s
width: 32 bits
clock: 33MHz
capabilities: bus_master cap_list ethernet physical tp mii fibre 10bt 10bt-fd 100bt 100bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=natsemi driverversion=1.07+LK1.0.17 duplex=full ip=192.168.1.6 latency=64 link=yes maxlatency=52 mingnt=11 multicast=yes port=twisted pair speed=100MB/s
resources: ioport:ec00-ecff iomemory:e8020000-e8020fff irq:12
As principais linhas desta saída são:
bus info: pci@00:0b.0
logical name: eth1
configuration: autonegotiation=on broadcast=yes driver=natsemi driverversion=1.07+LK1.0.17 duplex=full ip=192.168.1.6 latency=64 link=yes maxlatency=52 mingnt=11 multicast=yes port=twisted pair speed=100MB/s
Se você observar a linha configuration:
, verá o driver=natsemi
. Este é o mesmo módulo do kernel.
Então, onde está / proc / net / ip_alias?
Este é um recurso mais antigo nos kernels Linux < 2.2 que foi removido / retirado na mudança para os kernels 2.4+. Veja o IP-Aliases Howto, por exemplo .
trecho
- IP Alias is standard in kernels 2.0.x and 2.2.x, and available as a compile-time option in 2.4.x (IP Alias has been deprecated in 2.4.x and replaced by a more powerful firewalling mechanism.)