Amarrando placas de rede ao endereço MAC

Publicado por Racy Rassilan em 30/08/2009

[ Hits: 22.188 ]

 


Amarrando placas de rede ao endereço MAC



Esta configuração serve para evitar dores de cabeça quando você tem em uma máquina com o Linux, duas placas de rede e ele por algum motivo começa a trocar a ordem das mesmas fazendo uma confusão nas suas configurações, dando muita dor de cabeça.

Algum tempo atrás resolvi instalar duas placas de rede em um computador com o Linux, configurava o arquivo /etc/network/interfaces e o /etc/resolv.conf para dizer ao sistema qual IP e gateway cada placa utilizaria e depois salvava minhas configurações. Então a internet funcionava, mas depois que eu desligava o PC ela parava de funcionar, se eu desligasse e ligasse novamente ela voltava a funcionar, algo muito irritante.

Resumindo, muita dor de cabeça e noite de sono perdida quando não se consegue resolver um problema, pois o Linux fazia o seguinte: iniciava com a primeira placa sendo eth0 e a segunda sendo eth1 e no próximo boot ele fazia o inverso, trocava a primeira placa por eth1 e a segunda sendo eth0, ou seja, uma hora minha internet funcionava e outra não.

Este tutorial tem por objetivo ensinar em quatro passos como resolver de forma rápida, simples e definitiva esse problema que tem tirado o sono de muitos por aí, como aconteceu comigo.

Primeiro passo

Temos que descobrir qual é o endereço MAC (Endereço Físico) de cada placa de rede. Para isso digitamos os seguintes comandos:

# ifconfig eth0 | grep HW
# ifconfig eth1 | grep HW


Onde o comando ifconfig seguido de eth0 nos retorna qual MAC pertence à placa eth0 e qual MAC pertence à placa eth1. Se houver mais placas basta ir trocando os ethX para eth2, eth3, eth4 etc.

Segundo passo

Depois de descoberto qual é o MAC de cada placa de rede, agora devemos criar o arquivo z99-network.rules dentro do diretório /etc/udev/rules.d/. Este arquivo servirá para amarrarmos o MAC à interface eth0, eth1, eth3 etc. Quando o Linux der o boot ele lerá todos os arquivos de configuração que existirem dentro do diretório rules.d, inclusive o nosso, olha só que moral. ;-)

Para isso coloque dentro do arquivo a seguinte configuração (exemplo genérico):

SUBSYSTEM=="net",SYSFS{address}=="MAC_DA_PLACA_DE_REDE_1",NAME="eth0"
SUBSYSTEM=="net",SYSFS{address}=="MAC_DA_PLACA_DE_REDE_2",NAME="eth1"
.
.
.
SUBSYSTEM=="net",SYSFS{address}=="MAC_DA_PLACA_DE_REDE_N",NAME="ethN"


Exemplo real:

SUBSYSTEM=="net",SYSFS{address}=="00:d0:09:b4:d7:af",NAME="eth0"
SUBSYSTEM=="net", SYSFS{address}=="00:15:00:4b:68:db",NAME="eth1"

Obs.: Tudo deve ser escrito sem espaço, imagine estar digitando meu e-mail, racy@unipacto.com.br. A única coisa que é permitida é dar um enter entre um SUBSYSTEM e outro.

Feito isso salve o arquivo.

Terceiro passo

Depois de criado e configurado o arquivo z99-network.rules, basta configurarmos os arquivos /etc/network/interfaces e /etc/resolv.conf para dizer ao sistema qual IP e gateway cada placa utilizará e depois salvar as configurações.

Ficará assim o conteúdo do arquivo interfaces:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.10.101
netmask 255.255.255.0
net 192.168.10.10
gateway 192.168.10.10

auto eth1
iface eth1 inet static
address 192.168.10.168
netmask 255.255.255.0
net 192.168.10.10
gateway 192.168.10.10

Salve o arquivo.

Ficará assim o conteúdo do arquivo resolv.conf:

nameserver 200.165.132.148
nameserver 200.165.132.155

Salve o arquivo.

Obs.: Você deve configurar os IPs de acordo com sua rede e seu gateway. O único que pode ser configurado idêntico ao tutorial é o arquivo resolv.conf, que no exemplo foi utilizado os IPs que são os servidores de resolução de nomes DNS da própria Telemar.

Quarto passo

Reinicie seu computador para as configurações entrarem em vigor.

Feitas todas essas configurações, você terá resolvido definitivamente o problema do troca troca de suas placas de rede, bem como sua internet e sua rede passarão a funcionar de forma estável no Linux, tendo de duas ou mais placas instaladas no computador.

Agora você pode voltar a dormir tranquilo. ;-)

Outras dicas deste autor

Instalando e configurando servidor SSH (Ubuntu)

Configurando servidor DHCP3

Configuração de internet e rede no Ubuntu 9.04 Desktop

Compartilhar internet pelo Linux

Servidor Apache2 + MySQL + PHP5 + PHPMyAdmin (Ubuntu)

Leitura recomendada

Criando um servidor Teamspeak3

Wireless no Sony Vaio NR 320 com Ubuntu Linux 8.10

Bloqueando PortScanners com IPTABLES

Inserindo uma imagem no Grub 2

Lendo partição NTFS no XP com Fedora Core 4

  

Comentários
[1] Comentário enviado por brizao em 31/08/2009 - 06:12h

Olá, mto bom o artigo, coincidentemente cheguei numa parte do livro Servidores Linux onde o Morimoto dá uma dica sobre isso, aqui está:

"O problema é solucionado através do uso de um pequeno utilitário chamado "ifrename", que permite fixar os devices utilizados para as placas. Utilizá-lo é bem simples, comece instalando o pacote via apt-get:

apt-get install ifrename

Com as duas placas de rede configuradas, da forma como serão usadas, cheque os endereços MAC das interfaces usando o comando ifconfig -a e crie o arquivo /etc/iftab, relacionando o device de cada interface com o endereço MAC correspondente, seguindo o modelo abaixo:

#/etc/iftab

eth0 mac (endereço mac)
eth1 mac (endereço mac)

Uma vez criado, o arquivo é verificado a cada boot e a configuração se torna persistente resolvendo o problema, esta dica não se aplica às versões recentes do Ubuntu/Kubuntu onde o problema foi solucionado através do uso de regra do udev


que é sobre o artigo, bom, só uma dica a mais hehe

Abraços

[2] Comentário enviado por nox6000 em 31/08/2009 - 08:57h

É sempre bom conhecer soluções auternativas brizao. O pior é quando não se acha nem uma solução hehehe ;-)

[3] Comentário enviado por dfsantos em 31/08/2009 - 10:15h

parabens amigo otima dica

[4] Comentário enviado por paulotrad em 18/09/2009 - 12:53h

excelente dica,
estou testando agora no meu srvr

[5] Comentário enviado por removido em 01/10/2009 - 04:55h

Parabéns pela dica!!!

Abs!!!

http://reprogramandovoce.blogspot.com

[6] Comentário enviado por escorpiao512 em 15/11/2009 - 12:06h

Bom dia a todos.
Bem, quando dei o comando para identificar meu endereço MAC o que me foi retornado foi o seguinte:

# ifconfig eth1 | grep HW
eth1 Link encap:Ethernet Endereço de HW ff:ff:ff:ff:ff:ff

Isso é possível? Acho que essa interface é apenas lógica, concordam? Consegui chegar nesse endereço depois de muita briga. Vocês podem conferir toda a história nesse outro tópico do viva o linux.

Tópico: http://www.vivaolinux.com.br/topico/Puppy-Linux/eth0-sumiu.;

Não sei mais o que fazer. Acho que minha placa de rede pifou e estou apenas me enganando. Não tem como fazer um teste pra saber se ela ainda funciona?

Grato.
Ha... caso queiram responder favor respondam no topico acima divulgado.

[7] Comentário enviado por paulotrad em 15/12/2009 - 09:37h

ola..
para amarrar o mac na placa..
vc tem q criar o arquivo ethers na pasta /etc/
e digitar o ip e o mac ao lado

ex.: 192.168.1.254 00:00:00:00:00

depois dá um # arp -f

para vc identificar o mac da placa dê o comando ifconfig eth0 ou eth1 dependendo da sua placa

e se quiser que tenha ip fixo basta ir no dhcp e inserir o host

flws.. espero ter ajudado.

[8] Comentário enviado por removido em 23/12/2011 - 11:13h

Olá Pessoal,

Será que podem tirar uma dúvida minha?

Eu uso o Ubuntu 11.04
No meu diretório rules.d já tem um arquivo chamado 70-persistent-net.rules que contem a seguinte configuração:

d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device 0x10de:0x03ef (forcedeth)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:25:22:48:93:a3", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"

# PCI device 0x1106:0x3106 (via-rhine)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:02:2a:d4:76:c1", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

# PCI device 0x13f0:0x0200 (sundance)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:08:54:2c:af:1e", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"


Como estou tendo problemas com a minha rede, eu começei a achar que pudesse ser problema da troca de nomes entre as placas de rede. Mas, parece que elas já estão amarradas aos seus MAC. Poderiam me confirmar essa dúvida ? Pois, todo vez que reinicio meu Ubuntu ele modifica o arquivo /etc/network/interfaces e perde a configuração da rede que eu coloquei. Eu já pesquisei muito e também tentei colocar essa configuração no arquivo rc.local, mas nao funcionou. :( . Não sei mais o que fazer . Talvez seja problema dessa versão do Ubuntu que esteja muito instável..

[9] Comentário enviado por marceloviana em 20/04/2016 - 03:26h

Ótima dica!
Obrigado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts