miércoles, 25 de marzo de 2015

IPV6, y Access Point con tu router ISP y un HG556A

     Un amigo lector, me ha propuesto un montaje en red, en el que usando su router Isp, (en mi caso un ZTE de Jazztel), conecta mediante cable, al piso superior, un HG556A tenga las siguientes funcionalidades en la red:
  • Dirección y comunicación IPv6, en todos los routers, todos los puertos e interfaces. 
  • Única red Wifi en toda la casa. 
  • DHCPv4 centralizado en router del Isp. 
  • DHCPv6 centralizado en HG566A
    Todos los firmwares disponibles en el blog, contienen los paquetes necesarios.
     El esquema de red es el siguiente:




 Router ISP

     Configuramos el servidor DHCPv4, creando un único ámbito, que contenga las ip de la 192.168.1.100 a la 192.168.1.254, dejando las 100 primeras para utilizar como ip estáticas, por ejemplo el router HG556A, algún server, etc.

     Router HG556A

     La ip principal, será estática y perteneciente a la red primaria, en nuestro caso, la 192.168.1.2/24.

     Configuramos nuestra wifi como AP y con la misma SSID y contraseña del router isp, y la asignamos a las redes wwan y lan.
# /etc/config/wireless
config wifi-device 'radio0'
option type 'mac80211'
option channel '11'
option hwmode '11g'
option path 'pci0000:00/0000:00:01.0'
option country 'ES'
option txpower '20'
option htmode 'HT20'

config wifi-iface
option device 'radio0'
option mode 'ap'
option encryption 'psk-mixed+tkip+ccmp'
option key 'mipassword'
option ssid 'TEST1'
option network 'wwan lan'
     En la parte de lan, asignamos la 192.168.1.2/24 al router, creamos la interface 6in4 para túnel ipv6, creamos una vlan única en todo el router, y creamos una interface bridge que nos comunicará la red wifi con el resto, asignándola a la red wwan y lan.
# /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 'fd4f:d02c:4197::/48'

config interface 'lan'
option ifname 'eth0.1'
option force_link '1'
option type 'bridge'
option proto 'static'
option netmask '255.255.255.0'
option ip6assign '60'
option ipaddr '192.168.1.2'
option gateway '192.168.1.1'
option broadcast '192.168.1.255'
option dns '8.8.8.8'

config interface 'Wan6in4'
option proto '6in4'
option peeraddr '216.66.xx.xx'
option ip6addr '2001:xxx:xx:xx::2/64'
option ip6prefix '2001:xxx:xx:xx::/64'
option tunnelid 'xxxxxx'
option username 'Username'
option updatekey '2ea9ffxxxxxxxxx0af5ddd'

config switch
option name 'eth0'
option reset '1'
option enable_vlan '1'

config switch_vlan
option device 'eth0'
option vlan '1'
option ports '0 1 2 3 4 5t'

config interface 'sta_bridge'
option proto 'relay'
list network 'lan wwan'
     Y como vamos a necesitar que las ipv4 sean las de nuestro dhcp principal y las de ipv6 del HG556A, lo configuramos así:
/etc/config/dhcp

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

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'

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'
     Mi configuración del firewall es la siguiente:
/etc/config/firewall

config defaults
option syn_flood '1'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'

config zone
option name 'lan'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'
option network 'lan'

config zone
option name 'wan'
option output 'ACCEPT'
option forward 'REJECT'
option masq '1'
option mtu_fix '1'
option network 'wan wan6'
option input 'ACCEPT'

config forwarding
option src 'lan'
option dest 'wan'

config rule
option name 'Allow-DHCP-Renew'
option src 'wan'
option proto 'udp'
option dest_port '68'
option target 'ACCEPT'
option family 'ipv4'

config rule
option name 'Allow-Ping'
option src 'wan'
option proto 'icmp'
option icmp_type 'echo-request'
option family 'ipv4'
option target 'ACCEPT'

config rule
option name 'Allow-DHCPv6'
option src 'wan'
option proto 'udp'
option src_ip 'fe80::/10'
option src_port '547'
option dest_ip 'fe80::/10'
option dest_port '546'
option family 'ipv6'
option target 'ACCEPT'

config rule
option name 'Allow-ICMPv6-Input'
option src 'wan'
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
option name 'Allow-ICMPv6-Forward'
option src 'wan'
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 include
option path '/etc/firewall.user'

     Rebotamos el router isp, y después nuestro HG556A, cuando esté todo en funcionamiento, hacemos la prueba desde un equipo conectado a cualquiera de los routers:

     Miramos la configuración ip en un PC:
C:\Windows\system32>ipconfig

Configuración IP de Windows


Adaptador LAN inalámbrico Conexión de red inalámbrica:

Estado de los medios. . . . . . . . . . . : medios desconectados
Sufijo DNS específico para la conexión. . : nodo1

Adaptador de Ethernet Conexión de área local:

Sufijo DNS específico para la conexión. . : nodo1
Dirección IPv6 . . . . . . . . . . : 2001:xxx:xx:xx::76c
Dirección IPv6 . . . . . . . . . . : 2001:xxx:xx:xx:240f:xxx:xx:xx
Dirección IPv6 . . . . . . . . . . : fd4f:xxxx:4197::76c
Dirección IPv6 . . . . . . . . . . : fd4f:xxxx:4197:0:240f:xxx:xx:xx
Dirección IPv6 temporal. . . . . . : 2001:xxx:xx:xx:1c7d:e3c4:98b2:cc86
Dirección IPv6 temporal. . . . . . : fd4f:xxxx:4197:0:1c7d:e3c4:98b2:cc86
Vínculo: dirección IPv6 local. . . : fe80::240f:xxx:xx:xx%10
Dirección IPv4. . . . . . . . . . . . . . : 192.168.1.200
Máscara de subred . . . . . . . . . . . . : 255.255.255.0
Puerta de enlace predeterminada . . . . . : fe80::xxxx:f0ff:xxxx:dc73%10
192.168.1.1

Adaptador de túnel Conexión de área local* 2:

Estado de los medios. . . . . . . . . . . : medios desconectados
Sufijo DNS específico para la conexión. . : nodo1

Adaptador de túnel Conexión de área local* 6:

Sufijo DNS específico para la conexión. . :
Dirección IPv6 . . . . . . . . . . : 2001:0:xxxx:79fb:xxxx:xxxx:xxxx:de91
Vínculo: dirección IPv6 local. . . : fe80::xxxx:1321:xxxx:de91%12
Puerta de enlace predeterminada . . . . . :
Y ahora realizamos un ping con IPv4 y con IPv6:
C:\Windows\system32>ping -4 www.google.com

Haciendo ping a www.google.com [212.106.221.187] con 32 bytes de datos:
Respuesta desde 212.106.221.187: bytes=32 tiempo=2ms TTL=60
Respuesta desde 212.106.221.187: bytes=32 tiempo=2ms TTL=60
Respuesta desde 212.106.221.187: bytes=32 tiempo=1ms TTL=60
Respuesta desde 212.106.221.187: bytes=32 tiempo=1ms TTL=60

Estadísticas de ping para 212.106.221.187:
Paquetes: enviados = 4, recibidos = 4, perdidos = 0
(0% perdidos),
Tiempos aproximados de ida y vuelta en milisegundos:
Mínimo = 1ms, Máximo = 2ms, Media = 1ms

C:\Windows\system32>ping -6 ipv6.google.com

Haciendo ping a ipv6.l.google.com [2a00:1450:4006:803::200e] desde 2001:xxx:xx:x
9:1c7d:e3c4:98b2:cc86 con 32 bytes de datos:
Respuesta desde 2a00:1450:4006:803::200e: tiempo=93ms
Respuesta desde 2a00:1450:4006:803::200e: tiempo=93ms
Respuesta desde 2a00:1450:4006:803::200e: tiempo=93ms
Respuesta desde 2a00:1450:4006:803::200e: tiempo=93ms

Estadísticas de ping para 2a00:1450:4006:803::200e:
Paquetes: enviados = 4, recibidos = 4, perdidos = 0
(0% perdidos),
Tiempos aproximados de ida y vuelta en milisegundos:
Mínimo = 93ms, Máximo = 93ms, Media = 93ms
        Ya tenemos nuestra configuración funcionando, salida IPv6 a través del túnel y salida IPv4 a través de nuestro ISP habitual.

        Espero que os sea de ayuda.


2 comentarios:

Anónimo dijo...

Yo tengo una config parecida pero en lugar de conectar por cable al principal, conecto por wifi. No entiendo que ventajas puede tener que los equipos que se conecten al hg556 tengan ipv6 en lugar de ipv4 ¿Me lo podias explicar? Muchas gracias por tu gran trabajo

Didac dijo...

En mi diseño, todos los equipos conectados tanto al HG556,
como a tu router ISP, como si tuvieras enlazados switches
en cada boca, todos los equipos conectados a la red tendrán IPv6.

En cuanto a IPv6, mira esta entrada del blog