Mostrando entradas con la etiqueta Script. Mostrar todas las entradas
Mostrando entradas con la etiqueta Script. Mostrar todas las entradas

5 mar 2019

Asuswrt es el nombre del firmware desarrollado por el fabricante Asus para su uso en sus últimos routers. Esta basado en Tomato, un proyecto de firmware de codigo abierto para routers, este firmware ha sido extensivamente modificado por Asus a lo largo de años para adaptarse a sus propios requisitos y especificaciones.
Asuswrt-Merlin es una iniciativa del desarrollador canadiense Eric Sauvageau  el cual ha personalizado una versión del firmware de Asus. En dicha personalización no se producen grandes cambios, se solucionan algunos pequeños errores y limitaciones, manteniendo para ello el mismo nivel de rendimiento que el firmware original. Por ello se mantienen las siguientes características de Asuswrt soporte completo a aceleración NAT (también conocido como aceleración por hardware), rendimiento NTFS mejorado (a través de los controladores propietarios utilizados por Asus de Paragon o Tuxera) y las características exclusivas de Asus, como AiCloud o AiProtection con tecnología Trend Micro. Pero la fuerza de esta iniciativa es que dicho firmware activa una serie de opciones o características avanzadas extra como son una partición JFFS para Scripts, soporte VPN mejorado ... Si quieres ver una lista de routers oficialmente soportados por Asuswrt-Merlin pulsa aquí.

Hace un tiempo os hablaba en mi entrada "[Proyecto] Mejorando mi Red LAN (Introduccion)" que yo había adquirido en su día un router AC87U (Julio del 2015), al que posteriormente cambie el firmware por el Asuswrt-Merlin. El motivo de este cambio es porque yo quería activar una serie de opciones que el firmware oficial de Asus no trae, por ejemplo que cuando reinicie o cambie la IP Publica que me da mi ISP (Internet Service Provider), reciba en un e-mail con dicha IP. Para hacer esto se realiza mediante un Script en la partición JFFS (Sistema de Ficheros Flash con soporte a Transacciones).

¡¡Atención!! Este procedimiento puede ocasionar graves daños a su equipo, proceda bajo su propio riesgo. Ten en cuenta que este procedimiento tiene una complejidad técnica y recomiendo tener nociones de terminal de Linux. Por favor lee atentamente este procedimiento y si tiene alguna duda te recomiende que leas atentamente mis instrucciones, investigues la bibliografía o preguntes.

Requisitos Previos
  • Tener instalado Asuswrt Merlin, recomendable siempre la ultima versión.
  • En Administración > Sistema  (Administration > System, si lo tenéis en Inglés) tener activadas las siguientes opciones; nota la primera vez  pulsaremos en Si para formatear la partición JFFS en el siguiente arranque (Format JFFS partition at next boot), una vez formateada deberemos dejarla en No. Posteriormente marcaremos en Si Habilitar Scripts y Configuraciones personalizadas en JFFS (Enable JFFS custom scripts and configs).
Persistent JFFS2 partition
Format JFFS partition at next boot No
Enable JFFS custom scripts and configs No

Por ultimo tener habilitado SSH, no me seáis cabestros y habilitarlo solo para la Red LAN, por defecto la conexión sera a través  del puerto 22, tambien hay que habiltar las opciones de aceptar login a través de Password y habilitar protección contra ataques de fuerza bruta SSH.


Pasos a seguir
  1. Conectarnos via SSH al router y el puerto que hayamos puesto. Yo lo he realizado desde Windows por lo que lo hice con el cliente de Telnet y SSH Putty. Nos solicitara que hagamos login en el router. 
  2. Nos dirigimos a  la ruta Raiz Directorio jffs
    cd /jffs
  3. Nos descargamos un certificado seguro (por motivos de presentación en el blog he introducido saltos de línea)
    wget -c -O /jffs/configs/Equifax_Secure_Certificate_Authority.pem
    http://www.geotrust.com/resources/root_certificates/certificates/Equifax_Secure_Certificate_Authority.pem 
    --no-check-certificate
  4. Nos dirigimos a la ruta Raiz Directorio jffs Directorio scripts
    cd /jffs/scripts
  5. Editamos un fichero escribiendo el siguiente comando nano wan-start, sino existe no importa porque este comando lo creara y copiamos en el interior el siguiente script, una vez copiado procederemos a editar los campos  FROM, AUTH, PASS, FRONNAME y TO con nuestros datos:
    #!/bin/sh
    FROM="Direccion email origen: por ejemplo pepitodelospalotes@gmail.com"
    AUTH="Usuario email pepitodelospalotes@gmail.com"
    PASS="Password XXXX"
    FROMNAME="Router Asus"
    TO="Direccion de email destino"
    
    ntpclient -h pool.ntp.org -s &> /dev/null
    sleep 5
    
    echo "Subject: WAN state notification" >/tmp/mail.txt
    echo "From: \\"$FROMNAME\\"<$FROM>" >>/tmp/mail.txt
    echo "Date: $(date -R)" >>/tmp/mail.txt
    echo "" >>/tmp/mail.txt
    echo "I just got connected to the internet." >>/tmp/mail.txt
    echo "" >>/tmp/mail.txt
    echo "My WAN IP is: $(nvram get wan0_ipaddr)" >>/tmp/mail.txt
    echo "Uptime is: $(uptime | cut -d ',' -f1 | sed 's/^.\{12\}//g')" >>/tmp/mail.txt
    echo "" >>/tmp/mail.txt
    echo "---- " >>/tmp/mail.txt
    echo "Your friendly router." >>/tmp/mail.txt
    echo "" >>/tmp/mail.txt
    
    cat /tmp/mail.txt | sendmail -H"exec openssl s_client -quiet \
    -CAfile /jffs/configs/Equifax_Secure_Certificate_Authority.pem \
    -connect smtp.gmail.com:587 -tls1 -starttls smtp" \
    -f"$FROM" \
    -au"$AUTH" -ap"$PASS" $TO 
    
    rm /tmp/mail.txt
  6. Salimos del fichero guardando y si nos pregunta el nombre deberemos poner wan-start, no hay que poner extensiones de ningún tipo.
  7. Cambiamos los permisos a todos los ficheros ubicados en /jffs/scripts añadiendo permisos de lectura y ejecución con el comando:
    chmod a+rx /jffs/scripts
  8. Si el e-mail que vamos a usar para realizar el envío de email es Gmail, deberemos activar la configuración de Acceso de aplicaciones poco seguras. Esta configuración no está disponible para las cuentas que tienen habilitada la verificación en dos pasos (2FA).
  9. Por ultimo lo único que nos quedaría es probar a reiniciar el router de nuestro ISP  y si todo esta correctamente configurado al de unos minutos recibiremos un e-mail con la IP Pública. 
Una de las cosas que me dejo en el tintero es como hacer para que la información de la IP Publica se enviara además mediante un SMS, sobre esto he estado haciendo pruebas y todavia no he conseguido resultados. Por lo demas creo que esta correctamente bien explicado y no hay erratas, pero si los hubiese o si teneis alguna duda o sugerencia teneis a vuestra disposicion los comentarios del Blog.

Compendio Bibliográfico
Información General
Imagenes
  • Logo oficial Asuswrt-Merlin obtenido de la pagina Web Asuswrt Merlin para ilustrar esta entrada. Esta imagen se han puesto en esta entrada para ilustrar la entrada e identificar el firmware en cuestión.