Eu sempre preciso ifdown / ifup wlan0 após a reinicialização

8

Estou tentando criar um wifi ad-hoc composto por 5 computadores (um PC com Windows e 4 raspberry pi carregados com um raspbian). O raspberry pi fala através do mqtt, mas esse não é o ponto. O problema que tenho é que sempre preciso fazer o seguinte para ter a wlan0interface após cada reinicialização:

sudo ifdown wlan0
sudo ifup wlan0

Você sabe por quê? Aqui está o meu conf (o mesmo em cada pi, exceto o endereço IP, obviamente!)

~ % ifconfig                 
eth0      Link encap:Ethernet  HWaddr b8:27:eb:ff:88:99  
          inet addr:192.168.1.41  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:951 errors:0 dropped:0 overruns:0 frame:0
          TX packets:266 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:66321 (64.7 KiB)  TX bytes:43663 (42.6 KiB)

wlan0     Link encap:Ethernet  HWaddr 00:0f:13:51:05:8c  
          inet addr:192.168.0.2  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:42 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:2520 (2.4 KiB)

~ % iwconfig
wlan0     IEEE 802.11bgn  ESSID:"mirroir"  
          Mode:Ad-Hoc  Frequency:2.412 GHz  Cell: 42:B1:44:EB:D2:C1   
          Tx-Power=20 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:on

lo        no wireless extensions.

eth0      no wireless extensions.


~ % more /etc/network/interfaces 
auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
auto wlan0
iface wlan0 inet static
    address 192.168.0.2
    netmask 255.255.255.0
    wireless-channel 1
    wireless-essid mirroir
    wireless-mode ad-hoc
    wireless-key 967136deac

~ % sudo route add -net 192.168.0.0 netmask 255.255.255.0 wlan0

~ % netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         192.168.1.254   0.0.0.0         UG        0 0          0 eth0
192.168.0.0     *               255.255.255.0   U         0 0          0 wlan0
192.168.1.0     *               255.255.255.0   U         0 0          0 eth0

Qualquer ideia?

Parece funcionar, mas nem sempre - como 1 bota em 10, realmente estranho ?!

xavier.seignard
fonte
Essa é a configuração após o down / up ou antes?
30--13
depois, antes wlan0não tem ip
xavier.seignard 30/09
não consigo ver como é descobrir o ip do gateway? talvez tente adicionar gateway 192.168.1.254diretamente sob a netmask 255.255.255.0linha em seu /etc/network/interfacesarquivo
mulllhausen

Respostas:

7

Você já tentou uma das soluções abaixo? Preciso adivinhar a resposta aqui, pois o problema não é fácil de reproduzir, pode ser um problema com o driver que você obteve.

  1. No arquivo de interfaces, tente comentar "auto wlan0" e apenas mantenha "allow-hotplug wlan0"

    #auto wlan0
    allow-hotplug wlan0
    iface wlan0 inet dhcp
    ... rest of the config ...
    
  2. Provavelmente não é a solução ideal que você está procurando, mas tente criar um novo script de shell com privilégios de execução no seu diretório de scripts favoritos com o seguinte conteúdo.

    ifdown wlan0 
    ifup wlan0 
    

    Em seguida, adicione a seguinte linha ao seu arquivo de interfaces.

    auto wlan0
    iface wlan0 inet dhcp
    ... rest of the config ...
    post-up /path-to-your-script/script.sh
    
  3. Quando o seu computador inicia sem a conexão sem fio ativa. Tente mexer com iwconfigparâmetros diferentes (tente man iwconfig para obter uma lista completa) até que sua interface apareça. Eu acho que pode ser uma txpowerespécie de interruptor que pode ajudá-lo aqui. Se isso funcionar para você, use pre-up <command-that-worked>no seu arquivo de interfaces como na 2ª resposta e deixe o comando lá.

    Então, algo assim no final (lembre-se de passar caminhos absolutos para (pré | pós) -up

    pre-up /sbin/iwconfig wlan0 txpower on
    
Purinda Gunasekara
fonte
Oi, obrigado pela resposta completa! Eu tentei a primeira solução sem sucesso. A solução alternativa que eu uso é a solução 2, eu a adicionei /etc/rc.local. Eu deveria tentar a terceira solução que você está dando. Obrigado!
Xavier.seignard
alguma das soluções acima funcionou para você? se você conseguiu resolver o problema, por favor, compartilhe .. obrigado
Purinda Gunasekara
oi, eu não tentei ainda o terceiro, eu vou dar uma chance na próxima semana
xavier.seignard
Solução 1 funcionou para mim.
Dgmdan
3

Exatamente o mesmo problema aqui. O problema era um problema de tempo: o wlan0 não estava pronto quando o processo de inicialização emitiu o arquivo ifup.

Eu resolvi isso adicionando uma instrução de espera pre-up sleep 5a wlan0 no arquivo de interfaces:

marcelo@breeze:~$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
  pre-up sleep 5 
  address 10.0.0.42
  netmask 255.255.255.0
  gateway 10.0.0.2
  dns-nameservers 10.0.0.2
  wpa-ssid mycoolssid
  wpa-psk returnguantanamo
マ ル ち ゃ ん だ よ
fonte
0

Talvez você queira usar redes "locais" diferentes para as interfaces eth0 e wlan0.

Então, para wlan, use rede como 10.10.0.1, mascara 255.255.255.0 E para eth use rede 192.168.0.1, como , mascara255.255.255.0

Não tive esse problema no RPI (provavelmente porque sempre mantenho os IPs de rede wlan0 e eth0 muito diferentes). Mas, no PC com Windows, tenho esse problema o tempo todo: quando uso a rede sem fio 192.168.1.xe conecto a porta Ethernet, por exemplo, meu 192.168.0.xendereço com endereço ( veja o terceiro octeto), sempre perco a conexão de rede.

Dimitry K
fonte
0

Remova o comentário auto eth0, auto eth1ou auto wlanpara a interface que você deseja aparecer quando as botas de unidade.

clowen
fonte