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.