Ya le mostramos cómo modificar el enrutador de su hogar con el firmware alternativo DD-WRT para obtener un rendimiento muy mejorado, y hoy le mostraremos cómo llevarlo aún más lejos con el kit de modificación DD-WRT.
Si aún no lo ha hecho, asegúrese de consultar los dos artículos anteriores de la serie:
- Convierta su enrutador doméstico en un enrutador súper potente 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 de conjunto
Esta guía le dará un resumen paso a paso de cómo crear su propio firmware DD-WRT con modificaciones y adiciones usando el " kit de modificación de firmware “.
El kit de modificación de firmware permite realizar modificaciones en el firmware sin compilarlo desde la fuente. Hacer 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 utilizar este método es que últimamente el apoyo de DD-WRT a la Openwrt Los paquetes IPKG se han desplazado hacia enrutadores que tienen discos duros (a través de USB), lo que hace que el mod-kit sea la única forma que funcione de manera consistente para instalar los paquetes IPKG con éxito para los casos en los que un disco duro 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 enrutadores con solo 4 MB de flash es un problema real.
Metas
Si bien las instrucciones para este procedimiento, se detallan en 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:
- Instale el paquete knockd y sus dependencias.
-
Instale el paquete ssmtp con configuraciones generadas basadas en NVRAM.
- Opcionalmente con soporte para TLS smtp (también conocido como soporte de Gmail).
Una vez que haya seguido este procedimiento, debería ser relativamente sencillo adaptarlo para la instalación de otros paquetes.
Advertencia
:
Sea ligero ... tenga en cuenta que el uso incorrecto del kit de modificación puede dejarlo con un enrutador que necesita
de-brick-ing
(como a su vez en 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
- El uso de este procedimiento puede ladrillo su enrutador, como en hacer su enrutador inutilizable, No asumimos ninguna responsabilidad por los daños que puedan ser causados directamente o de otra manera debido al uso de los procedimientos a continuación.
- Este procedimiento se realizó en sistemas basados en Debian (Lenny, Squeeze y Mint) y las instrucciones a continuación asumen que también está usando uno.
- 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 Convierta su enrutador doméstico en un enrutador súper potente con DD-WRT guía.
- Su enrutador debe admitir al menos la versión "mini" de DD-WRT.
- Este procedimiento fue creado y probado en enrutadores Linksys WRT54GS / L, si usa 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 se compile y funcione. Para instalarlos / actualizarlos todos a la vez, emita este comando en una terminal:
sudo aptitude install gcc g ++ binutils patch bzip2 flex bison make gettext unzip zlib1g-dev libc6 subversion
Descarga el mod-kit
Cree una subcarpeta y obtenga el kit del 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-solo lectura / troncal /
Descarga un firmware para trabajar
Lo primero que debe considerar es qué versión desea utilizar.
Una regla general es: en caso de duda, utilice "mini". Esto se debe a que, siempre que 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í espacio para los procedimientos e incluso algo de espacio JFFS para
otros usos
en la mayoría de los casos.
Una vez que haya decidido una versión, se recomienda utilizar la última revisión del firmware disponible, ya que tienden a tener muchas correcciones de errores en comparación con sus contrapartes "estables".
En el momento de escribir este artículo, la última era “03-17-11-r16454” y esta revisión se utiliza 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 comandos siguientes asumen que ha cambiado el nombre del archivo.
Extrayendo 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 en:
./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 del kit de modificación en su sistema. esto sucede solo una vez y puede llevar un poco de tiempo ... así que tenga paciencia ...
Instalación de paquetes
Ahora que se extrajo el firmware, podemos instalarle los paquetes.
En general, el procedimiento consiste en descargar el paquete y sus dependencias en forma de archivo ipk del
repositorio openWRT
. Una vez descargados, instálelos en el firmware extraído utilizando el script proporcionado.
El paquete golpeado
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 como 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 en busca de secuencias y luego actúa sobre ellos.
Lo que esto significa es que puede hacer que el dispositivo que ejecuta el demonio ni siquiera "escuche" en los puertos (un escaneo de puertos no los verá como abiertos) y aún así hacer que haga algo que necesita, desde un solo comando, todos los
Dirigirte
a un guión completo.
Usando esta técnica
Puede activar el servidor para que realice cualquier tipo de operación que necesite de forma remota (a través de Internet) sin exponer su red doméstica.
Knockd tiene solo 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 "knock daemon" (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" puede invocarse 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 permite que su enrutador envíe mensajes de correo electrónico como mostramos en nuestro
Cómo configurar alertas de correo electrónico en Linux usando Gmail o SMTP
para servidores. En ese entonces le prometimos que le mostraremos cómo configurar esto para DD-WRT y ahora lo entregaremos.
Esto es principalmente útil si va a crear scripts en el enrutador y le gustaría recibir comentarios sobre su funcionamiento por correo electrónico.
La configuración de este paquete es un poco más compleja que en los sistemas Linux normales 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 enumera 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
), también debe instalar el paquete openSSL.
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 alrededor de 500K de espacio de su total de 4MB (para un enrutador normal que no sea compatible con "mega"), combinado con la sobrecarga de JFFS y descubrirá que le quedan, pero muy pocos, bloques de espacio JFFS libre (alrededor de 60 KB en WRT54GL).
Como todavía hay servidores smtp que no requieren TLS (generalmente el de su ISP), le sugiero que se tome un minuto para pensar si realmente necesita usar la puerta de enlace que requiere TLS.
Si ha decidido habilitar la compatibilidad con TLS a pesar de su desventaja, 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 fábrica, 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 kit de modificación de firmware) como yo llegamos a la conclusión (independientemente si puedo agregar humildemente) que la única forma sensata de hacer esto sería:
- Haga que la ubicación de los archivos de configuración a la que apunta el paquete ssmtp a la ubicación de solo lectura en etc, apunte al directorio tmp en el que se puede escribir en tiempo de ejecución.
- 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 al directorio de configuración ssmtp
Como se explicó anteriormente, necesitamos hacer
/ etc / ssmtp
ubicación en el enrutador, apunte al
/ tmp
directorio ya que 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 de ipk:
rm -rf ./working_dir_mini1/rootfs/etc/ssmtp/
Cree un nuevo enlace simbólico que apunte a / etc / ssmtp en el sistema de archivos raíz del enrutador, para apuntar 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 del enrutador en tiempo de ejecución.
Un script 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í, aunque solo sea como un ejemplo para uso futuro.
Originalmente, Jeremy creó el guión adaptado a la solicitud de alguien, luego lo ajusté y lo aumenté para que fuera más compatible con DD-WRT y los informes de syslog.
Cree el nuevo script init (inicio):
vi ./working_dir_mini1/rootfs/etc/init.d/S80ssmtp
Nota: Puede usar otro editor, yo uso vi porque es consistente con lo que está disponible en el enrutador ...
Haga de este su contenido:
#! / bin / sh
#
# title: ssmtp_nvram.sh
# autor: Jeremy Collake y Aviad Raviv
# sitio: http://www.bitsum.com, http://howtogeek.com
#
# script para construir un archivo de configuración desde nvram vars.
# funcionará para cualquier archivo de configuración que use
# var = pares de tipos de valor.
#
# usa prefijos para variables nvram.
#
# и.е.
# ssmtp hostname = algo
# se traduce en ssmtp.conf
# nombre de host = algo
#
logger_func ()
{
registrador -s -p local0.notice -t SSMTP_init $ 1
}
logger_func "########### Comenzó la ejecución de inicio 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`" ]
luego
logger_func "Parece que no ha configurado las variables NVRAM necesarias para generar el archivo conf"
logger_func "** Considere ** usar estos comandos en su secuencia de comandos 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 surta efecto".
salir 0
ser
###########################################################
#
# 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" ]; luego
# echo "$ 0: ERROR - no se pudo crear $ CONFIG_FILE. ¿Quizás no hay symink / etc / XXXX -> / tmp / etc / XXXX?"
logger_func "ERROR - no se pudo crear $ CONFIG_FILE. ¿Quizás no hay symink / etc / XXXX -> / tmp / etc / XXXX?"
ser
logger_func "########### Finalizó la ejecución de inicio 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 con lo que trabajar después de haber instalado nuestro firmware modificado en el enrutador.
Construya el firmware modificado
Ahora que todo está en su lugar, es hora de volver a empaquetar el firmware modificado en un binario comprimido que podamos flashear en el enrutador.
La sintaxis del script "build.sh" es:
./build_firmware.sh OUTPUT_DIR WORKING_DIRECTORY
Para hacer esto usamos el script provisto, entonces emita:
./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 esperando ser utilizadas en el directorio de "salida".
Ahora puede actualizar el archivo llamado "custom_image_00001-generic.bin" en su enrutador como normalmente utilizaría un firmware DD-WRT .
Nota : No olvide restaurar los "valores predeterminados de fábrica" antes, durante y justo después de la actualización del firmware.
Pasos posteriores al flash
Debido a que hicimos que el paquete SSMTP buscara variables NVRAM para generar el archivo de configuración ssmtp, ahora necesitamos proporcionarle la información que falta.
Lo lograremos usando 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 = your-gmail-user-name (sin @ 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 smtp regular, sin TLS, el puerto a 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 puede reiniciar el enrutador o pegarlo en el cuadro de texto "comandos":
/etc/init.d/S80ssmtp
Luego presione "Ejecutar comandos" nuevamente.
La salida de este comando debería verse así:
Prueba que puedes enviar correo electrónico
Vuelva a pegar esto en el cuadro de texto "comandos" el siguiente comando con su dirección de correo electrónico:
echo "crisol de pruebas enviando correo electrónico 123 qwe" | ssmtp -vvv [email protected]
Luego presione "Ejecutar comandos" nuevamente.
Debido a que usamos la opción -vvv para verbosidad adicional, la salida de este comando debería verse así:
Si todo salió bien, debería recibir el correo electrónico de prueba en segundos.
Esperamos que pueda utilizar esta información para ampliar los límites de su enrutador doméstico aún más de lo que pensaba posible y ahora controla verdaderamente el enrutador de tu hogar y DD-WRT …
Linux extiende la vida, Linux expande la conciencia ... Linux es vital para los viajes de paquetes