"Después del juego es antes del juego"
Sepp Herberger

miércoles, 26 de abril de 2017

Configuración de OpenWrt como routed client (Parte II)

Continuamos desde aquí. Habíamos decidido que ibamos a usar el router con OpenWrt para conectarlo como cliente a una red wifi preexistente y luego permitir conexión de dispositivos adicionales usando los puertos ethernet del mismo, enrutando el tráfico entre ambas tarjetas de red del router (wifi y ethernet). De esta manera conectamos dos subredes distintas distanciadas físicamente, una que llamaremos "principal" y otra "cliente", mediante un enlace wifi.

En el caso anterior usamos NAT pero esta vez usaremos relayd. No está muy documentado que es lo que hace relayd, pero por sus resultados interpreto que monta un "bridge" virtual entre dos interfaces de red distintos, enrutando el tráfico que entra por cada uno por todos los demás.

¿Cúal es la ventaja de usar relayd respecto a NAT?. Veamos, en la entrada del blog anterior con NAT el esquema de red quedaba así:


Y con relayd nos quedará así:


Como se puede ver, en el caso de relayd los PC de la red "cliente" (la de la izquierda) tienen IP de la misma red que la principal. No hay traducción de direcciones como en NAT. Eso quiere decir que son PC accesibles y podemos, por ejemplo, hacer un ssh o una conexión http hacia ellos desde la red principal. O que ellos pueden acceder a la red principal con protocolos que normalmente no traspasan un NAT, como DLNA/UPnP. Es decir: todos los equipos a ambos extremos de la conexión wifi estarán en la misma red, con la comodidad y posibilidades que eso nos trae.

Bueno, el router usado es un ARV4158 de ya.com. El OpenWrt que le he metido es un Chaos Chalmer descargado de aquí, una estupenda versión de medber que aprovecha hasta el último byte los mermados 4gb del router.

La guía oficial para configurar relayd es esta https://wiki.openwrt.org/doc/recipes/relayclient, y es la que hemos seguido para configurar el router como cliente, con ciertas diferencias:

1) El paso 7 no lo aplico ya que directamente apago el firewall. Estoy dentro de la misma red y no necesito tener un firewall en el router cliente.
# /etc/init.d/firewall stop
# /etc/init.d/firewall disable

2) El paso 8 tampoco lo aplico ya que no repito la red Wifi como hicimos aquí. En este caso, los dispositivos de la red cliente se conectan de forma cableada a su router.

3) No configuro una IP fija al interface stabridge ya que realmente en mi caso no es necesario, por tanto no encontraremos esto en /etc/config/network:
config interface 'stabridge'
    option ipaddr '192.168.1.35'

Repasemos como quedan los ficheros en /etc/config:

El demonio dhcpd está apagado ya que usamos el de la red principal, es absurdo tener un dhcpd en el cliente:
# cat /etc/config/dhcp

config dnsmasq
 option domainneeded '1'
 option boguspriv '1'
 option filterwin2k '0'
 option localise_queries '1'
 option rebind_protection '1'
 option rebind_localhost '1'
 option local '/lan/'
 option domain 'lan'
 option expandhosts '1'
 option nonegcache '0'
 option authoritative '1'
 option readethers '1'
 option leasefile '/tmp/dhcp.leases'
 option resolvfile '/tmp/resolv.conf.auto'
 option localservice '1'

config dhcp 'lan'
 option interface 'lan'
 option start '100'
 option limit '150'
 option leasetime '12h'
 option dhcpv6 'server'
 option ra 'server'
        option ignore '1'

config dhcp 'wan'
 option interface 'wan'
 option ignore '1'

config odhcpd 'odhcpd'
 option maindhcp '0'
 option leasefile '/tmp/hosts/odhcpd'
 option leasetrigger '/usr/sbin/odhcpd-update'
El ssh si lo tenemos activado como no podía ser de otra forma:
# cat /etc/config/dropbear
config dropbear
 option PasswordAuth 'on'
 option RootPasswordAuth 'on'
 option Port         '22'
 option BannerFile   '/etc/banner'
El valor de /etc/config/firewal no tiene importancia ya que como dijimos lo tengo desactivado para siempre mediante:
# /etc/init.d/firewall stop
# /etc/init.d/firewall disable
En /etc/config/network tenemos las interfaces lan (cableada), wwan (inalambrica) y stabridge (hace el relayd entre lan y wwan). Aparte está la interfaz wan de la parte ADSL del router, pero esa la ignoramos:
# cat /etc/config/network

config interface 'loopback'
 option ifname 'lo'
 option proto 'static'
 option ipaddr '127.0.0.1'
 option netmask '255.0.0.0'

config globals 'globals'
 option ula_prefix 'fd52:f0a8:092a::/48'

config interface 'lan'
 option ifname 'eth0'
 option force_link '1'
 option type 'bridge'
 option proto 'static'
 option ipaddr '192.168.2.1'
 option netmask '255.255.255.0'
 option ip6assign '60'
        option gateway '192.168.1.1'
        option dns     '192.168.1.1' 

config interface 'wwan'
 option proto 'dhcp'

config 'interface' 'stabridge'
        option 'proto'      'relay'
        option 'network'    'lan wwan'

config atm-bridge 'atm'
 option vpi '1'
 option vci '32'
 option encaps 'llc'
 option payload 'bridged'

config interface 'wan'
 option ifname 'nas0'
 option proto 'pppoe'
 option username 'foo'
 option password 'bar'
 option ipv6 '1'

config interface 'wan6'
 option ifname '@wan'
 option proto 'dhcpv6'

config adsl 'dsl'
 option annex 'a'
 option firmware '/lib/firmware/adsl.bin'
En /etc/config/wireless tenemos conexión al punto de acceso principal como cliente (option mode 'sta'). En mi caso lo he hecho mediante el interfaz web luci, aunque se puede hacer a mano (pasos 1-2 de la guia oficial) adaptando los parámetros path/channel/sssid/encryption/bssid/key y el que haga falta a nuestro caso.
# cat /etc/config/wireless
config wifi-device 'radio0'
 option type 'mac80211'
 option hwmode '11g'
 option path 'pci0000:00/0000:00:0e.0'
 option txpower '20'
 option country 'ES'
 option disabled '0'
 option channel '10'

config wifi-iface
 option network 'wwan'
 option ssid 'MI_WIFI'
 option encryption 'psk2'
 option device 'radio0'
 option mode 'sta'
 option bssid 'E8:61:63:4E:FF:FA'
 option key 'MI_PASSWORD'
Bueno, pues con esto tenemos conexión directa entre los puntos de ambas redes y salida a Internet para los de la red cliente. Creo que con esto he acabado tocando toda la casuística de redes wifi entre 2 routers OpenWrt. A partir de ahora tendré que complicarme la vida de otra manera.

No hay comentarios:

Publicar un comentario