comportamento estranho - o dhclient precisa ser executado duas vezes para se conectar ao wireless

0

Estou tentando conectar o meu ao meu wlan sem o uso do NetworkManager. Eu corro os seguintes comandos depois da inicialização:

iwconfig wlan0 enc <WEP passwd> mode managed essid <name> channel 6
ifconfig wlan0 up
dhclient wlan0

Neste ponto, o dhclient fica parado por muito tempo (talvez 2 minutos), depois retorna com

PING 192.168.1.254 (192.168.1.254) from 192.168.1.65 wlan0: 56(84) bytes of data.

--- 192.168.1.254 ping statistics ---
3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 3000ms
pipe 3

.. O mais estranho é que quando eu corro pkill dhclient; dhclient wlan0 logo depois disso, ele se conecta em aproximadamente 3 segundos.

Alguma ideia do que poderia ser a causa deste problema?

Edit: oh, e eu tentei usar o sinalizador -timeout no dhclient mas isso não pareceu fazer nenhuma diferença (ele ainda parou por muito tempo).

    
por splicer 28.10.2009 / 14:20

2 respostas

2

Essa é uma questão de dhclient obsoleto que ainda é implementado em todas as distribuições do Linux. O script do dhclient precisa lidar com o Lease Timeout. Quando você acessa uma rede sem fio e executa o dhclient, ele vincula um endereço IP e uma máscara de sub-rede, um servidor DNS e algumas outras opções à sua interface sem fio (wlan0). O servidor DHCP concede esse IP à sua interface por um tempo limitado (tempo de concessão). Quando você desliga o computador ou o script do dhclient falha por qualquer motivo, o contador de tempo de concessão do cliente pára. E então você inicializa o computador ou executa o dhclient novamente. Em seguida, o dhclient encontra uma configuração Prebind, que se refere a uma concessão antiga, e não sabe se essa concessão ainda é válida ou não. Lá vem a questão. A maneira como o dhclient resolve esse problema é vinculando a interface com o Prebind e tentando executar o ping no roteador (gateway). Se o sucesso do ping, o Prebind é válido e é aplicado à interface sem fio (wlan0). Senão, o Prebind não é válido e é descartado.

Isso explica o motivo do sono ("dhclient stalls for ages"), ele está aguardando uma resposta do servidor DHCP. E se isso não acontecer, depois de aproximadamente 2 minutos, ele tenta assumir a configuração Prebind e pinga o roteador antigo ("PING 192.168.1.254").

Eu tive o mesmo problema no meu Slackware e encontrei todas as informações na página do manual dhclient-script.

(man dhclient-script):

TIMEOUT The DHCP client has been unable to contact any DHCP servers. However, an old lease has been identified, and its parameters have been passed in as with BOUND. The client configuration script should test these parameters and, if it has reason to believe they are valid, should exit with a value of zero. If not, it should exit with a nonzero value. The usual way to test a lease is to set up the network as with REBIND (since this may be called to test more than one lease) and then ping the first router defined in $routers. If a response is received, the lease must be valid for the network to which the interface is currently connected. It would be more complete to try to ping all of the routers listed in $new_routers, as well as those listed in $new_static_routes, but current scripts do not do this.

    
por 10.07.2010 / 05:21
0

Certifique-se de que o serviço NetworkManager não seja iniciado se você estiver configurando manualmente sua conexão. Eu experimentei no passado que ele tenta assumir continuamente reverter minhas alterações de configuração.

    
por 28.10.2009 / 18:45