Página principal » cómo » Libere aún más energía de su enrutador doméstico con el kit de modulación DD-WRT

    Libere aún más energía de su enrutador doméstico con el kit de modulación DD-WRT


    Ya le mostramos cómo modificar el enrutador de su casa con el firmware alternativo DD-WRT para mejorar en gran medida el rendimiento, y hoy le mostraremos cómo llevarlo aún más lejos con el kit de modulación DD-WRT.

    Si aún no lo has hecho, asegúrate de revisar los dos artículos anteriores de la serie:

    • Convierta su enrutador doméstico en un enrutador de gran potencia con DD-WRT
    • Cómo aumentar la señal de su red Wi-Fi y aumentar el alcance con DD-WRT

    Suponiendo que esté familiarizado con esos temas, siga leyendo. Tenga en cuenta que esta guía es un poco más técnica, y los principiantes deben tener cuidado al modificar su enrutador.

    Visión general

    Esta guía le dará un resumen paso a paso de cómo crear su propio firmware DD-WRT con modificaciones y adiciones utilizando el "kit de modificación de firmware"..

    El kit de modificación de firmware le permite a uno hacer modificaciones al firmware sin compilarlo desde la fuente. Realizar cambios de esta manera, con la ayuda de los scripts proporcionados, se convierte en una simple cuestión de descargar, reemplazar y eliminar algunos archivos..

    La razón más predominante para usar este método es porque últimamente el soporte de DD-WRT para los paquetes Openwrt IPKG se ha orientado hacia los enrutadores que tienen unidades de disco duro (a través de USB), lo que hace que el mod-kit sea la única manera consistente de instalar los paquetes IPKG con éxito. para los casos donde un HD no está disponible. Además, este método tiene la ventaja adicional de liberarlo de la dependencia de JFFS para la instalación de paquetes, que para los enrutadores con solo 4 MB de flash es un problema real.

    Imagen por publicenergy

    Metas

    Si bien las instrucciones para este procedimiento se detallan en la wiki de DD-WRT y en el sitio del desarrollador, nuestro objetivo es hacer de esta guía un procedimiento de copiar y pegar que cualquiera pueda usar para lograr los siguientes objetivos:

    • Instala el paquete knockd y sus dependencias..
    • Instale el paquete ssmtp con las configuraciones generadas basadas en NVRAM.
      • Opcionalmente con soporte para TLS smtp (a.k.a. Gmail support).

    Una vez que haya seguido este procedimiento, debería ser muy sencillo adaptarlo a las instalaciones de otros paquetes..

    Advertencia: Pise ligeramente ... tenga en cuenta que el uso incorrecto del kit de modificación puede dejarlo con un enrutador que necesita desmontaje (como a su vez, un ladrillo inútil). Sin embargo, si eres un verdadero geek, probablemente te suscribas a la ideología de que el que puede destruir una cosa, controla una cosa, y solo los verdaderos geeks hacen eso.

    Prerrequisitos

    1. Utilizando este procedimiento puede ladrillo tu enrutador, como en hacer tu enrutador inutilizable, no nos hacemos responsables de los daños que puedan ser causados ​​directamente o de otra manera debido al uso de los procedimientos a continuación.
    2. Este procedimiento se realizó en sistemas basados ​​en Debian (Lenny, Squeeze y Mint) y las instrucciones a continuación asumen que usted también está usando uno.
    3. Este procedimiento solo se recomienda para personas que tienen experiencia en actualizar su enrutador con DD-WRT, con todos los requisitos previos, advertencias y limitaciones que se aplican a la configuración de su hardware. Un buen lugar para comenzar sería nuestro enrutador Convierta su hogar en un enrutador súper potente con guía DD-WRT.
    4. Su enrutador debe admitir al menos la versión "mini" de DD-WRT.
    5. Este procedimiento fue creado y probado en los enrutadores Linksys WRT54GS / L, si utiliza enrutadores de otros proveedores, su millaje puede ser muy alto..

    Preparar

    Instalación de paquetes requeridos

    El kit de modificación de firmware tiene algunas dependencias para que compile y funcione. Para instalarlos / actualizarlos todos a la vez, emita este comando en un terminal:

    sudo aptitude instalar gcc g ++ binutils parche bzip2 flex bison hacer gettext descomprimir zlib1g-dev libc6 subversion

    Descarga el mod-kit

    Cree una subcarpeta y obtenga el kit de la SVN oficial:

    mkdir firmware_mod_kit
    cd firmware_mod_kit
    svn checkout http://firmware-mod-kit.googlecode.com/svn/trunk/ firmware-mod-kit-read-only
    cd firmware-mod-kit-read-only / trunk /

    Descarga un firmware para trabajar

    Lo primero que debes considerar es qué versión quieres usar?
    Una regla de oro es: en caso de duda, utilice "mini". Esto se debe a que mientras su enrutador admita al menos la versión "mini", su uso le brinda todas las funciones más utilizadas sin ningún tipo de software de relleno. dejando así tanto espacio para los procedimientos e incluso algo de JFFS para otros usos en la mayoría de los casos.

    Una vez que haya decidido una versión, se recomienda usar la última revisión del firmware disponible, ya que tienden a tener una gran cantidad de correcciones de errores en comparación con sus homólogos "estables".
    En el momento de escribir esto, el último era “03-17-11-r16454” y esta revisión se usa en los comandos que siguen.

    wget http://www.dd-wrt.com/dd-wrtv2/downloads/others/eko/BrainSlayer-V24-preSP2/2011/03-17-11-r16454/broadcom/dd-wrt.v24_mini_generic.bin

    Para facilitar el seguimiento de la versión que estamos usando, cambie el nombre del archivo descargado para representar su número de versión:

    mv dd-wrt.v24_mini_generic.bin dd-wrt.v24_mini_generic-03-17-11-r16454.bin

    Por supuesto, esto es opcional, pero los siguientes comandos asumen que ha cambiado el nombre del archivo.

    Extraer el firmware

    Para poder cambiar archivos dentro del firmware necesitamos extraer su contenido en un directorio temporal.
    La sintaxis de este comando es:
    ./extract_firmware.sh FIRMWARE_IMAGE WORKING_DIRECTORY
    En nuestro caso, esto se traduciría a:

    ./extract_firmware.sh dd-wrt.v24_mini_generic-03-17-11-r16454.bin ./working_dir_mini1

    Nota: La primera vez que ejecuta este comando, crea las herramientas mod-kit en su sistema. esto sucede solo una vez y puede tomar un poco de tiempo ... así que ten paciencia ...

    Instalando paquetes

    Ahora que se ha extraído el firmware podemos instalarle los paquetes..
    En general, el procedimiento es descargar el paquete y sus dependencias en forma de un archivo ipk desde el repositorio de openWRT. Una vez descargados, instálelos en el firmware extraído usando el script provisto.

    El paquete knockd

    Las instrucciones detalladas sobre cómo configurar y usar Knockd se detallarán en un artículo futuro, por lo que puede optar por omitir este paso por ahora o hacerlo en preparación para el futuro, ya que Knockd no ocupa mucho espacio de todos modos.

    Knockd es un demonio que escucha los eventos de comunicación en la capa de enlace para las secuencias y luego actúa sobre ellos..
    Lo que esto significa es que puede hacer que el dispositivo que ejecuta el daemon ni siquiera “escuche” en los puertos (un escaneo de puertos no los verá como abiertos) y aún así puede hacer que haga lo que necesita, desde un solo comando hasta el final a un guión completo. Usando esta técnica, podría hacer que el servidor realice cualquier tipo de operación que necesite de forma remota (a través de Internet) sin exponer su red doméstica.

    Knockd solo tiene una dependencia listada, así que descargue el paquete y su dependencia emitiendo:

    wget http://downloads.openwrt.org/backports/rc5/knockd_0.5-1_mipsel.ipk
    wget http://downloads.openwrt.org/whiterussian/packages/libpcap_0.9.4-1_mipsel.ipk

    Instale el "demonio de detonación" (knockd) ipk en el firmware:

    ./ipkg_install.sh knockd_0.5-1_mipsel.ipk ./working_dir_mini1/

    Instale la "captura de paquetes" (libpcap) ipk en el firmware:

    ./ipkg_install.sh libpcap_0.9.4-1_mipsel.ipk ./working_dir_mini1/

    Como "knockd" se puede invocar con un archivo de configuración alternativo (cómo se explicará en un artículo futuro), no es necesario realizar ninguna otra operación y puede pasar a la sección de creación de firmware, si es todo lo que desea instalar..

    El paquete SSMTP

    El paquete SSMTP le permite a su enrutador enviar mensajes de correo electrónico tal como lo mostramos en nuestras Cómo configurar alertas de correo electrónico en Linux mediante Gmail o SMTP para servidores. Le prometimos en ese entonces que mostraremos cómo configurar esto para DD-WRT y ahora le entregaremos.
    Esto es principalmente útil si va a crear scripts en el enrutador que le gustaría recibir comentarios sobre su operación por correo electrónico.

    La configuración de este paquete es un poco más compleja que en los sistemas normales de Linux debido a la limitación impuesta por un sistema integrado, así que respire hondo ... ¿listo? .... vamonos… :)

    Descarga el paquete:

    wget http://downloads.openwrt.org/backports/rc5/ssmtp_2.61-1_mipsel.ipk

    Instale el ipk "ssmtp" en el firmware:

    ./ipkg_install.sh ssmtp_2.61-1_mipsel.ipk ./working_dir_mini1/

    Soporte TLS (Opcional)
    SSMTP no lista ningún otro paquete como sus dependencias, sin embargo, si desea poder usar una puerta de enlace smtp que requiera autenticación TLS (es decir,. Gmail), tienes que instalar el paquete openSSL también.
    Nota: Hay un enorme retirarse para hacer esto en forma de espacio considerablemente reducido en el enrutador para JFFS más adelante. Es decir, el paquete openSSL ocupa aproximadamente 500K de espacio de su total de 4MB (para un enrutador de soporte no "mega" normal), compuesto por la sobrecarga de JFFS y descubrirá que queda con unos pocos bloques preciosos. espacio libre de JFFS (aproximadamente 60KB en WRT54GL).

    Como todavía no hay servidores SMTP que requieran TLS (por lo general, su ISP), sugiero tomarse un minuto para pensar si realmente necesita usar la puerta de enlace que requiere TLS..

    Si ha decidido habilitar el soporte TLS a pesar de su inconveniente, descargue el paquete openSSL:

    wget http://downloads.openwrt.org/whiterussian/packages/libopenssl_0.9.8d-1_mipsel.ipk

    Instale el ipk “openSSL” (libopenssl) en el firmware:

    ./ipkg_install.sh libopenssl_0.9.8d-1_mipsel.ipk ./working_dir_mini1/

    Configuraciones
    Existe una limitación con el paquete SSMTP, que no es posible invocarlo con un archivo de configuración alternativo.
    Debido a que el firmware es de solo lectura cuando está en el enrutador, eso significa que de forma inmediata solo podemos codificar la configuración en el firmware..
    Sin embargo, ¿qué sucede si no queremos seguir todos los pasos de modificación del firmware, solo para cambiar la configuración del correo electrónico? (por ejemplo un cambio de contraseña).

    Con ese fin, tanto Jeremy (el creador del mod de kit de firmware) como yo llegamos a la conclusión (independientemente de si puedo agregar humildemente) que la única forma sensata de hacerlo sería:

    1. Cree la ubicación de los archivos de configuración que el paquete ssmtp apunta a la ubicación de solo lectura en etc, señale el directorio tmp en el que se puede escribir en el tiempo de ejecución.
    2. Cree un script que genere dinámicamente las configuraciones basadas en las variables NVRAM al inicio.

    Para lograrlo, se requieren algunos pasos adicionales ...

    Enlace simbólico del directorio de configuración ssmtp
    Como se explicó anteriormente, necesitamos hacer / etc / ssmtp ubicación en el enrutador, apunte a la / tmp El directorio es el único lugar de escritura que tenemos en el enrutador en tiempo de ejecución. Para hacer esto, elimine el directorio ssmtp que fue creado por el instalador ipk:

    rm -rf ./working_dir_mini1/rootfs/etc/ssmtp/

    Cree un nuevo enlace simbólico que apunte el / etc / ssmtp en el sistema de archivos raíz del enrutador, para que apunte a / tmp / etc / ssmtp como una ruta absoluta:

    ln -s / tmp / etc / ssmtp / ./working_dir_mini1/rootfs/etc/ssmtp

    Nota: Aunque esto parece ilógico en este momento, porque estamos apuntando el directorio de configuración del paquete a una ubicación fuera del directorio de trabajo del kit de modificación de firmware, le aseguro que esto se ve totalmente bien desde el punto de vista de los enrutadores en tiempo de ejecución.

    Un guión de inicio
    Si bien es completamente posible no inyectar este script en el firmware y ejecutarlo como un script de inicio más adelante, creo que es apropiado ponerlo aquí solo como un ejemplo para uso futuro..
    Al principio, Jeremy creó el script adaptado a la solicitud de alguien; más adelante, lo ajusté y aumenté para que fuera más compatible con DD-WRT y los informes de syslog..

    Crear el nuevo script de inicio (inicio):

    vi ./working_dir_mini1/rootfs/etc/init.d/S80ssmtp

    Nota: puede usar otro editor, yo uso vi porque es coherente con lo que está disponible en el enrutador ...
    Haz de este su contenido:

    #! / bin / sh
    #
    # título: ssmtp_nvram.sh
    # autor: Jeremy Collake y Aviad Raviv
    # sitio: http://www.bitsum.com, http://howtogeek.com
    #
    # script para construir el archivo de configuración desde nvram vars.
    # funcionará para cualquier archivo de configuración que use
    # var = pares de tipo valor.
    #
    # usa prefijos para las variables nvram.
    #
    # es decir.
    # ssmtp_hostname = algo
    # se traduce a ssmtp.conf
    # nombre de host = algo
    #
    logger_func ()

    logger -s -p local0.notice -t SSMTP_init $ 1

    logger_func "########### Comenzó la ejecución inicial de SSMTP ###########"
    logger_func "Creando el directorio etc en / tmp"
    [! -d / etc / ssmtp /] && mkdir -p / tmp / etc / ssmtp /
    CONFIG_FILE = / etc / ssmtp / ssmtp.conf
    NVRAM_PREFIX = ssmtp_
    PACKAGE_NAME = "echo $ NVRAM_PREFIX | sed" s / _ / / "

    logger_func "Generando $ CONFIG_FILE para el paquete $ PACKAGE_NAME"
    #echo $ 0: generando $ CONFIG_FILE para el paquete $ PACKAGE_NAME
    echo "#! / bin / sh"> $ CONFIG_FILE
    echo "#" >> $ CONFIG_FILE
    echo "# generado automáticamente basado en nvram por $ 0" >> $ CONFIG_FILE
    echo "#" >> $ CONFIG_FILE

    si [-z "'nvram show | grep ssmtp'"]
    entonces
    logger_func "Parece que no ha configurado las variables NVRAM necesarias para generar el archivo conf"
    logger_func "** Considera ** usar estos comandos en tu script de inicio:"
    logger_func "nvram set [email protected]"
    logger_func "nvram set ssmtp_mailhub = smtp.gmail.com: 587"
    logger_func "nvram set [email protected]"
    logger_func "nvram set ssmtp_UseSTARTTLS = YES"
    logger_func "nvram set ssmtp_AuthUser = username"
    logger_func "nvram set ssmtp_AuthPass = contraseña"
    logger_func "nvram set ssmtp_FromLineOverride = YES"
    logger_func "crea las variables NVRAM y vuelve a ejecutar el script de inicio o reinicia para que la configuración tenga efecto".
    salida 0
    fi

    ################################################## #########
    #
    # bucle principal
    #
    SED_COMMAND = "s / $ NVRAM_PREFIX / /"
    CONFIG_VARS = "nvram show | grep $ NVRAM_PREFIX | sed" $ SED_COMMAND ""
    para i en $ CONFIG_VARS; hacer
    echo $ i >> $ CONFIG_FILE
    hecho

    ################################################## #########
    #
    # prueba de cordura
    #
    Si [ ! -f "$ CONFIG_FILE"]; entonces
    # echo "$ 0: ERROR - no se pudo crear $ CONFIG_FILE. Tal vez no haya un enlace simbólico / etc / XXXX -> / tmp / etc / XXXX?"
    logger_func "ERROR - no se pudo crear $ CONFIG_FILE. Tal vez no haya un enlace simbólico / etc / XXXX -> / tmp / etc / XXXX?"
    fi
    logger_func "########### Finalizó la ejecución inicial del SSMTP ###########"

    Hazlo ejecutable:

    chmod + x ./working_dir_mini1/rootfs/etc/init.d/S80ssmtp

    Tome nota de las variables de espera de NVRAM en el script, es nuestra responsabilidad darles algo para trabajar después de que hayamos instalado nuestro firmware modificado en el enrutador..

    Construir el firmware modificado

    Ahora que todo está en su lugar, es hora de volver a empaquetar el firmware modificado en un binario comprimido que podemos enviar al enrutador.
    La sintaxis del script "build.sh" es:
    ./build_firmware.sh OUTPUT_DIR WORKING_DIRECTORY

    Para hacer esto usamos el script provisto, así que publique:

    ./build_firmware.sh output_mini1 ./working_dir_mini1/

    Una vez que se realiza la operación de "compilación", habrá varias imágenes de firmware en espera de ser utilizadas en el directorio de "salida".

    Ahora puede instalar el archivo llamado “custom_image_00001-generic.bin” en su enrutador como lo haría normalmente con un firmware DD-WRT.

    Nota: No olvide restaurar a los "valores predeterminados de fábrica" ​​antes, durante y justo después de la actualización del firmware..

    Post flash pasos

    Debido a que hicimos que el paquete SSMTP busque variables NVRAM para generar el archivo de configuración ssmtp, ahora necesitamos proporcionarle la información que falta..
    Lograremos esto utilizando la función "Ejecutar comandos" de la GUI web.

    Vaya a la GUI web -> “administración” -> “comandos” -> pegue en el cuadro de texto lo siguiente:

    nvram set [email protected]
    nvram set ssmtp_mailhub = smtp.gmail.com: 587
    nvram set [email protected]
    nvram set ssmtp_UseSTARTTLS = YES
    nvram set ssmtp_AuthUser = su-nombre-usuario-gmail (sin el @ gmail.com)
    nvram set ssmtp_AuthPass = you-gmail-password
    nvram set ssmtp_FromLineOverride = YES
    nvram commit

    Reemplace el texto después del signo igual (=), con su información real, y luego presione "Ejecutar comandos".
    Nota: si usa un servidor regular smtp, no TLS, el puerto que debe usar es 25 en lugar de 587.

    Ahora que la información SSMTP está lista para su uso, deberá invocar el script de inicio. Así que puedes reiniciar el enrutador, o pegarlo en el cuadro de texto de "comandos":

    /etc/init.d/S80ssmtp

    Luego presiona "Ejecutar comandos" de nuevo.
    La salida de este comando debe verse como:

    Prueba que puedes enviar email
    De nuevo, pegue esto en el cuadro de texto de “comandos” el siguiente comando con su dirección de correo electrónico:

    echo "prueba crisol enviando un email a 123 qwe" | ssmtp -vvv [email protected]

    Luego presiona "Ejecutar comandos" de nuevo.
    Debido a que usamos la opción -vvv para una mayor verbosidad, la salida de este comando debería tener el siguiente aspecto:

    Si todo salió bien, debería recibir el correo electrónico de prueba en unos segundos..

    Esperamos que pueda utilizar esta información para ampliar aún más los límites de su enrutador doméstico de lo que creía posible y que ahora realmente controle su enrutador doméstico, y DD-WRT ...


    Linux extiende la vida, Linux expande la conciencia ... Linux es vital para el viaje de paquetes