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

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

Estou tentando criar um wifi ad-hoc feito de 5 computadores (um PC com Windows e 4 raspberry pi carregados com um raspbian). O Raspberry Pi falará 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á minha configuração (a mesma 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 – tipo 1 inicialização em cada 10, muito estranho?!

Responder1

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

  1. No arquivo de interfaces, tente comentar "auto wlan0" e 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 em seu diretório de scripts favorito 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 inicializa sem a conexão sem fio ativa. Tente mexer iwconfigcom parâmetros diferentes (tente man iwconfig para obter uma lista completa) até que sua interface apareça. Eu acho que pode ser txpoweruma espécie de mudança que pode ajudá-lo aqui. Se funcionar para você, use pre-up <command-that-worked>em 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 (pre|post)-up

    pre-up /sbin/iwconfig wlan0 txpower on
    

Responder2

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

Resolvi isso adicionando uma instrução de espera pre-up sleep 5ao 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

Responder3

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

Então, para wlan use rede como 10.10.0.1, máscara 255.255.255.0 E para eth use rede como 192.168.0.1, máscara255.255.255.0

Não tive esse problema no RPI (provavelmente porque sempre mantenho os IPs das redes wlan0 e eth0 muito diferentes). Mas no meu PC com Windows eu tenho esse problema o tempo todo: quando uso wireless com 192.168.1.xe depois conecto na porta Ethernet, por exemplo meu rasbperry com 192.168.0.xendereço (lembre-se do terceiro octeto), sempre perco a conexão de rede.

Responder4

Remova o comentário auto eth0ou a interface auto eth1que auto wlanvocê deseja exibir quando a unidade inicializar.

informação relacionada