Distributed Network 42 con OpenWrt (Parte 3)

Una vez configurado OpenVPN como se indico en Distributed Network 42 con OpenWrt (Parte 1) y de haber establecido una sesion Border Gateway Protocol (BGP), para el intercambio de rutas (peering), como se explico en Distributed Network 42 con OpenWrt (Parte 2) ya tiene que haber conectividad con Distributed Network 42 (dn42) y el resto de redes que interconecta.

Lo siguiente es integrar todo lo anterior en los ficheros de configuración de OpenWrt y resolver el dominio .dn42. Si se quiere se puede resolver también el dominio .hack, que pertenece al Chaos Computer Club (CCC) de Hamburgo quien mantiene un sistema VPN (ChaosVPN) para conectar hackers.
El Chaos Computer Club es la mayor asociación de hackers de Europa. El CCC fue fundado en Berlín en 12 de septiembre de 1981 en la sede del periódico Die Tageszeitung, por Wau Holland y otros, anticipándose al rol que tendría la informática en la forma en que la gente vive y se comunica. Es ampliamente conocido por las demostraciones públicas de problemas de seguridad. El Chaos Computer Club se hizo famoso mundialmente cuando hackeó la red Alemana Bildschirmtext y consiguieron que un banco en Hamburgo transfiriera 134.000 Marcos (67.000 euros) a las cuentas del club. El dinero se devolvió al día siguiente ante la prensa.
Integración en la configuración de OpenWrt
Al igual que en Distributed Network 42 con OpenWrt (Parte 1) y el siguiente articulo de la serie Distributed Network 42 con OpenWrt (Parte 2) se usa OpenWrt versión Attitude Adjustment y la configuración se realiza por linea de comandos, puedes conectar mediante Telnet o SSH dependiendo de como hayas configurado el firmware.

Comienza protegiendo la configuración de OpenVPN y Quagga para que no se borre si actualizas el firmware, mediante la Web de administración con la opción Keep settings activada.
config extern 'flash_keep'
        option uci '/etc/config/'
        option dropbear '/etc/dropbear/'
        option openvpn '/etc/openvpn/'
        option quagga '/etc/quagga/'
        option passwd '/etc/passwd'
        option opkg '/etc/opkg.conf'
        option firewall '/etc/firewall.user'
        option uploads '/lib/uci/upload/'
Continua dando un nombre a la interfaz del túnel, para poder referirte a ella en el resto de ficheros de configuración. Recuerda sustituir tun0 por el nombre que usaras en la configuración de OpenVPN.
config interface 'dn42t0'
        option ifname 'tun0'
        option proto 'none'
Ahora que ya hay un nombre asignado para el túnel, dn42t0, se puede configurar el firewall. En este caso se hace masquerade para todos los equipos que no tengan asignada una IP del rango local 172.23.xx.x/24.
config zone
        option name 'dn42'
        list network 'dn42t0'
        option input 'DROP'
        option output 'ACCEPT'
        option forward 'DROP'
        option masq_src '192.168.xxx.x/24'
        option masq '1'

config forwarding
        option src 'lan'
        option dest 'dn42'

config forwarding
        option src 'dmz'
        option dest 'dn42'

config forwarding
        option src 'dn42'
        option dest 'dmz'

config rule                                     
        option name 'bgp'              
        option src 'dn42'             
        option proto 'tcp'         
        option dest_port '179'              
        option target 'ACCEPT'
Al haber dos VLANs configuradas en el router se especifica que solo se permitirá el forwarding desde dn42 a la VLAN dmz. En dirección contraria, ambas VLANs lan y dmz podrán realizar forwarding a dn42.

Para que se apliquen los cambios realizados en las configuraciones anteriores es necesario reiniciar los servicios asociados.
/etc/init.d/network restart
/etc/init.d/firewall restart
Si se han instalado paquetes extra que ofrezcan otras funcionalidades quizás interese integrar Distributed Network 42 también en sus ficheros de configuración.

Resolución de nombres de dominio
Hay que asegurarse de que los servidores de nombres de los dominios .dn42 y .hack tan solo resuelvan estos dominios para evitar problemas de seguridad. Ten en cuenta que podrían resolver, por ejemplo, una petición del dominio google.com con IPs falsas.

A continuación solo se muestran las partes relevantes para la resolución tanto normal como inversa de los dos dominios. Se resaltan las que seguramente ya tengas y no sea necesario modificar o añadir a la configuración.
config dnsmasq
        option boguspriv '0'
        option rebind_protection '1'
        option rebind_localhost '0'
        list rebind_domain 'dn42'
        list rebind_domain 'hack'
        list server '/dn42/172.22.0.53'
        list server '/22.172.in-addr.arpa/172.22.0.53'
        list server '/23.172.in-addr.arpa/172.22.0.53'
        list server '/hack/172.31.0.5'
        list server '/31.172.in-addr.arpa/172.31.0.5'
        list server '/100.10.in-addr.arpa/172.31.0.5'
        list server '/101.10.in-addr.arpa/172.31.0.5'
        list server '/102.10.in-addr.arpa/172.31.0.5'
        list server '/103.10.in-addr.arpa/172.31.0.5'
Ya solo queda reiniciar el servicio dnsmasq para poder probar la resolución de los dominios, por ejemplo, con nslookup.
/etc/init.d/dnsmasq restart
Con esto termina la serie de artículos sobre Distributed Network 42. Si quieres mas información sobre el sistema Unified Configuration Interface (UCI) de OpenWrt tienes la documentación oficial disponible aquí.