====== 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. Existe la utilidad [[utilidades:script-generador-configs|Generador de configuraciones para enrutadores en LaOtraRed]] que basada en estas configuraciones genera un script uci que se ejecuta en el enrutador y aplica estas configuraciones. :!: La utilidad podría no siempre estar actulizada con las configuraciones que sugiere esta página. ===== Router principal con OpenWrt ===== El enrutador debería tener instalado el S.O. openwrt o similares, [[guias:instalar_so_libre_en_el_router|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 'lor_local' option ifname 'eth0.10' 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.10' # option dev 'ref:network.laotrared.ifname' # 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 '29' 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 ''Network -> 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. {{ :configuraciones:luci-config1.jpg?400 |}} 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". {{ :configuraciones:luci-config2.jpg?400 |}} Luego se especifican los detalles de la nueva regla. {{ :configuraciones:luci-config3.jpg?700 |}} 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 '/cstz.l10e.net/10.64.64.53' list server '/constanze.l10e.net/10.64.64.53' list server '/lor/10.64.64.53' # dominios *.lor list server '/laotra.red/10.64.64.53' # dominios *.laotra.red list server '/laotrared.net/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. :!: Aplica los cambios con ''/etc/init.d/dnsmasq restart'' ==== DHCP ==== Si el nodo no dispone de conectividad IPv6 a Internet (es decir, OpenWrt no tiene un gateway IPv6 configurado), el router anunciará las direcciones IPv6 pero no se anunciará como gateway. Esto evita problemas si no hay Internet IPv6, pero no permite a LOR usar conectividad IPv6 (ya que en los routers troncales no existe un gateway, ellos mismos lo son). Para que el router se anuncie como gateway de todas maneras, se puede configurar un parametro del archivo ''/etc/config/dhcp'': config dhcp 'lan' option interface 'lan' option start '100' option limit '150' option leasetime '12h' option dhcpv6 'server' option ra 'server' option ra_management '1' option ra_default '1' # distribuir rutas :!: Aplicar cambios con ''/etc/init.d/dnsmasq restart'' y ''/etc/init.d/odhcpd restart'' Otra forma de aplicar los mismos cambios pero desde la interfaz LUCI es en ''Network -> Interfaces -> lan -> Edit'' en la sección //DHCP server -> IPv6 Settings// marcar "Always announce default router" y aplicar cambios. {{ :configuraciones:ra_default_luci.jpg?400 |}}