вторник, 20 мая 2014 г.

GRE over IPsec




Задача: Необходимо поднять GRE туннель между офисами R5 и R4 и зашифровать его с помощью IPSec (т.н. GRE over IPSec ). Через GRE туннель должна работать маршрутизация типа EIGRP обеспечивая роутинг между локальными сетями офисов через GRE туннель.

Условимся, что EIGRP  AS1 у нас имитирует интернет. Вначале настраиваем IP адреса на интерфейсах и EIGRP AS1 маршрутизацию, чтобы приступить к конфигурированию тоннеля.

1) Настраиваем дефолтный маршрут в сторону "провайдера"
R5(config)#ip route 0.0.0.0 0.0.0.0 211.181.24.51
R4(config)#ip route 0.0.0.0 0.0.0.0 211.181.25.112


2) Конфигурируем GRE туннель
-----------------------------
R5(config)#interface Tunnel0
*Mar  1 00:01:47.799: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel0, changed state to down
R5(config-if)#ip address 10.0.100.1 255.255.255.0
R5(config-if)#tunnel source fastEthernet 0/0
R5(config-if)#tunnel destination 211.181.25.221
R5(config-if)#
*Mar  1 00:02:48.707: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel0, changed state to up
R5(config-if)#exit
-----------------------------

R4(config)#int Tunnel0
*Mar  1 00:03:24.595: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel0, changed state to down
R4(config-if)#ip address 10.0.100.2 255.255.255.0
R4(config-if)#tunnel source fastEthernet 0/0
R4(config-if)#tunnel destination 211.181.24.15
R4(config-if)#
*Mar  1 00:04:11.403: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel0, changed state to up
R4(config-if)#exit

-----------------------------
Пингуем и проверяем, что маршрутизация не хромает и нигде не ошиблись в базовой настройке 
R4(config)#do ping 10.0.100.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.100.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 20/38/68 ms
R4(config)#



3) Расписываем маршрутизацию EIGRP AS2 на LAN и Туннель
-----------------------------
R5(config)#router eigrp 2
R5(config-router)#no au
R5(config-router)#no auto-summary
R5(config-router)#net
R5(config-router)#network 10.0.100.1 0.0.0.255
R5(config-router)#net
R5(config-router)#network 10.0.1.254 0.0.0.255
R5(config-router)#exit
R5(config)#
*Mar  1 00:20:28.251: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 2: Neighbor 10.0.100.2 (Tunnel0) is up: new adjacency
R5(config)#

-----------------------------
R4(config)#router eigrp 2
R4(config-router)#no au
R4(config-router)#no auto-summary
R4(config-router)#net
R4(config-router)#network 10.0.100.2 0.0.0.255
R4(config-router)#net
R4(config-router)#network
*Mar  1 00:20:18.731: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 2: Neighbor 10.0.100.1 (Tunnel0) is up: new adjacency
R4(config-router)#network 10.0.2.254 0.0.0.255
R4(config-router)#exit


-----------------------------
Проверяем что все настроено правильно и маршрутизация работает

R4(config)#do sh ip ro
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is 211.181.25.112 to network 0.0.0.0

C    211.181.25.0/24 is directly connected, FastEthernet0/0
D    211.181.24.0/24 [90/30720] via 211.181.25.112, 00:20:39, FastEthernet0/0
     10.0.0.0/24 is subnetted, 3 subnets
C       10.0.2.0 is directly connected, FastEthernet0/1
D       10.0.1.0 [90/297246976] via 10.0.100.1, 00:00:30, Tunnel0
C       10.0.100.0 is directly connected, Tunnel0
S*   0.0.0.0/0 [1/0] via 211.181.25.112
R4(config)#


4) Сконфигурируем ISAKMP   
а) Политики  
-----------------------------
R5(config)#crypto isakmp enable
R5(config)#crypto isakmp policy 10
R5(config-isakmp)#authentication pre-share
R5(config-isakmp)#encryption des
R5(config-isakmp)#group 2
R5(config-isakmp)#hash sha
R5(config-isakmp)#lifetime 86400
R5(config-isakmp)#exit

-----------------------------
R4(config)#crypto isakmp enable
R4(config)#crypto isakmp policy 10
R4(config-isakmp)#authentication pre-share
R4(config-isakmp)#encryption des
R4(config-isakmp)#group 2
R4(config-isakmp)#hash sha
R4(config-isakmp)#lifetime 86400
R4(config-isakmp)#exit


б) ключи
-----------------------------
R5(config)#crypto isakmp key 0 cisco111 address 211.181.25.221
-----------------------------
R4(config)#crypto isakmp key 0 cisco111 address 211.181.24.15
-----------------------------

5) Задаём трансформу ( вид шифрования трафика в туннеле )

R5(config)#crypto ipsec transform-set CryptoTransformTunnel esp-aes 128
R5(cfg-crypto-trans)#exit

-----------------------------  
R4(config)#crypto ipsec transform-set CryptoTransformTunnel esp-aes 128
R4(cfg-crypto-trans)#exit
 

6) Задаём ACL (карту совпадения) согласно которому будет шифроваться трафик 
-----------------------------
R5(config)#access-list 101 permit gre host 211.181.24.15 host 211.181.25.221
-----------------------------
R4(config)#access-list 101 permit gre host 211.181.25.221 host 211.181.24.15

7) Создаём Crypto-Map и применяем на интерфейс 
-----------------------------
R5(config)#crypto map MapOffice 5 ipsec-isakmp
% NOTE: This new crypto map will remain disabled until a peer
        and a valid access list have been configured.
R5(config-crypto-map)#match address 101
R5(config-crypto-map)#set peer 211.181.25.221
R5(config-crypto-map)#set transform-set CryptoTransformTunnel
R5(config-crypto-map)#set pfs group1
R5(config-crypto-map)#set security-association lifetime seconds 86400
R5(config-crypto-map)#exit
R5(config)#int fa 0/0
R5(config-if)#crypt
R5(config-if)#crypto map MapOffice
R5(config-if)#

-----------------------------
ISAKMP включился -- настроен потенциально верно
*Mar  1 07:55:24.074: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON
R5(config-if)#

-----------------------------
Регистрация события -- получен не IPSec
*Mar  1 07:55:25.158: %CRYPTO-4-RECVD_PKT_NOT_IPSEC: Rec'd packet not an IPSEC packet.
        (ip) vrf/dest_addr= /211.181.24.15, src_addr= 211.181.25.221, prot= 47


R5(config-if)#
-----------------------------
GRE туннель опущен из-за несовместимости IPSec на концах туннеля

*Mar  1 07:55:35.226: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 2: Neighbor 10.0.100.2 (Tunnel0) is down: holding time expired
R5(config-if)#exit


R5(config)#do ping 10.0.100.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.100.2, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
R5(config-if)#
 

*Mar  1 07:56:29.770: %CRYPTO-4-RECVD_PKT_NOT_IPSEC: Rec'd packet not an IPSEC packet.
        (ip) vrf/dest_addr= /211.181.24.15, src_addr= 211.181.25.221, prot= 47
R5(config-if)#

 -----------------------------

Теперь настраиваем IPSec с другой стороны
Прогнозируемый результат: 
-- установление IPSec туннеля 
-- повторное автоматическое поднятие GRE туннеля теперь с IPSec шифрацией трафика
-- повторное установление EIGRP соседства и возобновление маршрутизации



Как и ожидалось туннель GRE опустился как показано выше с момента как был включен IPSec на другой стороне
*Mar  1 07:55:29.374: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 2: Neighbor 10.0.100.1 (Tunnel0) is down: holding time expired

R4(config)#crypto map MapOffice 5 ipsec-isakmp
% NOTE: This new crypto map will remain disabled until a peer
        and a valid access list have been configured.
R4(config-crypto-map)#match address 101
R4(config-crypto-map)#set peer 211.181.24.15
R4(config-crypto-map)#set transform-set CryptoTransformTunnel
R4(config-crypto-map)#set pfs group1
R4(config-crypto-map)#set security-association lifetime seconds 86400
R4(config-crypto-map)#exit
 

R4(config)#int fa 0/0
R4(config-if)#cryp
R4(config-if)#crypto map MapOffice
R4(config-if)#
*Mar  1 08:20:26.289: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON

R4(config-if)#

 -----------------------------
Прогнозируемое поднятие туннеля GRE и возобновление соседства
*Mar  1 08:20:27.573: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 2: Neighbor 10.0.100.1 (Tunnel0) is up: new adjacency
R4(config-if)#


 -----------------------------
Проверка пинга и прохождения пакетов через туннель
R4#ping 10.0.100.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.100.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 24/68/120 ms
 

R4#show crypto ipsec sa

interface: FastEthernet0/0
    Crypto map tag: MapOffice, local addr 211.181.25.221

   protected vrf: (none)
   local  ident (addr/mask/prot/port): (211.181.25.221/255.255.255.255/47/0)
   remote ident (addr/mask/prot/port): (211.181.24.15/255.255.255.255/47/0)
   current_peer 211.181.24.15 port 500
     PERMIT, flags={origin_is_acl,}
    #pkts encaps: 141, #pkts encrypt: 141, #pkts digest: 141
    #pkts decaps: 148, #pkts decrypt: 148, #pkts verify: 148

    #pkts compressed: 0, #pkts decompressed: 0
    #pkts not compressed: 0, #pkts compr. failed: 0
    #pkts not decompressed: 0, #pkts decompress failed: 0
    #send errors 1, #recv errors 0


 -----------------------------
Проверка роутинга
R4#sh ip ro
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is 211.181.25.112 to network 0.0.0.0

C    211.181.25.0/24 is directly connected, FastEthernet0/0
D    211.181.24.0/24 [90/30720] via 211.181.25.112, 08:30:31, FastEthernet0/0
     10.0.0.0/24 is subnetted, 3 subnets
C       10.0.2.0 is directly connected, FastEthernet0/1
D       10.0.1.0 [90/297246976] via 10.0.100.1, 00:10:13, Tunnel0
C       10.0.100.0 is directly connected, Tunnel0
S*   0.0.0.0/0 [1/0] via 211.181.25.112
R4#


8) Убедиться что трафик идущий через тоннель шифрован

а) Убедиться что данные зашифрованы IPSec
Подключить Wireshark на интерфейс fa0/0 R5 и начать обмен данными между хостами (скачивать файл например). Сразу заметно, что данные только в зашифрованном виде (здесь был пущен банальный пинг по туннелю)

б) Убедиться, что данные идут по GRE туннелю (хотя это очевидно из построенной маршрутизации, проверить лишним не будет)

  -----------------------------
 Даём пинг с хоста xp_http_ftp_cisco(10.0.1.2) на хост xp_http_ftp_cisco1(10.0.1.2)

admin>ping 10.0.2.2
Обмен пакетами с 10.0.2.2 по 32 байт:
Ответ от 10.0.2.2: число байт=32 время=136мс TTL=126
Ответ от 10.0.2.2: число байт=32 время=145мс TTL=126
Ответ от 10.0.2.2: число байт=32 время=119мс TTL=126
Ответ от 10.0.2.2: число байт=32 время=98мс TTL=126


 -----------------------------
Теперь опускаем GRE туннель
R4(config)#int Tunnel 0
R4(config-if)#sh
R4(config-if)#
*Mar  1 08:38:45.365: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 2: Neighbor 10.0.100.1 (Tunnel0) is down: interface down
R4(config-if)#
*Mar  1 08:38:47.181: %LINK-5-CHANGED: Interface Tunnel0, changed state to administratively down
*Mar  1 08:38:48.181: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel0, changed state to down
R4(config-if)#



 -----------------------------
И повторяем пинг
admin>ping 10.0.2.2

Обмен пакетами с 10.0.2.2 по 32 байт:

Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.



Настройка и проверка завершены. Поставленная задача достигнута.

Комментариев нет:

Отправить комментарий