public:recetas:openwrt-tp-link740
Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
public:recetas:openwrt-tp-link740 [2013/07/10 22:04] – [Versión revisada del fichero de configuración] egaldu | public:recetas:openwrt-tp-link740 [2017/08/21 06:50] (actual) – [Configurar vpnc] mperez | ||
---|---|---|---|
Línea 1: | Línea 1: | ||
+ | ====== Construir un firmware OpenWRT backfire para TP-Link WR740n V4 ====== | ||
+ | **19-04-2012** | ||
+ | |||
+ | * Miguel Pérez | ||
+ | * Pablo Boronat | ||
+ | |||
+ | https:// | ||
+ | |||
+ | En esta receta es para compilar OpenWRT para un TP-Link WR740n (Versión 4 pero sirve para las otras versiones de este modelo). | ||
+ | |||
+ | OpenWRT es una versión del sistema GNU/Linux especializada en dispositivos de red. Comunmente se ha usado en routers-wifi de bajo coste. | ||
+ | |||
+ | En la receta se incluye una versión del firmware ya compilada pero se ponen las intrucciones por si alguien quiere hacerse una versión con otros paquetes. Si se añaden otros paquetes hay que seleccionarlo bien porque a poco que pongamos nos saldrá una imagen que no cabrá en la memoria flash (4Megabytes en este modelo) que es donde se guarda el sistema operativo. | ||
+ | |||
+ | En la versión que dejamos compilada hemos incluido el cliente vpnc que es el que actualmente se usa para conectar con la red de la Universidad Jaume I (UJI). La idea es que con un router de este tipo (muy económico, alrededor de 20€) el túnel se abre desde el TP-Link y luego lo que conectemos con él ya tiene acceso directo a la red de la UJI y salida a internet pasando por la UJI (para la comunidad universitaria); | ||
+ | |||
+ | Hemos añadido en el inicio de esta receta una guía rápida para pasar de un TP-Link WR740n con el software original a tenerlo con openwrt y configuración vpn uji en 5 pasos. | ||
+ | |||
+ | ===== Guía rápida ===== | ||
+ | Guía rápida de configuración. Si necesitas más información sobre cada paso la encontrarás más adelante en la receta. | ||
+ | |||
+ | < | ||
+ | |||
+ | {{: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | - Cambiar el firmware | ||
+ | *Abrir interfaz web del router http:// | ||
+ | *Ir a TP-Link ---> System ---> upgrade | ||
+ | *Cargar el {{: | ||
+ | - Activar root openwrt cambiando su password | ||
+ | *Abrir interfaz web del router http:// | ||
+ | *login -> go to password configuration | ||
+ | *poner clave guifiadmin | ||
+ | - Cargar la configuración de vpn | ||
+ | *Abrir interfaz web del router http:// | ||
+ | *Ir a System-> Backup / Flash Firmware -> Restore Backup | ||
+ | *Cargar una de las siguientes configuraciones: | ||
+ | * {{: | ||
+ | * ip 192.168.1.10 en la red al exterior e ip 192.168.2.1 en la red interna | ||
+ | * usuario del router login **root** y password **guifiadmin** | ||
+ | * muy recomendable cambiar la contraseña: | ||
+ | * wifi configurada con SSID **guifiHome** y con clave WPA2 **guifiadmin** | ||
+ | * muy recomendable cambiar la contraseña: | ||
+ | * pre-configuración de vpn en / | ||
+ | * reinicio de vpn automático | ||
+ | * {{: | ||
+ | * ip 192.168.1.1 en la red al exterior e ip 192.168.2.1 en la red interna | ||
+ | * pre-configuración de vpn en / | ||
+ | * reinicio de vpn automático | ||
+ | * En las dos configuraciones el router espera tener la antena en la 192.168.1.20. Si has utilizado el unsolclic tu antena será la 192.168.1.1, | ||
+ | - Configurar vpn | ||
+ | * editar tu usuario y contraseña en la configuración de vpn de System-> | ||
+ | * activar el arranque de vpnc en System -> startup -> vpnc Disabled/ | ||
+ | - Reinicio y comprobación | ||
+ | * reiniciar el router para que se active la configuración vpn en System -> Reboot -> Perform reboot | ||
+ | * si todo funciona se encenderá el candado y podrás navegar a través del vpn | ||
+ | * si no funciona no habrá luz en el candado y tendrás que revisar los pasos en el resto de esta guía. | ||
+ | |||
+ | |||
+ | |||
+ | ===== Construir el firmware ===== | ||
+ | |||
+ | FIXME: Deprecated | ||
+ | < | ||
+ | mkdir OPENWRT-TPLINK | ||
+ | cd OPENWRT-TPLINK | ||
+ | svn co svn:// | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | |||
+ | https:// | ||
+ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | cd trunk | ||
+ | ./ | ||
+ | ./ | ||
+ | </ | ||
+ | |||
+ | Luego seleccionamos los paquetes: | ||
+ | |||
+ | < | ||
+ | make menuconfig | ||
+ | Target System Atheros AR7xxx/ | ||
+ | Target Profile TP-LINK TL-WR740N/ | ||
+ | Luci ---> Collections ---> luci-ssl | ||
+ | Network ---> VPN ---> vpnc | ||
+ | </ | ||
+ | |||
+ | | ||
+ | Luego lanzamos la compilación, | ||
+ | |||
+ | make V=99 | ||
+ | | ||
+ | Luego, el firmware es .../ | ||
+ | < | ||
+ | En el directorio .../ | ||
+ | |||
+ | Nuestra versión del TP-Link WR740n la podemos ver en la pegatina que hay bajo del router.</ | ||
+ | |||
+ | Versión ya compilada para descargar: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Cargar el firmware ===== | ||
+ | |||
+ | |||
+ | Para cargarlo se puede hacer desde el sistema de TP-Link ---> System ---> upgrade | ||
+ | |||
+ | El TP-Link de fábrica viene con la 192.168.0.1 en el switch y la cuenta admin con password admin. | ||
+ | |||
+ | Se carga el firmware y se reinicia el router. | ||
+ | |||
+ | Ahora la IP es 192.168.1.1/ | ||
+ | |||
+ | Luci debe funcionar en https:// | ||
+ | |||
+ | |||
+ | <note tip> | ||
+ | |||
+ | Ponerse en le ordenador La ip 192.168.0.10/ | ||
+ | |||
+ | Hacer: | ||
+ | |||
+ | atftp -p -l openwrt-ar71xx-generic-tl-wr740n-v4-squashfs-factory.bin --verbose --trace 192.168.0.1 | ||
+ | |||
+ | o con tftp: | ||
+ | |||
+ | < | ||
+ | tftp 192.168.0.1 | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | * En ese momento, apagar y encender el TP-Link, en pocos segundos se iniciará la transferencia del fichero y el TP-Link se reiniciará tras unos minutos. | ||
+ | |||
+ | * Ponerse en el ordenador una ip en el rango 192.168.1.0/ | ||
+ | |||
+ | |||
+ | ===== Configurar vpnc ===== | ||
+ | |||
+ | La configuración para que funcione abriendo un túnel con la UJI. | ||
+ | |||
+ | En / | ||
+ | |||
+ | < | ||
+ | IPSec gateway vpn-server.uji.es | ||
+ | IPSec ID UJI | ||
+ | IPSec secret 12345678 | ||
+ | #IKE Authmode hybrid | ||
+ | Xauth username AQUI_TU_USUARIO | ||
+ | Xauth password AQUI_TU_CONTRASEÑA | ||
+ | </ | ||
+ | |||
+ | <note warning> | ||
+ | |||
+ | Ya podemos probar el túnel ejecutando vpnc en el terminal (vpnc-disconnect para parar el túnel). Para poder probar el túnel debemos estar conectados a guifi.net o a la freenet o debemos poder hacer ping a una de las IPs del vpn-server.uji.es . | ||
+ | |||
+ | Ahora que ya funciona el túnel debemos hacer que lo inicie en el arranque y que periódicamente pruebe si está funcionando por si hay que volverlo a levantar. | ||
+ | |||
+ | <note tip>Una forma alternativa para configurar la cuenta para el vpn: | ||
+ | * En el interfaz web (en el navegador web poner la IP 192.168.1.1) System ---> Startup | ||
+ | * En la parte de bajo hay cuadro (**Local Startup**) donde podemos escribir instrucciones para el arranque. Podemos dejarlo de la siguiente forma: | ||
+ | |||
+ | < | ||
+ | # Put your custom commands here that should be executed once | ||
+ | # the system init finished. By default this file does nothing. | ||
+ | |||
+ | cat > / | ||
+ | IPSec gateway vpn-server.uji.es | ||
+ | IPSec ID UJI | ||
+ | IPSec secret 12345678 | ||
+ | Xauth username AQUI_TU_USUARIO | ||
+ | Xauth password AQUI_TU_CONTRASEÑA | ||
+ | EOF | ||
+ | |||
+ | exit 0 | ||
+ | </ | ||
+ | |||
+ | * Ahora hay que reiniciar el bicho (System ---> Reboot ---> Perform reboot) | ||
+ | |||
+ | </ | ||
+ | |||
+ | Para los pasos siguientes nos hemos basado en: https:// | ||
+ | |||
+ | Crear el fichero / | ||
+ | |||
+ | < | ||
+ | #!/bin/sh / | ||
+ | START=75 | ||
+ | STOP=10 | ||
+ | |||
+ | start() { | ||
+ | mkdir -p -m777 / | ||
+ | vpnc --non-inter / | ||
+ | } | ||
+ | |||
+ | stop() { | ||
+ | PID_F=/ | ||
+ | if [ -f $PID_F ]; then | ||
+ | | ||
+ | kill $PID | ||
+ | while [ -d /proc/$PID ]; | ||
+ | do | ||
+ | sleep 1 | ||
+ | done | ||
+ | fi | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | <note warning> | ||
+ | <note warning>/ | ||
+ | <note tip>La orden anterior habilita el arranque de vpnc. Se puede habilitar/ | ||
+ | |||
+ | Por si el túnel se cuelga, conviene tener un script que prueba ping a dos IPs a las que debería llegar cuando el túnel funciona. / | ||
+ | |||
+ | <note warning> | ||
+ | |||
+ | < | ||
+ | #!/bin/sh | ||
+ | # | ||
+ | |||
+ | #no hacer nada si el vpn está deshabilitado, | ||
+ | [ ! -f / | ||
+ | |||
+ | |||
+ | # Restart VPNC if both of the specified hosts on the command line are unavailable | ||
+ | if ! [ $(ping -q -c 1 ${1} 2>&1 | grep "1 packets received" | ||
+ | ! [ $(ping -q -c 1 ${2} 2>&1 | grep "1 packets received" | ||
+ | echo Not alive $1 or $2, restarting VPNC | ||
+ | / | ||
+ | / | ||
+ | sleep 5 | ||
+ | / | ||
+ | else | ||
+ | echo Alive $1 or $2 | ||
+ | fi | ||
+ | </ | ||
+ | |||
+ | Una alternativa que realiza hasta 3 pings (o n) a las IPs dadas y comprueba si se han perdido todos: | ||
+ | |||
+ | < | ||
+ | #!/bin/sh | ||
+ | # | ||
+ | |||
+ | #no hacer nada si el vpn est.. deshabilitado, | ||
+ | [ ! -f / | ||
+ | |||
+ | |||
+ | # Restart VPNC if both of the specified hosts on the command line are unavailable | ||
+ | if [ $(ping -q -c 3 ${1} 2>&1 | grep "100% packet loss" | sed " | ||
+ | [ $(ping -q -c 3 ${2} 2>&1 | grep "100% packet loss" | sed " | ||
+ | |||
+ | echo Not alive $1 or $2, restarting VPNC | ||
+ | / | ||
+ | # / | ||
+ | sleep 5 | ||
+ | / | ||
+ | else | ||
+ | echo Alive $1 or $2 | ||
+ | fi | ||
+ | </ | ||
+ | |||
+ | <note warning> | ||
+ | |||
+ | <note warning> | ||
+ | |||
+ | El código anterior se pone crontab para ejecutarse cada 2 minutos. Si falla un ping se volverá a ejecutar el vpnc para abrir el túnel. Deben ponerse dos IPs a las que se llega sólo si el túnel está abierto. Por ejemplo 8.8.8.8. Para ponerlo en crontab la siguiente orden abre el editor para incluirlo en crontab (los asteriscos son minutos horas días semanas meses): crontab -e | ||
+ | |||
+ | < | ||
+ | */2 * * * * / | ||
+ | </ | ||
+ | |||
+ | Otra versión de vpn-keepalive, | ||
+ | |||
+ | < | ||
+ | #!/bin/sh | ||
+ | # | ||
+ | # Restart VPNC if both of the specified hosts on the command line are unavailab | ||
+ | |||
+ | # Do nothing if vpn is not set. | ||
+ | [ ! -f / | ||
+ | |||
+ | # Do nothing if vpn-keepalive is already running. | ||
+ | [ -f / | ||
+ | |||
+ | # We are running vpn-keepalive. | ||
+ | touch / | ||
+ | |||
+ | |||
+ | #if ! [ $(ping -q -c 1 ${1} 2>&1 | grep "1 packets received" | ||
+ | # ! [ $(ping -q -c 1 ${2} 2>&1 | grep "1 packets received" | ||
+ | # echo Not alive $1 or $2, restarting VPNC | ||
+ | if ! [ $(route -n | grep " | ||
+ | echo Tunnel not alive, restarting VPNC | ||
+ | / | ||
+ | / | ||
+ | sleep 5 | ||
+ | / | ||
+ | else | ||
+ | echo vpn seems alive | ||
+ | fi | ||
+ | | ||
+ | # vpn-keepalive is not running anymore. | ||
+ | rm / | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | <note tip>No sé si debería deshabilitar el log de cron. No sé si eso puede dar problemas. Para hacer cambiar la línea en / | ||
+ | |||
+ | crond -c / | ||
+ | |||
+ | por | ||
+ | |||
+ | crond -c / | ||
+ | |||
+ | No lo he probado.</ | ||
+ | |||
+ | ===== Cargar configuración ===== | ||
+ | |||
+ | <note tip>Más abajo hay una versión actualizada</ | ||
+ | |||
+ | Puedes cargar {{: | ||
+ | |||
+ | La carga de la configuración se realiza desde System-> Backup / Flash Firmware -> Restore Backup. | ||
+ | |||
+ | Esta configuración deja preparado: | ||
+ | * cron cada 5 minutos de vpn-keepalive a www.google.com y www.google.es | ||
+ | * red 192.168.2.0/ | ||
+ | * red 192.168.1.0/ | ||
+ | * servidor de nombres, zona horaria y servidor de tiempos configurados | ||
+ | * ruta para llegar a guifi.net (10.0.0.0/ | ||
+ | * pre-configuración de vpn en / | ||
+ | * configuración de leds, se usa el candado para indicar vpn activo | ||
+ | * cambio en las opciones de backup para incluir todo lo anterior | ||
+ | |||
+ | Así que sólo queda: | ||
+ | * editar tu usuario y contraseña en la configuración de vpn de System-> | ||
+ | * activar el arranque de vpnc en System -> startup -> vpnc Disabled/ | ||
+ | * configurar la wifi. Con esta configuración estará deshabilitada. Configurarla en Network -> Wifi | ||
+ | |||
+ | ==== Versión revisada del fichero de configuración ==== | ||
+ | |||
+ | Aquí está la En esta versión parece que se resuelve la configuración de la wifi, {{: | ||
+ | |||
+ | * Para configurar el router vía web o por terminal con ssh (192.168.2.1), | ||
+ | |||
+ | {{: | ||
+ | |||
+ | * Usa la versión de vpn-keepalive que comprueba si existe tun0. Además se reinicia la configuración de red porque en la versión anterior el túnel no se reiniciaba bien. | ||
+ | * La comprobación con vpn-keepalive se ejecuta cada 2 minutos. | ||
+ | * Se deja la wifi configurada con SSID guifiHome y con una clave WPA2 (clave guifiadmin). En la página web del router (192.168.2.1) Pestaña Network -> Pestaña Wifi, editar. En //Interface Configuration// | ||
+ | |||
+ | {{: | ||
+ | |||
+ | * IP 192.168.1.10/ | ||
+ | * Hay corregidos errores en la configuración del DNS para poder conectar a nombres dentro de la propia guifi.net. | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | |||
+ | <note important> | ||
+ | |||
+ | {{: | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | ===== Configuración de la red y otros detalles ===== | ||
+ | |||
+ | Ya por último faltan los detalles de configuración del router. Lo normal sería: | ||
+ | |||
+ | * Asignar (por ejemplo) la 192.168.10.0/ | ||
+ | * Al puente anterior configurarle un DHCP para dar configuración a los cacharros que conectemos. | ||
+ | * Configurar nuestro punto de acceso wifi. | ||
+ | * La WAN (boca azul) conectarla con la LAN del POE (normalmente de una nanostation) y pedir configuración por DHCP. | ||
+ | * Cuando se abra el túnel VPN nos asignará la puerta por defecto a través del túnel. Si también queremos tener acceso a guifi.net, añadir una ruta a la 10.0.0.0/8 a través de la IP del nodo guifi (la nanostation) en la red privada (la 192.168.1.1 si hemos pasado el unsolclic o la 192.168.1.20 que es la que viene de Ubiquiti de fábrica). | ||
+ | * Configurar el cortafuegos. | ||
+ | |||
+ | <note warning> | ||
+ | <note tip> | ||
+ | <note warning> | ||
+ | |||
+ | Si cambiamos la contraseña de la UJI y el router están intentando entrar con nuestra contraseña desfasada se nos bloqueará la cuenta y tendremos que molestar con un CAU para que nos la desbloqueen.</ | ||
+ | |||
+ | |||
+ | ===== Failsafe mode en Openwrt ===== | ||
+ | |||
+ | |||
+ | ==== Volver a los valores por defecto de la configuración ==== | ||
+ | |||
+ | Si perdemos el acceso al router (olvidamos el password, ponemos mal alguna regla del firewall, etc), se puede volver a dejar el openwrt en su estado inicial, para ello hay que seguir estos pasos (de http:// | ||
+ | |||
+ | * Desconectar el cable de red del router | ||
+ | * Conectar el PC con alguno de los puertos LAN del router. | ||
+ | * Configurar el PC con la IP estática 192.168.1.2 | ||
+ | * PConectar el cable del router | ||
+ | * Esperar a que el LED " | ||
+ | * Pulsar el botón " | ||
+ | * Conectarse al router utilizando '' | ||
+ | * Con la orden '' | ||
+ | |||
+ | ==== Actualizar el firmware ==== | ||
+ | |||
+ | |||
+ | Si lo que se quiere es actualizar el firmware, hay que ejecutar los pasos anteriores, salvo el último ('' | ||
+ | |||
+ | Utilizando Netcat si se dispone de suficiente memoria RAM en el router se puede transferir y actualizar a la vez. | ||
+ | |||
+ | En las instrucciones de openwrt dice textualmente **This method is **NOT** recommended!** aunque lo hemos probado repetidas veces en los TP-Link WDR3600. | ||
+ | |||
+ | En el ordenador ejecutar | ||
+ | < | ||
+ | nc -q0 192.168.1.1 1234 < openwrt-ar71xx-tl-wr1043nd-v1-squashfs-sysupgrade.bin | ||
+ | </ | ||
+ | |||
+ | En el router | ||
+ | < | ||
+ | nc -l -p 1234 | mtd write - firmware | ||
+ | </ | ||
+ | |||
+ | Si no se dispone de suficiente memoria RAM, el siguiente método es más seguro. Primero se transfiere el firmware. | ||
+ | |||
+ | En el ordenador ejecutar | ||
+ | < | ||
+ | |||
+ | En el router | ||
+ | < | ||
+ | |||
+ | Donde 3333 es el puerto que se ha elegido (puede ser cualquier otro) y 192.168.1.111 es la IP que se le ha puesto al PC. '' | ||
+ | |||
+ | |||
+ | Ahora se puede actualizar el firmware con '' | ||
+ | |||
+ | sysupgrade -v / | ||
+ | |||
+ | o | ||
+ | |||
+ | mtd -r write / | ||
+ | |||
+ | También se puede transferir el firmware '' | ||
+ | |||
+ | wget http:// | ||
+ | |||
+ | ==== Enlaces ==== | ||
+ | |||
+ | |||
+ | En el wiki de openwrt está explicado el modo failsafe: http:// |