Foro

Avatar de puch84
puch84
Yo probé el VDSL
10-01-2019
Resuelto

Como reiniciar el B315 en monopuesto

Hola,   tengo en casa de mis padres configurado el b315 de Huawei (192.168.8.1) y tras largos intentos y leyendo en este foro conseguí configurarlo con un asus DSL55 (192.168.1.1, el router es adsl...
  • Avatar de Marcx
    14-01-2019

    Hola! Antes de nada quiero aclarar que para llegar al Huawei B315 en modo bridge con un router neutro detrás, en vez de crear  una interfaz de red virtual en el router neutro:

    ifconfig eth0:0 192.168.8.5

     Es mejor añadirle una nueva dirección IP del siguiente modo:

    ip addr add 192.168.8.5/24 broadcast 192.168.8.255 dev eth0

    Lo decía al final del hilo donde contaba lo que hice para establecer el modo bridge, y se debe que con la interfaz de red virtual, si se reinicia el  Huawei B315, se puede cambiar el orden con la interfaz física y ya no funciona la conexión a Internet.

     

    Dicho esto, por lo que cuentas, creo que tu problema es similar a uno que tuve yo. Resulta que el Huawei B315 que tengo yo se reinicia sistemáticamente cada 24 horas y a veces unas horas antes. Bueno, o eso parece, porque nunca consigo estar delante cuando se produce.

     

    Esto provoca que la dirección IP pública de mi línea cambie, aunque no debería ser un problema, ya que el router neutro que tengo detrás debería detectar que se cayó su interfaz de red WAN, y al volver a levantarse pediría por DHCP la renovación de su dirección IP, asignándole la nueva dirección IP pública.

     

    Sin embargo, esto no se produce, pues según los logs de mi router neutro, el  Huawei B315 no llega a tirar la interfaz de red física donde está conectado mi router neutro. Por tanto, mi router neutro se queda con la dirección IP pública antigua en su interfaz WAN y ya no es capaz de salir a Internet.

     

    Lo curioso es que si reinicio el Huawei B315 a través de su web, sí que tira la interfaz de red física y mi router neutro se entera. Es como si ese reinicio que se produce cada 24 horas fuera un reinicio "light" que no afecta a las conexiones ethernet.

     

    Para resolverlo, puse una Raspberry Pi conectada a mi router neutro (justo lo que quería evitar, que se le va a hacer...), y en ella ejecuto un script cada 5 minutos que comprueba la conexión a Internet, si falla fuerza la renovación  de la dirección IP de la WAN de mi router neutro, y si con eso no es suficiente, reinicia mi router neutro.

     

    Esta solución la tengo funcionando desde hace un par de meses y de momento me va bien con ella. Sólo me falló una vez que el Huawei B315 se apagó solo de madrugada y tuve que encenderlo con el interruptor al día siguiente. Desconozco el motivo, yo lo achaco a algún problema en el software de gestión remota de la operadora, pero vete tú a saber...

     

    La solución que propones tú de reiniciar el Huawei B315 desde un script creo que también funcionaría, y lo estuve barajando durante un tiempo. El problema es que aún no sé como hacerlo. Encontré algo de información no oficial sobre la interfaz web del Huawei B315, pero está anticuada y habría que probarla. Según ella el hacer el reinicio es sencillo, sin embargo, previamente hay que autenticarse, y eso tiene cierta complejidad.

     

    Seguramente acabaré haciéndolo en algún momento, porque aunque la solución que tengo funciona bien, a veces el router se reinicia en un mal momento, lo que me deja sin conexión durante unos minutos (7 u 8 minutos como máximo). Así que pretendía forzar un reinicio de madrugada, para que siempre se reinicie a esa hora y no moleste, y si luego se reinicia durante el día, volver a forzar que lo haga de madrugada, con lo que sólo muy de cuando en cuando fallaría durante el día.

     

    Menudo rollo estoy soltando, bueno, voy a los detalles de la solución. Esto es ya específico para el router neutro que tengo yo, que es un ASUS RT-N12D1. Como el tuyo también es un ASUS, es posible que te sirva, o puede que tengas que hacer alguna modificación. Pues bien el script que se ejecuta en la Raspberry Pi hace lo siguiente:

    1. Intenta resolver un dominio con el DNS de Movistar:
      nslookup -timeout=5 -retry=4 www.google.es 80.58.61.250
    2. Si funciona, todo está correcto
    3. Si falla, se conecta por telnet al router neutro y fuerza la renovación de su dirección WAN por DHCP, que consiste en mandar una señal USR1 al cliente DHCP:
      killall -USR1 udhcpc
    4. Espera unos 30 segundos y vuelve a realizar la consulta DNS
    5. Si funciona, todo vuelve a estar bien
    6. Si falla, reinicia el router neutro a través de la conexión telnet

    Por si te sirve de algo, te pego aquí mi script, que está hecho en Perl, y que supongo que podrás ejecutar en tu PC si te instalas Perl y luego programas una ejecución periódica cada 5 minutos:

     

    use strict;
    use warnings;
    use Net::Telnet ();
    
    my($user, $pass);
    
    sub check ()
    {
      my($code);
      $code= system('set -x; date; nslookup -timeout=5 -retry=4 www.google.es 80.58.61.250');
      return ($code eq 0);
    }
    
    sub refresh ()
    {
      my($session, @output);
      $session= new Net::Telnet(Timeout => 60,
                                Prompt => "/$user\\\@RT-N12D1:\\\/tmp\\\/home\\\/root# \$/");
      $session->open('192.168.1.1');
      $session->login($user, $pass);
      @output= $session->cmd("set -x");
      @output= $session->cmd("killall -USR1 udhcpc");
      print @output;
    }
    
    sub reboot ()
    {
      my($session, @output);
      $session= new Net::Telnet(Timeout => 60,
                                Prompt => "/$user\\\@RT-N12D1:\\\/tmp\\\/home\\\/root# \$/");
      $session->open('192.168.1.1');
      $session->login($user, $pass);
      @output= $session->cmd("set -x");
      @output= $session->cmd("reboot");
      print @output;
    }
    
    open(STDOUT, '>>', "$0.out");
    open(STDERR, '>&', STDOUT);
    ($user, $pass)= @ARGV;
    unless (check()) {
      refresh();
      sleep(30);
      reboot() unless check();
    }

     

     ¡Espero que te sirva!

     

    ¡Saludos!