Placas de Rede no Linux

Posted: terça-feira, 9 de novembro de 2010 by Wairisson Gomes in
0

Por Otávio, Riopro Blog.

Quando eu comecei a usar Linux, demorei a me adaptar a existência de apelidos (aliases) padrões para as placas de rede (eth0, eth1, lo…). Ao aprender sobre roteamento e firewall no Linux, esse pensamento se tornou mais intuitivo. Nessa época, a configuração dos alias de placas de rede se dava no arquivo /etc/modules.conf, que depois passou a se chamar /etc/modprobe.conf e que hoje no Ubuntu foi transformado no diretório de aliases /etc/modprobe.d e que possui como arquivo “principal” /etc/modprobe.d/aliases. A criação do alias consistia em colocar mais uma linha nesse arquivo:

alias ethX NOME_DO_MODULO_DA_PLACA_DE_REDE

Colocar o alias não evitava, porém, alguns problemas. Muitas vezes um micro possuía 2 placas de rede do mesmo modelo e fabricante. Isso fazia com que a cada boot, as placas pudessem se inverter, o que ocasionava muita dor de cabeça. Além disso, como o armazenamento do alias era manual, a substituição de uma placa de rede por outra de modelo diferente, fazia com que o usuário tivesse que iniciar o micro, ver que a placa não levantou sozinha e substituir o nome do módulo no arquivo de alias, para reiniciar o micro novamente e só aí ver o mesmo funcionando.

Isso era um pouco trabalhoso, principalmente para os usuários menos experientes. Como tudo em Linux que não está bom, esse processo foi amplamente reescrito.

Primeiro, foram utilizadas ferramentas como o hotplug, que permitia que o Linux identificasse no boot substituições de hardwares e já se adaptasse para esses novos hardwares (muito útil para os casos de substituição de placas de rede descritos acima).

A partir do Kernel 2.6 passou-se a utilizar o udev, que é o device manager para Linux. O udev, tal qual o hotplug, não gerencia apenas placas de rede, mas sim todo o hardware da máquina. Mas para as placas de rede ele trouxe algo importante. As placas não recebem mais um alias para cada módulo, mas sim um alias para cada Mac Address. Um exemplo de configuração de aliases no Ubuntu 7.10 abaixo:

$cat /etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, probably run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single line.
# PCI device 0x10de:0x0057 (sky2)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:b6:f2:66:a5:9a", NAME="eth0"
# PCI device 0x1969:0x1048 (atl1)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:e0:a6:1f:63:6a", NAME="eth1"
# PCI device 0x11ab:0x4362 (sky2)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:e0:8c:c8:4c:2c", NAME="eth2"

Mesmo que você substitua uma placa de rede, o udev não vai apagar o registro da placa anterior. Vai apenas verificar que não existe alias para o Mac Address identificado no boot e acrescentar uma nova linha. Isso tem seus problemas (ok, não são problemas, mas sim detalhes). Se você troca a placa de rede de um computador 4 vezes, a última placa terá o alias eth3, mesmo que só exista ela no seu computador/servidor.

Se quiser mudar de eth3 para eth0, pode realizar a mudança no arquivo /etc/udev/rules.d/70-persistent-net.rules. Mas essa mudança terá que ser realizada manualmente.

Outras ferramentas úteis para placas de rede são a ethtool e a lshw. Através da primeira, se torna simples descobrir qual o modelo/driver da placa de rede de cada alias. Por exemplo, digitando:

$ethtool -i eth0
driver: sky2
version: 1.18
firmware-version: N/A
bus-info: 0000:02:00.0

Podemos ver que o ethtool retorna qual o driver utilizado pela placa e qual o bus-info dessa placa. Parecido, mas com mais informações, temos o lshw. Digitando:

$lshw -C network
WARNING: you should run this program as super-user.
*-network
description: Ethernet interface
product: 88E8055 PCI-E Gigabit Ethernet Controller
vendor: Marvell Technology Group Ltd.
physical id: 0
bus info: pci@0000:02:00.0
logical name: eth0
version: 12
serial: 00:a0:d1:7f:53:aa
width: 64 bits
clock: 33MHz
capabilities: bus_master cap_list ethernet physical
configuration: broadcast=yes driver=sky2 driverversion=1.18 firmware=N/A \
ip=10.1.0.112 latency=0 module=sky2 multicast=yes
*-network
description: Wireless interface
product: PRO/Wireless 3945ABG Network Connection
vendor: Intel Corporation
physical id: 0
bus info: pci@0000:03:00.0
logical name: eth1
version: 02
serial: 00:1b:77:a0:5b:3f
width: 32 bits
clock: 33MHz
capabilities: bus_master cap_list ethernet physical wireless
configuration: broadcast=yes driver=ipw3945 driverversion=1.2.2mp.ubuntu1 \
firmware=14.2 1:0 () latency=0 module=ipw3945 multicast=yes wireless=unassociated
Teremos listado todas as informações sobre placas de rede de nosso computador, inclusive com o Mac Address e informações qualitativas das placas.

Referências: http://blog.riopro.com.br/2008/03/26/placas-de-rede-no-linux/

0 comentários: