Foro en Español

Reply
Moderator

[Tutorial] ZTP y establecimiento automático de túneles en ArubaOS 8

Hola

 

Siguiendo con la serie sobre la arquitectura de Branch en AOS8, en este post vamos a bajar más al detalle de cómo funciona (y cómo se configura) toda la parte de túneles entre branch controllers y VPNCs (concentradores de túneles).

 

En primer lugar, ¿cómo hacemos la provisión automatizada?

Tal como se describe en el video que enlacé acerca de ZTP, el branch controller, en cuanto tiene conectividad, habla con el servicio de "Aruba Activate" para que éste le diga quien es su Mobility Master, y (opcionalmente) si tiene que llegar a él a través de un VPNC. A continuación un gráfico que explica cómo funciona este proceso:

ZTP-Process.png

 

Todo este proceso se traduce en que el branch controller configurará lo siguiente:

En caso de que llegue dirécto al MM:

masterip <ip/FQDN> ipsec-factory-cert master-mac-1 <mac-1> interface vlan 4094

En caso de que llegue a través de un VPNC (esto suele ocurrir cuando no queremos "exponer" el MM directamente a Internet):

masterip <ip/FQDN> vpn-ip <ip VPNC> ipsec-factory-cert vpn-mac-1 <mac-vpnc-1> (optional) vpn-mac-2 <mac-vpnc-2> interface vlan 4094

Nota: Para lanzar proceso de ZTP debemos usar el último puerto de cobre del controller, que va asociado automáticamente a la VLAN 4094.

 

Con esta configuración, el branch controller intentará levantar un túnel bien contra el MM o contra el VPNC. Por tanto, en el otro extremo tendremos que configurar uno u otro para confiar en el branch controller. Una vez más la config depende de si el branch va directo contra el MM o lo hace a través de un VPNC:

Si va directo contra el MM:

(ArubaMM-VA) ^*[mm] (config) #local-factory-cert local-mac <mac-branch controller>

Si va a través de un VPNC

(ArubaMM-VA) ^*[vpnc] (config) #vpn-peer peer-mac <MAC-Branch controller> cert-auth factory-cert

 Nota: Fijaos en el detalle de que he aplicado los comandos a nivel jerárquico. En el primer caso, he puesto la config en la carpeta MM (donde tengo todos los MM) y en el segundo lo he puesto en la carpeta /md/vpnc (donde tengo todos mis VPNC). Con esto me ahorro tener que escribir el mismo comando varias veces :)

 

Perfecto, ya tenemos el branch controller conectado y gestionado por el MM. ¿Cómo hacemos ahora para comunicar nuestra sede remota con el resto de la red?

 

En primer lugar, necesitaré levantar túneles contra un (o varios) controller que haga las veces de concentrador VPN. Si en los pasos anteriores hemos ido a través de un VPNC ya tendremos un túnel creado, pero si no es así tendremos que crearlo ahora. Para establecer túneles de datos lo haremos con el comando:

(ArubaMM-VA) ^*[branch] (config) #vpnip <ip vpnc> ipsec-factory-cert vpnc-mac-1 <mac-vpnc> interface vlan <vlan de salida, por defecto la 4094>

Una vez más, fijaos en el detalle de que estoy aplicando este comando en la carpeta donde tengo mis branch controllers. De esta forma se aplicará automaticamente a todos los controller que meta en esta carpeta.

 

Tal como ocurría en el paso anterior, tendremos que asegurarnos de que el VPNC confía en la MAC del branch controller (vpn-peer...).

 

Una vez tengamos los túneles levantados podremos ir al branch controller y veremos el nombre que éste les ha dado. Podemos hacerlo con un "show crypto-local ipsec-map" o en el propio "show ip route".  Aquí va un ejemplo de lo que deberíais ver:

(7008-LAB) [MDC] *#show ip route

Codes: C - connected, O - OSPF, R - RIP, S - static
       M - mgmt, U - route usable, * - candidate default, V - RAPNG VPN/Branch

Gateway of last resort is Imported from DHCP to network 0.0.0.0 at cost 10
Gateway of last resort is Imported from CELL to network 0.0.0.0 at cost 10
Gateway of last resort is Imported from PPPOE to network 0.0.0.0 at cost 10
Gateway of last resort is 172.18.172.1 to network 0.0.0.0 at cost 1
S*    0.0.0.0/0  [1/0] via 172.18.172.1*
S    10.106.0.32/32 [10/0] ipsec map default-vpnip-local-ipsecmap
C    10.127.32.2/32 is directly connected, VLAN3333
C    192.168.15.0/24 is directly connected, VLAN15
C    10.127.17.32/27 is directly connected, VLAN100
C    172.18.172.0/24 is directly connected, VLAN4094
C    10.127.3.2/32 is an ipsec map default-local-vpnip-data-ipsecmap-00:0b:86:b7:fc:3f
C    10.127.2.2/32 is an ipsec map default-local-vpnip-data-ipsecmap-00:1a:1e:03:72:a0
C    10.127.1.4/32 is an ipsec map default-vpnip-local-ipsecmap

En mi caso tengo 3 VPNC, uno de los cuales lo uso para llegar al MM. Como véis, me han aparecido automáticamente 4 rutas nuevas en mi tabla de rutas. 3 de ellas a las IP de los VPNC (que aparecen como directamente conectadas) y una al propio MM (esta aparece como estática porque llego a él a través de un VPNC). Os pongo un esquemita de mi maqueta para que os podáis hacer una idea más clara:
MM-based SD-WAN lab - simplified.png

 

Vale, ya tengo túneles IPSec por los que puedo encaminar el tráfico de datos. Vamos a enrutar el tráfico por los túneles. Para ello usaremos una combinación de rutas estáticas en los branch controllers (tendremos muy poquitas rutas) y aprendizaje dinámico en los VPNC.

 

En los branch controller, configuraremos algo de este estilo para mandar el tráfico por los túneles:

(ArubaMM-VA) ^*[branch] (config) #show configuration committed | include route
ip route 10.0.0.0 255.0.0.0 ipsec default-local-vpnip-data-ipsecmap-00:0b:86:b7:fc:3f 128
ip route 172.16.0.0 255.240.0.0 ipsec default-local-vpnip-data-ipsecmap-00:1a:1e:03:72:a0 10
ip route 10.0.0.0 255.0.0.0 ipsec default-local-vpnip-data-ipsecmap-00:1a:1e:03:72:a0 10
ip route 172.16.0.0 255.240.0.0 ipsec default-local-vpnip-data-ipsecmap-00:0b:86:b7:fc:3f 128

Como podéis ver, he puesto rútas estáticas apuntando a ambos túneles (los nombres son bastante feos, así que copiadlos del show ip route que acabamos de ver para evitar erratas), con distintos pesos en función de cuál quiero que sea mi camino principal. Una vez más, insisto en el detalle. Haced esto a nivel jerárquico (en mi caso en la carpeta de branch) para que el branch controller coja la config en cuanto hable con el MM.

 

Y configuraremos esto para anunciar las redes de la delegación:

(ArubaMM-VA) ^*[branch] (config) #show configuration committed | include route
... crypto-local isakmp route ipsec default-local-vpnip-data-ipsecmap-00:1a:1e:03:72:a0 vlan 20 crypto-local isakmp route ipsec default-local-vpnip-data-ipsecmap-00:0b:86:b7:fc:3f vlan 20
...

Con este comando, el branch controller anunciará la subred asociada a la vlan 20 como parte de la negociación del túnel ISAKMP. Por lo tanto, no necesitaremos complicarnos la vida con OSPF o similar a través del túnel. El VPNC aprederá estas rutas de forma automática.

Podemos comprobar esto yendo al VPNC y haciendo un "show ip route":

 

(POC-VPNC1-DATA) [MDC] #show ip route

Codes: C - connected, O - OSPF, R - RIP, S - static
       M - mgmt, U - route usable, * - candidate default, V - RAPNG VPN/Branch

Gateway of last resort is Imported from DHCP to network 0.0.0.0 at cost 10
Gateway of last resort is Imported from CELL to network 0.0.0.0 at cost 10
Gateway of last resort is Imported from PPPOE to network 0.0.0.0 at cost 10
Gateway of last resort is 10.127.2.1 to network 0.0.0.0 at cost 1
S*    0.0.0.0/0  [1/0] via 10.127.2.1*
O    10.127.3.0/24 [2/0] via 10.127.2.1*
S    10.127.17.32/27 [10/0] ipsec map default-vpnip-master-ipsecmap-20:4c:03:0a:65:30
C    10.127.2.0/24 is directly connected, VLAN1
C    10.106.0.32/32 is an ipsec map default-local-master-ipsecmap
C    10.127.32.2/32 is an ipsec map default-vpnip-master-ipsecmap-20:4c:03:0a:65:30

Perfecto, ya tengo los túneles levantados y la comunicación establecida a través de ellos. ¿Cómo conecto este entorno con el resto de mi red?

Será tan sencillo como redistribuir a OSPF las redes que he aprendido en la negociación de los túneles. Una vez más, aquí va un ejemplo:

!
interface vlan X
        ip address <ip> <netmask>
        ip ospf area a.b.c.d
!
!(optional)
        ip ospf authentication message-digest
        ip ospf message-digest-key XXXXXXXXXXXXXXXXXXXXXXXXXXXX
!
router ospf
router ospf area a.b.c.d
router ospf redistribute static <cost>

En mi caso he puesto distintos costes en los VPNC activo y de backup para evitar bucles de routing:

Detail-OSPF.png

Por último, podremos comprobar que todo esto está funcionando yendo a nuestro router de cabecera y viendo que las rutas que vienen de las branch se han aprendido por OSPF:

(UpstreamRouter) #show ip route

Codes: C - connected
       O - OSPF, O(IA) - OSPF inter area
       O(E1) - OSPF external type 1, O(E2) - OSPF external type 2
       O(N1) - OSPF NSSA type 1, O(N2) - OSPF NSSA type 2
       M - mgmt, S - static, * - candidate default
       D - DHCP

Gateway of last resort is 10.127.0.1 to network 0.0.0.0 at cost 0
S       * 0.0.0.0  /0 [0] via 10.127.0.1
...
O(E2)    10.127.17.0/27 [10] via 10.127.2.2
O(E2)    10.127.17.32/27 [10] via 10.127.2.2
...

Y con esto ya tendríamos todas nuestras branches comunicadas con el resto de la red. :) 

 

Iré añadiendo más cositas, pero con esto tenéis para ir arrancando. Como siempre, probadlo y poned por aquí vuestras dudas.

 

Un saludo y Feliz Año!

 

Samuel Pérez
ACMP, ACCP, ACDX#100

---

If I answerd your question, please click on "Accept as Solution".
If you find this post useful, give me kudos for it ;)
Search Airheads
cancel
Showing results for 
Search instead for 
Did you mean: