Aguardar a chegada de um dispositivo de rede antes de ativar outro dispositivo de rede durante a inicialização?

4

Estou no meio da configuração do Raspberry Pi executando o Raspbian como uma ponte entre a rede sem fio da minha universidade (que requer autenticação WPA2-Enterprise) e meu roteador sem fio privado (por meio de sua porta WAN).

Eu recebi uma ajuda incrível aqui: Como posso simplificar de forma mais transparente? tráfego de ponte entre wlan0 e eth0?

Na maioria das vezes, minha configuração está funcionando como pretendido. O único problema é que, se eu definir eth0 para auto ou permitir-hotplug no meu Raspberry Pi (como eu gostaria de fazer, para que tudo vem sem cabeça na inicialização), parece que todo o tráfego da Internet é encaminhado através de eth0 . Isso está incorreto; minha conexão com a internet está na wlan0, e a eth0 compartilha essa conexão com o meu roteador privado.

Eu posso superar esse problema não tendo o eth0 gerado automaticamente. Se eu deixar o auto ou o allow-hotplug para eth0 fora do / etc / network / interfaces, permitir que o Raspberry Pi seja inicializado e, em seguida, executar manualmente o "ifup eth0", obtenho o comportamento conforme o esperado.

Existe uma maneira de garantir que o wlan0 tenha sido totalmente ativado antes de iniciar o eth0 na inicialização (mesmo que a eth0 seja a interface mais rápida para ativar)? Ou, na falta disso, como posso forçar o tráfego da Internet (observando que isso vem da eth0) através do wlan0 apenas?

Editar: Por enquanto, como uma solução alternativa, estou executando um script para exibir a eth0 na inicialização com um atraso de trinta segundos para permitir que o wlan0 apareça primeiro. Esta solução não é elegante nem confiável (e se a autenticação wlan0 demorar mais de trinta segundos?), Mas parece estar fazendo o truque por enquanto. Ainda estou procurando uma solução melhor!

    
por snoopy91 20.08.2014 / 23:49

2 respostas

2

Hmm .. Apenas um pensamento. Mas presumo que você esteja usando o DHCP na sua rede Wi-Fi. Portanto, você não teria um endereço IP até que sua rede esteja totalmente ativada.

Então, vamos apenas ter um loop de pouco tempo.

while [ "$(ifconfig wlan0 | grep inet | grep 192.168.)" = "" ];  do sleep 1; done

O 192.168. deve ser substituído por seu alcance padrão. Agora ele iria verificar a cada segundo uma vez se você já está tendo uma conexão e assim que você está tendo uma conexão via wifi você pode acompanhar diretamente com ifup eth0

    
por 04.08.2015 / 08:33
0

possibilidades:

  • Na sua configuração estática para eth0, não defina um gateway padrão. (Acho que esse é o verdadeiro problema)
  • adicione um gancho à configuração do cliente dhcp para ativar a outra interface após a configuração bem-sucedida.
por 04.08.2015 / 07:19