como verificar se o kernel suporta alias de ip?

2

Surpreendentemente, não obtive resultados explícitos quando pesquisei "suporte ao kernel ip alias", e procurei o administrador da rede linux, 3a edição , diz:

check that you have a /proc/net/ip_alias file; if not, you will have to recompile your kernel

parece que essa declaração está desatualizada, porque não tenho o arquivo /proc/net/ip_alias , mas posso executar sudo ifconfig eth0:0 192.168.0.1 e a saída de sudo ifconfig -a é:

eth0      Link encap:Ethernet  HWaddr f0:de:f1:b8:2b:b9  
          inet addr:10.2.14.102  Bcast:10.2.14.255  Mask:255.255.255.0
          inet6 addr: fe80::f2de:f1ff:feb8:2bb9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:167089 errors:0 dropped:0 overruns:0 frame:0
          TX packets:147915 errors:53 dropped:0 overruns:0 carrier:53
          collisions:78714 txqueuelen:1000 
          RX bytes:142585362 (135.9 MiB)  TX bytes:25127121 (23.9 MiB)
          Interrupt:20 Memory:f2500000-f2520000 

eth0:0    Link encap:Ethernet  HWaddr f0:de:f1:b8:2b:b9  
          inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:20 Memory:f2500000-f2520000 
    
por cli__ 08.01.2014 / 14:39

1 resposta

0

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.)
    
por 08.01.2014 / 16:01