ifconfig not reporting Endereço atribuído pelo DHCP

1

Estou atualizando o kernel para um appliance, e me deparei com uma mudança em como o DHCP funciona. Perto do final do meu script de inicialização, eu verifico se já tenho um endereço atribuído pelo DHCP, e se não, eu me auto-atribuo:

ifconfig eth0 169.254.1.1 up

Então, quando o DHCP finalmente me pega um endereço, ele atribui a eth0. E, de fato, isso parece acontecer: se eu conseguir descobrir o endereço do appliance, posso falar sobre esse endereço atribuído ao DHCP.

No entanto, o ifconfig continua mostrando o endereço 169.254.1.1.

Este é um novo comportamento que estou vendo com o dhcpcd 5.2.12 e o linux 3.2.9.

Como posso atribuir um endereço para o caso em que não há servidor DHCP, permita que o DHCP substitua essa designação quando ela aparecer e, subseqüentemente, como posso descobrir meu endereço atribuído por DHCP?

root@appliance:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:22:4D:4F:B3:69  
          inet addr:169.254.1.1  Bcast:169.254.255.255  Mask:255.255.0.0
          inet6 addr: fe80::222:4dff:fe4f:b369/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2686 errors:0 dropped:1 overruns:0 frame:0
          TX packets:589 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:403995 (394.5 Kb)  TX bytes:73691 (71.9 Kb)
          Interrupt:20 Memory:fa200000-fa220000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:10 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:985 (985.0 b)  TX bytes:985 (985.0 b)

root@appliance:~# grep dhcp /var/log/messages
Jul 18 16:03:55 (none) dhcpcd[2330]: version 5.2.12 starting
Jul 18 16:03:56 (none) dhcpcd[2330]: eth0: waiting for carrier
Jul 18 16:03:57 (none) dhcpcd[2330]: eth0: carrier acquired
Jul 18 16:03:57 (none) dhcpcd[2330]: eth0: broadcasting for a lease
Jul 18 16:03:57 (none) dhcpcd[2330]: eth0: offered 10.10.0.177 from 10.10.0.1
Jul 18 16:03:57 (none) dhcpcd[2330]: eth0: acknowledged 10.10.0.177 from 10.10.0.1
Jul 18 16:03:57 (none) dhcpcd[2330]: eth0: checking for 10.10.0.177
Jul 18 16:04:02 (none) dhcpcd[2330]: eth0: leased 10.10.0.177 for 86400 seconds
Jul 18 16:04:02 (none) dhcpcd[2330]: forked to background, child pid 2868
    
por Joshua Smith 18.07.2012 / 22:31

2 respostas

1

Toda a ideia do RFC3927 é que o endereço deve ser stateless. Como tal, os clientes DHCP devem gerar aleatoriamente os dois últimos octetos do endereço e, subsequentemente, verificar se o referido endereço é único através de um ARP. Definir estaticamente um valor (ou seja, 169.254.1.1) anula esse propósito. Deixe o dhcpcd (ou qualquer cliente que você esteja usando) fazer o seu trabalho e isso pode resolver o seu problema.

    
por 18.07.2012 / 22:53
1

Eu encontrei um trabalho decente. Em vez de configurar o eth0 para ter um endereço IP fixo, criei uma interface de rede virtual para atuar como fallback. Por isso:

ifconfig eth0:0 169.254.1.1 up

Se não houver um servidor DHCP, posso falar com o dispositivo usando o endereço 169.254, e se houver um servidor DHCP, ele será atribuído a eth0, e eu posso vê-lo com ifconfig!

    
por 19.07.2012 / 16:50