Tabla de Contenidos

Configuración para los routers principales

Existe la utilidad 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, 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:

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

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)

Para LOR, se necesita agregar una sola zona adicional:

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):

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.

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 '/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.