Diferencia entre revisiones de «Jugando con Babel»
(Inicial) |
Sin resumen de edición |
||
(No se muestran 2 ediciones intermedias de otro usuario) | |||
Línea 1: | Línea 1: | ||
= Jugando con Babel = | = Jugando con Babel = | ||
La primera impresión seria de Babel no es buena: la documentación no te ayudará a entender desde un principio qué cosa es lo que dice ser, y los ejemplos en Internet son escasos y muy escuetos. | La primera impresión seria de Babel no es buena: la documentación no te ayudará a entender desde un principio qué cosa es lo que dice ser, y los ejemplos en Internet son escasos y muy escuetos. | ||
Línea 41: | Línea 37: | ||
* El bloque de IPs para clientes ocasionales es enrutable y públicamente alcanzable (no-NAT). | * El bloque de IPs para clientes ocasionales es enrutable y públicamente alcanzable (no-NAT). | ||
* Este es un ejemplo para entender el funcionamiento del protocolo. Aunque no incluimos IPv6, el protocolo lo soporta. | * Este es un ejemplo para entender el funcionamiento del protocolo. Aunque no incluimos IPv6, el protocolo lo soporta. | ||
Aunque en los repositorios se encuentra la versión 1.6.1, se ha utilizado la última versión (compilada con Buildroot), disponible en este enlace: [http://repo.lmita.me/openwrt/chaos_calmer/ar71xx/generic/babeld_1.6.3-1_ar71xx.ipk] | |||
= Configurando todo = | = Configurando todo = | ||
Línea 225: | Línea 223: | ||
= Resultados = | = Resultados = | ||
* [[configuracion_nodo_rezo]] |
Revisión actual - 10:47 13 dic 2015
Jugando con Babel
La primera impresión seria de Babel no es buena: la documentación no te ayudará a entender desde un principio qué cosa es lo que dice ser, y los ejemplos en Internet son escasos y muy escuetos.
Entonces, para entender a Babel, toca experimentar.
Escenario de pruebas
- En una casa tenemos una antena con router OpenWrt, donde está conectado un servidor.
- A la mitad de la calle tenemos otra antena con router OpenWrt
- En el edificio de la otra cuadra tenemos otra antena con router OpenWrt, y otro servidor.
- Luego, en la avenida, tenemos otra antena con router OpenWrt. Modo Ad-Hoc y AP abierto (para clientes)
Todas estas antenas con router ejecutan Babel y están conectadas entre sí en modo Ad-Hoc.
Objetivos
- Que un router (mesh) alcance a otro router (mesh)
- Que un router (mesh) alcance a una máquina detrás de un router (mesh)
- Que una máquina detrás de un router (mesh) alcance a otro router (mesh)
- Que una máquina detrás de un router (mesh) alcance a otra máquina detrás de un router (mesh)
- Que los bloques de IPs sean distintos para nodos mesh y para Clientes Ocasionales (de red Wi-Fi abierta)
- Que desde una red Wi-Fi abierta (AP), se pueda alcanzar a todos los demás
- Que desde la red, se pueda alcanzar a los aparatos conectados a una red Wi-Fi abierta (AP)
- Implica eliminar NAT
- Que desde cualquier red Wi-Fi abierta (AP), se pueda alcanzar a los aparatos conectados a otra red Wi-Fi abierta (AP) circulando por la red mesh
- Implica eliminar NAT
Datos técnicos
- Ninguno de los servidores conoce Babel ni entenderá nada que no sea una red típica y normal.
- El radio de la antena/router de la avenida trabaja doble: mantiene una mesh y a la vez crea un AP para clientes.
- Usamos dos bloques IP diferentes para los dispositivos: 10.0.0.0/8 para nodos mesh y 172.16.0.0/12 para clientes ocasionales del AP libre.
- La red mesh es una red conectada por nodos fijos (no nodos-parásito): no tiene por qué haber DHCP en la mesh.
- El bloque de IPs para clientes ocasionales es enrutable y públicamente alcanzable (no-NAT).
- Este es un ejemplo para entender el funcionamiento del protocolo. Aunque no incluimos IPv6, el protocolo lo soporta.
Aunque en los repositorios se encuentra la versión 1.6.1, se ha utilizado la última versión (compilada con Buildroot), disponible en este enlace: [1]
Configurando todo
Nodo Cero (Casa)
- La red de la casa consta de 10.1.0.0/24.
- Esta antena/router es 10.1.0.1 y anunciará 10.1.0.0/24 en la mesh: cualquier nodo que desee llegar a una máquina dentro del rango, deberá llegar a este router primero.
- En la red de este router, existe un servidor en 10.1.0.22
/etc/config/babeld
package babeld
config general
option 'random_id' 'true'
option 'ipv6_subtrees' 'true'
config interface
option 'ifname' 'wlroute' #interfaz (preferiblemente virtual) donde Babel actúa
config filter
# [sólo] Recibir anuncios de rutas de nodos que estén en la mesh (10.0.0.0/8)
# En la red mesh de verdad, esto se debería restringir al bloque de IPs para el dep. La Paz
option 'type' 'in'
option 'ip' '10.0.0.0/8'
option 'action' 'allow'
# Regla similar para IPv6
config filter
# Anunciar la ruta de la red que yo represento en la mesh.
# Este es el principal parámetro a configurar
# En la red mesh de verdad, la asignación de red debería ser más pequeña (/27, /28)
option 'type' 'redistribute'
option 'local' 'true'
option 'ip' '10.1.0.1/24'
# Regla similar para IPv6
config filter
# Habilitar la redistribución de anuncios de rangos de IP en el sig. segmento
# Rango IP: similar al del primer filtro
# (sin esto, sólo se validará rutas a las IP de los demás nodos/router (/32) y no así a las redes detrás de ellos)
option 'type' 'redistribute'
option 'ip' '10.0.0.0/8'
config filter
# Ignorar rutas obtenidas de supuestos "nodos" que no participen en la mesh
option 'type' 'in'
option 'action' 'deny'
config filter
# No anunciar direcciones adicionales fuera de lo configurado.
# MUY IMPORTANTE
option 'type' 'redistribute'
option 'local' 'true'
option 'action' 'deny'
config filter
# Por defecto
option 'type' 'redistribute'
option 'action' 'deny'
/etc/config/wireless
config wifi-iface
option device 'radio0'
option encryption 'none'
option ssid 'hello'
option mode 'adhoc'
option network 'wlroute'
/etc/config/network
config interface 'wlroute'
option proto 'static'
option ipaddr '10.1.0.1'
option netmask '255.255.255.0'
Nodo calle
- La red del aparato consta de 10.1.1.0/24.
- Esta antena/router es 10.1.1.1 y anunciará 10.1.1.0/24 en la mesh: cualquier nodo que desee llegar a una máquina dentro del rango, deberá llegar a este router primero.
/etc/config/babeld
(similar al anterior, modificando red a anunciar)
/etc/config/network
(similar al anterior, modificando red a anunciar)
/etc/config/wireless
(similar al anterior)
Nodo edificio
- La red del aparato consta de 10.1.2.0/24.
- Esta antena/router es 10.1.2.1 y anunciará 10.1.2.0/24 en la mesh: cualquier nodo que desee llegar a una máquina dentro del rango, deberá llegar a este router primero.
- En la red de este router, existe un servidor en 10.1.2.12
/etc/config/babeld
(similar al anterior, modificando red a anunciar)
/etc/config/network
(similar al anterior, modificando red a anunciar)
/etc/config/wireless
(similar al anterior)
Nodo avenida
- La red del aparato consta de 10.1.5.0/24.
- Esta antena/router es 10.1.5.1 y anunciará 10.1.5.0/24 en la mesh: cualquier nodo que desee llegar a una máquina dentro del rango, deberá llegar a este router primero.
- Esta antena/router da servicio AP Wi-Fi abierta a clientes ocasionales. El router es 172.16.200.1 y anunciará 172.16.200.0/24 en la mesh.
- Se aceptarán anuncios de rutas de la red mesh (como es estándar), pero no así anuncios de supuestos "nodos" en la red Wi-Fi abierta.
/etc/config/babeld
#(...)
config filter
# Anunciar la ruta de la red que yo represento en la mesh.
# En la red mesh de verdad, la asignación de red debería ser más pequeña (/27, /28)
option 'type' 'redistribute'
option 'local' 'true'
option 'ip' '10.1.5.1/24'
# Regla similar para IPv6
config filter
# Anunciar la ruta de la red para Clientes Ocasionales que yo represento en la mesh.
# En la red mesh de verdad, la asignación de red debería ser más pequeña (/24, /25)
option 'type' 'redistribute'
option 'local' 'true'
option 'ip' '172.16.200.0/24'
# Regla similar para IPv6
config filter
# Habilitar la redistribución de anuncios de rangos de IP en el sig. segmento
option 'type' 'redistribute'
option 'ip' '172.16.0.0/12'
#(...)
/etc/config/wireless
config wifi-iface
option device 'radio0'
option encryption 'none'
option ssid 'hello'
option mode 'adhoc'
option network 'wlroute'
config wifi-iface
option device 'radio0'
option mode 'ap'
option encryption 'none'
option ssid 'hello-open'
option network 'wlclts'
/etc/config/network
config interface 'wlroute'
option proto 'static'
option ipaddr '10.1.5.1'
option netmask '255.255.255.0'
config interface 'wlclts'
option proto 'static'
option ipaddr '172.16.200.1'
option netmask '255.255.255.0'