Distributed Network 42 con OpenWrt (Parte 1)

Distributed Network 42 (dn42) se puede definir como una Darknet, una red oculta dentro de la red global que es Internet. Esta formada por túneles punto a punto (GRE, IPSec u OpenVPN) entre los usuarios, mediante los que se intercambian rutas (peering) usando Border Gateway Protocol (BGP).
Actualmente el término Darknet no tiene una definición universalmente aceptada. Sin embargo, basándose en las versiones actuales más populares, se puede decir que la Darknet es una colección de redes y tecnologías usadas para compartir información y contenidos digitales (ej. textos, software, canciones, imágenes, películas) que está "distribuida" entre los distintos nodos y que trata de preservar el anonimato de las identidades de quienes intercambian dicha información, es decir, persiguen el anonimato del origen y el destino cuando se produce la transferencia de información. En la definición anterior, cuando se habla de redes, no se refiere a redes físicas separadas de las redes actuales sino a redes superpuestas que pueden usar protocolos y puertos "no estándar" sobre la red subyacente.
En este caso la definición anterior no se ajusta del todo, la filosofía es distinta, el fin principal no es el anonimato sino ofrecer una oportunidad para explorar las tecnologías de routing usadas en Internet. A parte interconecta con otras Darknets, que quizás se ajusten mas a la definición.

Si quieres formar parte de la red pasate por dn42 para suscríbete a la lista de correo y realizar una solicitud de peering. En un par de días como mucho recibirás una respuesta, seguramente indicándote que te conectes al canal del IRC para indicarte como obtener un numero de sistema autónomo (ASN) y un rango de IPs.

Requisitos mínimos
Ten en cuenta que OpenWrt se suele utilizar en routers con pocos recursos, pero en este caso tiene que disponer de cierta potencia. Si tienes IP dinámica lo mas útil es establecer el túnel punto a punto con OpenVPN y a parte necesitas mantener establecida una sesión BGP.
OpenWrt es una distribución de Linux basada en firmware usada para dispositivos empotrados tales como routers personales.
El equipo utilizado en este ejemplo es un Netgear wndr3700v2:
  • CPU: 680 MHz
  • RAM: 64 MB
  • Flash: 16 MB
Las características anteriores se quedan mas bien cortas pero pueden ser suficientes, todo depende de como estés utilizando el router y de como sea tu red. No es lo mismo una red con una sola maquina que una con cien maquinas, igualmente no es lo mismo que las maquinas se utilicen para navegación, correo o similares a que se utilicen para descargas con BitTorrent, que establece cientos de conexiones.

Configuración de OpenVPN
En este caso se usa OpenWrt versión Attitude Adjustment. Puedes encontrar un listado de los routers soportados e información sobre la instalación aquí. La configuración se realiza por linea de comandos, puedes conectar mediante Telnet o SSH dependiendo de como hayas configurado el firmware.

Una vez hayas accedido, actualiza la lista de paquetes disponibles e instala los necesarios para que se pueda establecer un túnel OpenVPN punto a punto.
opkg update
opkg install openvpn
Nota: A partir de la versión de OpenWrt Barrier Breaker el paquete openvpn pasa a llamarse openvpn-openssl.

Tras haber realizado la solicitud de peering en la lista de correo, te habrán indicado en el canal IRC como registrate y establecer el túnel. Tendrías que disponer de unos datos similares a los siguientes.
Valor (ejemplo)OpenVPNDescripción
xx.xxx.xxx.xxxremoteIP publica remota
40951portPuerto publico
ASxxxxx.keysecretSecreto OpenVPN
10 60keepaliveKeepalive del túnel
172.23.xx.xifconfigIP red dn42 local
172.22.xxx.xxIP red dn42 remota
Para configurar el túnel OpenVPN, simplemente sustituye los valores siguiendo la tabla anterior, si vas a actuar de servidor omite la opción remote.
config openvpn 'dn42_tunnel'
        option mode 'p2p'
        option dev 'tun0'
        option port '40951'
        option remote 'xx.xxx.xxx.xxx'
        option secret '/etc/openvpn/ASxxxxx.key'
        option user 'nobody'
        option group 'nogroup'
        option persist_tun '1'
        option persist_key '1'
        option comp_lzo '1'
        option keepalive '10 60'
        option ifconfig '172.23.xx.x 172.22.xxx.xx'
        option enable '1'
Una vez hayas guardado la configuración inicia OpenVPN, comprueba la nueva interfaz tun0 y si todo esta correcto habilita el servicio para que se inicie automáticamente al arrancar.
/etc/init.d/openvpn start
ifconfig tun0
tun0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
        inet addr:172.23.xx.x  P-t-P:172.22.xxx.xx  Mask:255.255.255.255
        UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
        RX packets:681 errors:0 dropped:9 overruns:0 frame:0
        TX packets:520 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:100 
        RX bytes:51245 (50.0 KiB)  TX bytes:34601 (33.7 KiB)
/etc/init.d/openvpn enable
Con esto finaliza la primera parte. En Distributed Network 42 con OpenWrt (Parte 2) se continua configurando y estableciendo la sesión BGP a través del túnel, que se acaba de crear.