¡Esta es una revisión vieja del documento!
Configuración para los routers principales
- Se asume que los routers que desean participar de la sesión troncal (BMX7 desde 2018), tienen capacidad suficiente. De lo contrario, es preferible conectarse a LaOtraRed (abreviado. LOR) mediante otro tipo de sesión.
- Se asume que la configuración presente no es exacta: mas bien, es una idea general aplicable a distintos tipos de nodo, como un nodo simple o un supernodo. No es recomendable copiar y pegar sin un análisis previo.
- Se asume que las configuraciones siguientes están enfocadas a LaOtraRed. Si agregas configuración adicional (relacionada a LaOtraRed o no), cosas que-ya-se-asume-que-funcionan (como el firewall) podrían presentar problemas y necesitas saber resolverlos por tu cuenta.
Router principal con OpenWrt
El enrutador debería tener instalado el S.O. openwrt o similares, Instalar un sistema operativo libre al enrutador
Su misión básica es enrutar todo el tráfico que va a/llega de LOR: además suele ser el router principal de la red, en el lugar donde se ubica el nodo.
Para el ejemplo, asumimos que tenemos para el nodo los bloques IP-LOR públicos v4 y v6: 10.64.7.0/27 y fc01:1934:1:1d00::/56.
Configuración de red
A una configuración por defecto de OpenWrt (que incluye las interfaces LAN y WAN, con sus reglas de firewall), les hacemos las siguientes modificaciones:
- Podemos partir las redes que nos asignaron en segmentos más pequeños, si es deseable.
- En este caso, en IPv4 estamos bien con nuestro /27.
- En IPv6, partiremos nuestro /56 y tomaremos un /60 (útil si aparece otro router dentro ésa red, así DHCPv6-PD podrá enrutarle automáticamente un bloque IPv6 y nos evitamos ruteo estático). También se puede asignar directamente un bloque más chico, hasta un /64.
- Editamos LAN y le asignamos a éste las IP gateway de nuestras redes asignadas:
- 10.64.7.1/27
- fc01:1934:1:1d20::1/60
- Creamos una nueva interfaz meshlocal para la sesión de routing LOR: agregamos una interfaz estática sin IPs en LuCi, o podemos editar /etc/config/network:
config interface 'lan' # (...) configuraciones tipicas option proto 'static' # asignamos IPv4 al router option ipaddr '10.64.7.1/27' # asignamos IPv6 al router option ip6addr 'fc01:1934:1:1d20::1/60' config interface 'meshlocal' option ifname 'eth0.5' option proto 'static' # La sesión de routing troncal (BMX7 en 2018+) no necesita especificar direcciones aquí: # el demonio bmx7 les asigna IPs por su cuenta. Babel y otros protocolos quizás necesiten especificar direcciones.
Una vez editado el archivo usa:
/etc/init.d/network restart
para que los cambios se apliquen.
Configuración de la sesión de routing
- Si estás en la sesión troncal, debes saber que poder hacer uso de anuncios dinámicos en LOR es algo muy serio. Errores como el solapar o impersonar por completo una subnet que no te pertenece, harán que tu sesión BMX7 sea automáticamente rechazada por los nodos vecinos, y ya no podrás conectarte hasta corregir los problemas. Si los problemas son continuos, los nodos vecinos dentro de la Nube LOR pueden expulsarte.
Para la sesión troncal, el archivo /etc/config/bmx7 debe ser editado con cuidado:
config bmx7 'general' config plugin option plugin 'bmx7_config.so' config plugin option plugin 'bmx7_json.so' config plugin option plugin 'bmx7_topology.so' config dev 'meshlocal' option dev 'eth0.5' # Si tu conexión es cableada y no es Gigabit (o es VPN), agrega la siguiente opción para corregir las estimaciones que bmx7 hace de la interfaz, en Kbit/s: # option rateMax '100000000' config plugin option plugin 'bmx7_tun.so' # Anuncios nativos (IPv6) # Anuncia aquí tu bloque IPv6 config unicastHna 'miPrefijoGlobal' option unicastHna 'fc01:1934:1:1d00::/56' # Anuncios por túnel (IPv4v6) # Anuncia aquí tu bloque IPv4 junto a una IP asignada al router (probablemente sea la IP gateway) # El bloque completo pertenece aquí, no importa si subdividiste tu /27 o no. # Además, debes agregar en tun6address tu primera dirección del /56 asignado. config tunDev 'default' option tunDev 'miPrefijoV4' option tun4Address '10.64.7.1/27' option tun6Address 'fc01:1934:1:1d00::1/128' # Receptor de anuncios por túnel (IPv4v6) # Aceptar anuncios de redes LOR config tunOut option tunOut 'ip4LOR' option network '10.64.0.0/15' option maxPrefixLen '28' option minPrefixLen '20' # Aceptar anuncios de redes IPv4v6 LOR (sólo anycast) config tunOut option tunOut 'ip4anycast' option network '10.64.64.0/24' option maxPrefixLen '32' option minPrefixLen '32' config tunOut option tunOut 'ip6anycast' option network 'fc01:1934:a::/48' option maxPrefixLen '128' option minPrefixLen '128' # Experimental, PIT-RFC1918 config tunOut option tunOut 'ip4lnet' option network '10.0.0.0/8' option maxPrefixLen '23' option minPrefixLen '19' # Experimental: PIT Ciudadano integrado a LOR config tunOut option tunOut 'ip4pub' option network '0.0.0.0/0' option maxPrefixLen '27' option minPrefixLen '24' # Experimental: Nubes LOR6 config tunOut option tunOut 'ip6lor6' option network 'fd66:66:66::/48' option maxPrefixLen '128' option minPrefixLen '128'
Además, debes proteger los archivos dentro de /etc/bmx7/ para asegurar que las características de seguridad de BMX7 funcionen. No distribuyas backups de tu configuración.
Aplica los cambios con
/etc/init.d/bmx7 restart
Configuración del Firewall
La configuración por defecto de OpenWrt es la siguiente:
Zona global: accept/reject/accept (bloquea por defecto el enrutado)
- Zona LAN, accept/accept/accept (acepta los paquetes que salen de LAN, además de contestar o iniciar conexión desde el router)
- Zona WAN, reject/reject/accept (por defecto rechazan la entrada y las conexiones iniciales desde WAN)
- Regla de traspaso (forwarding) desde LAN hacia WAN.
Para LOR, se necesita agregar una sola zona adicional:
- Zona LOR, accept/reject/accept. No masquerade (NAT). Sólo si hay problemas para acceder a algunos sitios web, activa “MTU Fix” (TCP-MSS).
- Ésta zona involucra a todas las piezas de LOR, incluyendo redes abiertas o nubes LOR.
- Crear una regla de traspaso (forwarding) desde LAN hacia LOR.
La configuración de esa zona LOR luce mas o menos así, en /etc/config/firewall:
config zone option input 'ACCEPT' # Por defecto "forward" bloquea el traspaso de paquetes. Pero más abajo habilitamos el egreso por defecto. # Para habilitar por completo el ingreso (por ejemplo, si tienes muchos servidores o servicios), cambia la siguiente regla de "REJECT" a "ACCEPT". option forward 'REJECT' option output 'ACCEPT' option name 'laotrared' option network 'laotrared' # La siguiente regla agrega a la zona LOR los túneles IPv4v6 que bmx7 crea: list device 'X7+' config forwarding option src 'lan' option dest 'laotrared' config rule 'lorPing' option name 'PermitirPingIngreso' option src 'laotrared' option proto 'icmp' option icmp_type 'echo-request' option family 'ipv4' option target 'ACCEPT' config rule 'lorICMPv6' option name 'PermitirICMPv6ingreso' option src 'laotrared' option proto 'icmp' list icmp_type 'echo-request' list icmp_type 'echo-reply' list icmp_type 'destination-unreachable' list icmp_type 'packet-too-big' list icmp_type 'time-exceeded' list icmp_type 'bad-header' list icmp_type 'unknown-header-type' list icmp_type 'router-solicitation' list icmp_type 'neighbour-solicitation' list icmp_type 'router-advertisement' list icmp_type 'neighbour-advertisement' option limit '1000/sec' option family 'ipv6' option target 'ACCEPT' config rule 'lorICMPv6F' option name 'PermitirICMPv6traspaso' option src 'laotrared' option dest '*' option proto 'icmp' list icmp_type 'echo-request' list icmp_type 'echo-reply' list icmp_type 'destination-unreachable' list icmp_type 'packet-too-big' list icmp_type 'time-exceeded' list icmp_type 'bad-header' list icmp_type 'unknown-header-type' option limit '1000/sec' option family 'ipv6' option target 'ACCEPT' config rule 'lorSIPRTP' option target 'ACCEPT' option src 'laotrared' option name 'PermitirSIP-RTP' option proto 'udp' option dest 'lan' option dest_port '10000-20000'
Aplica los cambios con
/etc/init.d/firewall restart
Abriendo una IP para recibir tráfico externo
Si quieres abrir una IP para recibir tráfico externo (por ejemplo poner un servidor visible para el resto de la red):
- Agregar una regla de tráfico, sourcezone=LOR, destzone=LAN, destIP=(ipv4), action=ACCEPT.
- Agregar una regla de tráfico, sourcezone=LOR, destzone=LAN, destIP=(ipv6), action=ACCEPT.
Esto se puede lograr fácilmente desde la interfaz gráfica del router (LUCI) o editando el archivo /etc/config/firewall
.
Abriendo IP desde LUCI
En el panel de administración (abre un navegador web y coloca la IP del enrutador) ingresa a Firewall → Traffic Rules
para agregar las reglas que permitan que peticiones desde LaOtraRed puedan acceder a una IP fija, esa IP deberá ser la del servidor que deseamos exponer.
Ahí se ven todas las reglas de tráfico y agregamos una en la sección que dice “New Forward Rule” con el nombre que queramos y hacemos click en “Add and edit”.
Luego se especifican los detalles de la nueva regla.
Guardamos los cambios con “Save & Apply”. De la misma forma para abrir una dirección IPv6.
Abriendo IP editando /etc/config/firewall
Si prefieres editar el archivo directamente puedes agregar las siguientes líneas modificando según la IP que requieras hacer pública:
config rule option target 'ACCEPT' option src 'lor' option name 'ServerPiPublico' option dest_ip '10.64.3.66' option proto 'all' option dest 'lan
Aplica los cambios con
/etc/init.d/firewall restart
DNS
Para poder resolver dominios en LaOtraRed (terminan en .lor
), necesitas editar tu configuración en /etc/config/dhcp.
config dnsmasq (...) option rebind_protection '0' # Habilitar la resolución de rDNS IPv4v6 list server '/10.in-addr.arpa/10.64.64.53' list server '/64.10.in-addr.arpa/10.64.64.53' list server '/65.10.in-addr.arpa/10.64.64.53' list server '/4.3.9.1.1.0.c.f.ip6.arpa/10.64.64.53' list server '/0.7.d.f.ip6.arpa/10.64.64.53' list server '/6.6.d.f.ip6.arpa/10.64.64.53' list server '/lor/10.64.64.53' # dominios *.lor list server '/laotra.red/10.64.64.53' # dominios *.laotra.red # Servidor DNS global por defecto, si tienes internet. list server '1.1.1.1' # DNS de CloudFlare. Naturalmente, puedes usar otro. # Resolvedores adicionales, por si no tienes internet list server '/aso1.enmaskarado.net/10.64.64.53'
Aplica los cambios con
/etc/init.d/dnsmasq restart