Siempre necesito ifdown/ifup wlan0 después de reiniciar

Siempre necesito ifdown/ifup wlan0 después de reiniciar

Estoy intentando crear un wifi ad-hoc compuesto por 5 computadoras (una PC con Windows y 4 Raspberry Pi cargadas con una Raspbian). La Raspberry Pi hablará a través de mqtt, pero ese no es el punto. El problema que tengo es que siempre necesito hacer lo siguiente para poder tener la wlan0interfaz después de cada reinicio:

sudo ifdown wlan0
sudo ifup wlan0

¿Sabes por qué? Aquí está mi configuración (¡la misma en cada pi excepto la dirección 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

¿Alguna idea?

Parece funcionar, pero no siempre, como 1 arranque de cada 10, ¿realmente raro?

Respuesta1

¿Has probado una de las siguientes soluciones? Tengo que adivinar la respuesta aquí ya que el problema no es fácil de reproducir, puede ser un problema con el controlador que tienes.

  1. En el archivo de interfaces, intente comentar "auto wlan0" y simplemente mantenga "allow-hotplug wlan0".

    #auto wlan0
    allow-hotplug wlan0
    iface wlan0 inet dhcp
    ... rest of the config ...
    
  2. Probablemente no sea la solución ideal que está buscando, pero intente crear un nuevo script de shell con privilegios de ejecución en su directorio de scripts favorito con el siguiente contenido.

    ifdown wlan0 
    ifup wlan0 
    

    Luego agregue la siguiente línea a su archivo de interfaces.

    auto wlan0
    iface wlan0 inet dhcp
    ... rest of the config ...
    post-up /path-to-your-script/script.sh
    
  3. Cuando su computadora se inicia sin la conexión inalámbrica activa. Intente jugar iwconfigcon diferentes parámetros (pruebe con man iwconfig para obtener una lista completa) hasta que aparezca su interfaz. Supongo que puede haber txpoweralgún tipo de cambio que te ayude. Si eso funciona para usted, utilícelo pre-up <command-that-worked>en su archivo de interfaces como en la segunda respuesta y deje el comando allí.

    Entonces, algo como esto al final (recuerde pasar rutas absolutas a (pre|post)-up

    pre-up /sbin/iwconfig wlan0 txpower on
    

Respuesta2

Exactamente el mismo problema aquí. El problema era una cuestión de tiempo: wlan0 no estaba listo cuando el proceso de arranque emitió el archivo ifup.

Resolví esto agregando una declaración de espera pre-up sleep 5a wlan0 en el archivo 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

Respuesta3

Quizás desee utilizar diferentes redes "locales" para las interfaces eth0 y wlan0.

Entonces, para wlan use una red como 10.10.0.1máscara 255.255.255.0 y para eth use una red como 192.168.0.1máscara255.255.255.0

No he tenido este problema en RPI (probablemente porque siempre mantengo las IP de red wlan0 y eth0 muy diferentes). Pero en mi PC con Windows tengo este problema todo el tiempo: cuando uso conexión inalámbrica 192.168.1.xy luego lo conecto al puerto Ethernet, por ejemplo mi rasbperry con 192.168.0.xdirección (tenga en cuenta el tercer octeto), siempre pierdo la conexión de red.

Respuesta4

Descomentar auto eth0o auto eth1para auto wlanla interfaz que desea que aparezca cuando se inicia la unidad.

información relacionada