Este post es muy similar al encontrado en: http://blog.acostasite.com/2015/11/configurando-una-red-con-dhcpv6-server.html
La principal diferencia es que en esta oportunidad tendremos el DHCPv6 Server en Cisco y no en Linux
En el presente post vamos a explicar e implementar como trabajar con DHCPv6 Server, Relay y Cliente.
Favor leer la sección: "Explicación de la topología" la cual indica cada función
Topología
Explicación de la topología
En la topología de arriba va a ocurrir lo siguiente:
- El Cisco DHCPv6 Server está entregando prefijos v6
- El DHCPv6 Relay (Debian) va a escuchar por la interfaz ethernet1 (e1) por peticiones DHCPv6 de Prefix Delegation (PD). Las mismas serán reenviadas por la interfaz ethernet0 (e0) al servidor DHCPv6 Server
- El Cisco Router DHCPv6 Client va a hacer solicitudes DHCPv6 PD en su interfaz f1/0, del prefijo recibido va a configurar su interfaz f0/0 y enviar Router Advertisements por dicha interfaz permitiendo a los clientes auto-configurarse. En esta oportunidad también configuraremos otras interfaces pero solo a manera de ejemplo.
- Los clientes conectados a la interfaz f0/0 en el Cisco DHCPv6 Cliente van a autoconfigurarse vía SLAAC utilizando el prefijo recibido por RA
Nótese que para el Router Cisco DHCPv6 Client le es transparente el DHCPv6 Relay Server
Que necesitamos:
- Del lado del Relay el software Relay de DHCPv6 de ISC (que es diferente al server)
- El Router tiene que ser un enrutador que haga DHCPv6 cliente PD
Instalando
En el Relay Server:
#sudo apt-get install isc-dhcp-relay
Durante la instalación del relay se van a realizar varias preguntas. Puedes decidir contestarlas o no. Para este post no es necesario responderlas.
Configuraciones:
Del lado del Cisco DHCPv6 Server:
ipv6 unicast-routing
interface FastEthernet0/0
ipv6 address 2001:DB8::1/64ipv6 dhcp server DHCPv6-SERVER
end
prefix-delegation pool MY-PD-1
ipv6 local pool MY-PD-1 2001:DB8:ABCD::/48 56
Primero se le indica al equipo que puede enrutar paquetes IPv6. Luego se configura IPs estáticas entre el relay y la interfaz f0/0 (revisar la ethernet0 del relay).
Luego, se le indica que la interfaz sirve como DHCPv6 Server y se le asigna el pool DHCPv6-Server, aquí podemos escribir cualquier nombre.
Dentro del pool DHCPv6-Server se le dice que haga prefix-delegation (se le puede indicar más información pero para nuestro propósito hasta aquí es suficiente) y que utilice un pool local llamado MY-PD-1. Este pool va a utilizar prefijos dentro de 2001:DB8:ABCD::/48 y entregará bloques /56 a sus clientes. Aquí podemos indicar el tamaño de prefijo que queremos.
Del lado del relay:
Red:
#ifconfig eth0 inet6 add 2001:db8::2/64
#ifconfig eth1 inet6 add 2001:db8:1::2/64
No hay configuraciones. El relay es levantado con este comando:
#dhcrelay -I -l eth1 -u eth0
Explicación del comando para ejecutar el dhcp-relay:
Hay muchas maneras y opciones para dhcrelay, en el comando anterior se esta diciendo: que se utilice el DHCPv6 interface-id option, que escuche peticiones por eth1 y las mismas sean enviadas por eth0
Del lado del Cisco Router DHCPv6 Cliente:
ipv6 unicast-routing
interface FastEthernet1/0
description Hacia DHCPv6 Relay Server
ipv6 address 2001:DB8:1::1/64
ipv6 dhcp client pd IP-FROM-DHCPv6-SERVER
end
description Hacia LAN
ipv6 address IP-FROM-DHCPv6-SERVER ::1/64
end
Primero se habilita el routing IPv6 en el equipo.
Segundo, en la interfaz F1/0 se le esta diciendo al router que es DHCP cliente para prefijos y le asignamos el nombre: IP-FROM-DHCPv6-SERVER
Tercero, en la interfaz f0/0 le indica al router que utilice el prefijo recibido via DHCPv6 client y asigne el mismo a la interfaz como ::1/64. Es decir, el router toma el /56 del DHCPv6 y el mismo router va a crear una /64 para f0/0 (nota que puedes configurar otras interfaces utilizando el mismo prefijo recibido por el DHCP).
Para revisar:
Del lado del DHCPv6 Server deberiamos ver algo como:
a) Con el DHCPv6 server corriendo en foreground puedes ver:
DHCP-Server#debug ipv6 dhcp detail
Se veran mensajes como:
*Dec 1 09:55:14.619: IPv6 DHCP: Received RELAY-FORWARD from 2001:DB8::2 on FastEthernet0/0
*Dec 1 09:55:14.623: IPv6 DHCP: detailed packet contents
*Dec 1 09:55:14.623: src 2001:DB8::2 (FastEthernet0/0)
*Dec 1 09:55:14.627: dst FF05::1:3
*Dec 1 09:55:14.627: type RELAY-FORWARD(12), hop 0
*Dec 1 09:55:14.627: link 2001:DB8:1::2
*Dec 1 09:55:14.631: peer FE80::C801:24FF:FE20:1C
*Dec 1 09:55:14.631: option INTERFACE-ID(18), len 4
*Dec 1 09:55:14.635: 0x01000000
*Dec 1 09:55:14.639: option RELAY-MSG(9), len 50
*Dec 1 09:55:14.639: type SOLICIT(1), xid 2389101
*Dec 1 09:55:14.643: option ELAPSED-TIME(8), len 2
*Dec 1 09:55:14.643: elapsed-time 0
*Dec 1 09:55:14.647: option CLIENTID(1), len 10
*Dec 1 09:55:14.647: 00030001CA0124200000
*Dec 1 09:55:14.647: option ORO(6), len 6
*Dec 1 09:55:14.651: IA-PD,DNS-SERVERS,DOMAIN-LIST
*Dec 1 09:55:14.655: option IA-PD(25), len 12
*Dec 1 09:55:14.659:
DHCP-Server# IAID 0x00040001, T1 0, T2 0
*Dec 1 09:55:14.663: IPv6 DHCP: Using interface pool DHCPv6-SERVER
*Dec 1 09:55:14.667: IPv6 DHCP: Source Address from SAS 2001:DB8::1
b) DHCP-Server#sh ipv6 dhcp binding
Client: FE80::C801:24FF:FE20:1C
DUID: 00030001CA0124200000
Username : unassigned
Interface : relayed
IA PD: IA ID 0x00040001, T1 302400, T2 483840
Prefix: 2001:DB8:ABCD::/56
preferred lifetime 604800, valid lifetime 2592000
expires at Dec 31 2015 09:55 AM (2589331 seconds)
Del lado del Cliente DHCPv6 Cisco:
Para revisar si la interfaz f0/0 se autoconfiguró cone l prefijo recibido por el DHCPv6:
a) R1#show ipv6 interface f0/0
Vamos a ver algo como:
R1#sh ipv6 int f0/0
FastEthernet0/0 is up, line protocol is up
IPv6 is enabled, link-local address is FE80::C801:24FF:FE20:0
No Virtual link-local address(es):
Description: Hacia LAN
General-prefix in use for addressing
Global unicast address(es):
2001:DB8:ABCD::1, subnet is 2001:DB8:ABCD::/64 [CAL/PRE]
FastEthernet0/0 is up, line protocol is up
IPv6 is enabled, link-local address is FE80::C801:24FF:FE20:0
No Virtual link-local address(es):
Description: Hacia LAN
General-prefix in use for addressing
Global unicast address(es):
2001:DB8:ABCD::1, subnet is 2001:DB8:ABCD::/64 [CAL/PRE]
Nótese que 2001:DB8:ABCD::/64 corresponde al prefijo configurado en el DHCPv6 Server que es entregado vía PD
Algo muy importante es el comando:
b) R1#show ipv6 dhcp
El cual muestra el DUID (DHCPv6 Unique ID) del equipo (RFC3315):
This device's DHCPv6 unique identifier(DUID): 00030001CA0124200000
Podemos apreciar que este mismo número es que le llega al DHCPv6 Server
Del lado del cliente:
Depende de tu OS puedes hacer:
c:\ipconfig
o
#ifconfig
¿Si hay más de una interfaz del lado del cliente?
En el ejemplo anterior el Cisco DHCPv6 Cliente está recibiendo un prefijo /56, esto quiere decir que tenemos hasta 8 redes /64 para crear. Hasta el momento solo hemos utilizado una en la f0/0.
De manera de ejemplo vamos a crear otras redes en las interfaces loopback0 y looback1 del router del lado del cliente.
interface Loopback0
ipv6 address IP-FROM-DHCPv6-SERVER ::1:0:0:0:1/64
end
interface Loopback1
ipv6 address IP-FROM-DHCPv6-SERVER ::2:0:0:0:1/64
end
La manera de construir los pseudo IPs (pe. ::1:0:0:0:1/64) colocados en la interfaz es la siguiente:
Imaginamos el prefijo recibido por DHCPv6, sabemos que es un /56. Lo que estamos haciendo es completando el resto del IP.
Es decir: recibimos por DHCPv6 2001:db8:ABCD::/56. Al decirle a la loopback 1 ::1:0:0:0:1/64 construimos: 2001:db8:ABCD::1:0:0:0:1/64 (Prefijo recibido + la configuracion de la interfaz)
Vamos a revisar que IPs tienen entonces L0 y L1:
R1#sh ipv6 int l0
Loopback0 is up, line protocol is up
Global unicast address(es):
2001:DB8:ABCD:1::1, subnet is 2001:DB8:ABCD:1::/64 [CAL/PRE]
R1#sh ipv6 int l1
Loopback1 is up, line protocol is up
Global unicast address(es):
2001:DB8:ABCD:2::1, subnet is 2001:DB8:ABCD:2::/64 [CAL/PRE]
Proximos pasos
- Falta la parte de routing, hay muchas maneras de hacerlo, indiscutiblemente la intención es hacerlo con un protocolo de enrutamiento dinámico
Para más información:
- https://tools.ietf.org/html/rfc6355
- http://www.cisco.com/c/en/us/support/docs/ip/ip-version-6-ipv6/113141-DHCPv6-00.html
- http://blog.acostasite.com/2014/04/instalar-isc-dhcp-43-en-linux-ubuntu.html
- http://blog.acostasite.com/2014/04/solucion-tres-errores-cuando-queremos.html
- http://blog.acostasite.com/2015/11/configurando-una-red-con-dhcpv6-server.html