Acesso direto ao conteúdo
Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: Segurança Linux ·  UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Endereço MAC de chipsets NVidia - Uma solução para muitas máquinas

Colaboração: Ricardo Jurczyk Pinheiro

Data de Publicação: 08 de November de 2008

É sabido por muitos que os chipsets southbridge da NVidia tem um probleminha irritante: Quando em uso com o módulo forcedeth, ele recebe o endereço MAC (físico) errado. Logo, se você usa DHCP, é provável que faça que nem eu, que seta o endereço IP das suas máquinas com base no endereço físico. E o que acontece? A máquina não recebe o IP certo. O curioso é que nem todos tem esse problema: Meu desktop tem uma Abit NF8-V (chipset NForce), mas o endereço MAC passado é o certo. Mas em outras placas, não.

Algumas soluções na Internet (http://tinyurl.com/64gtg6 e http://tinyurl.com/5lccut) apontam para fixar o MAC address com uma regra no udev. Funciona muito bem, mas complica quando você usa várias máquinas, e tem que fazer isso "na mão". Eu tenho 52 máquinas com dual-boot ("Janelas" e Linux), sendo que a maioria delas tem esse problema. Fazer isso em cada uma seria uma tarefa inviável. Pensei em montar um script com uma grande tabela, para setar o MAC em cada uma, mas qual seria o identificador único de cada hardware que eu usaria, e que não fosse o endereço físico?

Pensei um pouco, fui futucar... E vi essa saída do dmesg:

  (...)
  [    28.296465] forcedeth 0000:00:07.0: invalid Mac address detected: 9b:ee:b4:ea:0f:00
  (...)

Olhei e vi que nessas placas (Gigabyte GA-M61VME-82, chipset Nforce 6100), o endereço MAC é passado ao contrário para o Linux. Note abaixo como é:

  Endereço MAC certo:  00:0f:ea:b4:ee:9b
  Endereço MAC errado: 9b:ee:b4:ea:0f:00

Logo, podemos fazer uma acochambração no /etc/rc.local: Pego o endereço MAC ao contrário no dmesg, inverto-o e seto via ifconfig (que permite que eu faça MAC spoofing, hehehe). Depois é só rodar o dhclient novamente, e IP certo. Abaixo vai a minha solução, orgulhosamente implementada em três linhas :-)

  ifconfig eth0 down hw ether 00:00:00:00:00:01
  ifconfig eth0 up hw ether $(dmesg | grep Invalid | cut -f5- -d":" | tr ':' ' ' | sed 1q | sed 's/^/§ /;:a;s/\(.*\)§ \+\([^ ]\+\)/\2 \1§/;ta;s/§//' | tr ' ' ':' | cut -f1-6 -d':')
  dhclient eth0

O que ele faz:

1ª linha: Desliga a controladora Ethernet padrão, e seta o MAC address com um endereço zerado.

2ª linha: A "mágica": Ele filtra a saída do dmesg, pega a linha onde o endereço MAC está trocado, remove os dois-pontos ":" como separadores, e usa um comando com o sed para inverter a ordem das palavras. Depois coloca os dois-pontos, e remove o último caracter. Esse endereço MAC certo, ele seta para essa máquina.

3ª linha: Pega o novo IP, baseado nesse MAC address.

Enquanto o chipset não é arrumado, ou o módulo não é mexido... Essa solução está servindo muito bem, por isso estou passando para a Dicas-L, pois pode ser útil para alguém.

Ricardo Jurczyk Pinheiro - Linux user #82838 - http://estudiodaintrospeccao.blogspot.com

Veja a relação completa dos artigos de Ricardo Jurczyk Pinheiro

Formato PDF
Newsfeed RSS
Formato para impressão
PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 2.95/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (1631 votos)

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script
Treinamentos, Consultorias e Soluçoes em TI. Baseados em softwares livres e padrões abertos para ambientes de missão crítica

Submarino.com.br

Programando o Android