среда, 29 июня 2011 г.

GRE over IPSec

Здравствуйте.
Очень часто возникает задача связать два офиса. Одним из способов является настройка GRE туннелей. Коротко читаем здесь.

СТЕНД
Соберем стенд на основе GNS3. Добавим три маршрутизатора типа c2691 и облако.
Как собирать стенд в GNS можно глянуть здесь в начале статьи.
Для данной схемы маршрутизатор R1 будет маршрутизатором клиента.R2 некий маршрутизатор провайдера.R3 маршрутизатор удаленного офиса.
Настроим наши маршрутизаторы.

НАСТРОЙКА МАРШРУТИЗАТОРА 

Запускаем консоль.

Входим в привилегированный режим.
R1#enable

Входим в режим конфигурирования терминала.
R1#configure terminal

Входим на интерфейс к которому подключено "облако".
R1(config)#interface fastEthernet 0/1

Присваиваем IP адрес интерфейсу. 
R1(config-if)#ip address 10.1.0.60 255.255.255.0
(В данном случае это просто свободный адрес. он может быть любым.)


Включаем его.
R1(config-if)#no shutdown


Сообщение о поднятии интерфейса.

*Mar  1 00:09:18.955: %LINK-3-UPDOWN: Interface FastEthernet0/1, changed state to up
*Mar  1 00:09:19.955: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to up


Выходим из настройки интерфейса.
R1(config-if)#exit

Повторяем для другого интерфейса


Входим на интерфейс.
R1(config)#interface fastEthernet 0/0

Присваиваем IP адрес интерфейсу. 
R1(config-if)#ip address 192.168.30.1 255.255.255.252


Включаем его.
R1(config-if)#no shutdown


Сообщение о поднятии интерфейса.

*Mar  1 00:10:14.263: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
*Mar  1 00:10:15.263: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up

Выходим из настройки интерфейса.
R1(config-if)#exit

Аналогично настроим R2.
Адрес интерфейса fa 0/0 будет 192.168.30.2 с маской 255.255.255.252. Адрес интерфейса fa 0/1 будет 192.168.31.1  с маской 255.255.255.252.

R3 будет иметь следующие адреса интерфейсов.
fa 0/1 соответственно 192.168.31.2 маска 255.255.255.252
fa 0/0 адрес 20.20.20.1 маска 255.255.255.0


Для того чтобы наш компьютер мог "достучатся" до удаленного офиса. Настроим статические маршруты на роутерах.


На R1 в режиме конфигурации вводим.
R1(config)#ip route 192.168.31.0 255.255.255.252 fastEthernet 0/0


где  192.168.31.0 255.255.255.252 - подсеть к которой будем обращаться.
fastEthernet 0/0 - направление в котором будем искать искомую подсеть. В данном случае это выходной интерфейс нашего маршрутизатора. Возможен вариант и с адресом следующего маршрутизатора.


На R3 вводим следующее.

R3(config)#ip route 192.168.30.0 255.255.255.252 fastEthernet 0/1
Теперь маршрутизатор R1 видит R3.
Для подтверждения введем в привилегированном режиме.

R1#ping 192.168.31.2


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


Как видно связь есть хотя первые пакеты и потерялись.


Сделаем тоже с маршрутизатора R3, но из режима конфигурации терминала с помощью команды do


R3(config)#do ping 192.168.30.1


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

Команда do позволяет запускать команды не доступные в режиме конфигурации терминала.
 Командой traceroute проследим прохождение пакетов.

R1#traceroute 192.168.31.2


Type escape sequence to abort.
Tracing the route to 192.168.31.2


  1 192.168.30.2 40 msec 44 msec 28 msec
  2 192.168.31.2 44 msec *  92 msec
Как видно пакеты проходят через R2 (192.168.30.2)

Теперь когда наши маршрутизаторы через интернет "видят" друг друга настроим собственно туннель.
В режиме конфигурации терминала введем команды.


Для начала активируем интерфейс туннеля.
R1(config)#interface tunnel 0


Присвоим ip адрес нашему интерфейсу.
R1(config-if)#ip address 10.10.10.1 255.255.255.252


Введем адрес назначения туннеля, т.е. адрес маршрутизатора до которого будем строить туннель.
R1(config-if)#tunnel destination 192.168.31.2


Введем интерфейс с которого начнется туннель.
R1(config-if)#tunnel source fastEthernet 0/0 

Сообщение о поднятии туннеля.
*Mar  1 03:28:07.987: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel0, 
changed state to up


Проделаем те же действия  на маршрутизаторе удаленного офиса R3.

Для начала активируем интерфейс туннеля.
R1(config)#interface tunnel 0

Присвоим ip адрес нашему интерфейсу.
R1(config-if)#ip address 10.10.10.2 255.255.255.252

Укажем адрес назначения
R1(config-if)#tunnel destination 192.168.31.2

Введем интерфейс с которого начнется туннель.
R1(config-if)#tunnel source fastEthernet 0/1 

Сообщение о построении туннеля.

*Mar  1 03:32:43.187: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel0, changed state to up

Для того что бы наши роутеры использовали этот туннель надо настроить маршрутизацию.
Так как у нас маршрутизаторы из семейства cisco будем использовать протокол eigrp.
Познакомится с ним можно здесь.
   
Войдем в режим конфигурирования протокола маршрутизации eigrp.
R1(config)#router eigrp 1
где цифра указывает на номер автономной системы. В более крупных сетях могут существовать несколько автономных систем.

Укажем под сети  которые присоединены к нашему маршрутизатору.

R1(config-router)#network 10.10.10.0 0.0.0.3
R1(config-router)#network 10.1.0.0 0.0.0.255

Здесь вместо маски под сети указывается wild card bits, которое является числом ip адресов под сети, включая broadcast.  

Для того чтобы трафик ходил по туннелю укажем только под сеть туннеля и локальную под сеть.

Аналогично проделаем для маршрутизатора R3.
R3(config)#router eigrp 1
R3(config-router)#network 10.10.10.0 0.0.0.3

R3(config-router)#network 20.20.20.0 0.0.0.255

При нахождении единой сети для маршрутизаторов использующих протокол eigrp выдаются сообщения о соседе(neighbor).
Пример сообщений показан ниже.

На R1.
*Mar  1 18:23:39.647: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.10.10.2 (Tunnel0) is up: new adjacency


На R3.
 Internet Security Association and Key Management Protocol (ISAKMP) policy Internet Security Association and Key Management Protocol (ISAKMP) policy
*Mar  1 18:23:38.499: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.10.10.1 (Tunnel0) is up: new adjacency


Теперь когда поднят туннель и настроена маршрутизация локальные сети наших офисов могут "видеть" друг друга.


Для примера выполним команду ping.
R1#ping 20.20.20.1


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


Команда traceroute подтверждает что трафик ходит именно по туннелю.
R1#traceroute 20.20.20.1


Type escape sequence to abort.
Tracing the route to 20.20.20.1


  1 10.10.10.2 128 msec *  88 msec


Теперь когда связь есть надо сделать её безопасной.
Для начала настроим листы доступа(access-list).
Разрешим трафик по gre протоколу с адреса 192.168.30.1 на адрес 192.168.31.2, т.е разрешим стоить наши gre туннели между только нашими маршрутизаторами. По умолчанию последним правилом является запретить все. Так что то что не не разрешено явно, то запрещено.   
Для R1.



R1(config)#access-list 100 permit gre host 192.168.30.1 host 192.168.31.2

Для R3.
R3(config)#access-list 110 permit gre host 192.168.31.2 host 192.168.30.1



Теперь настроим шифрование канала.

Создадим политику.

R1(config)#crypto isakmp policy 1

Укажем тип аутентификации.
R1(config-isakmp)#authentication pre-share


Выйдем из настройки политики и укажем ключ для аутентификации.
R1(config)#crypto isakmp key 0 cisco address 0.0.0.0

Введем типы шифрования 
R1(config)#crypto ipsec transform-set cisco esp-aes 256 esp-md5-hmac

Опишем режим.
R1(cfg-crypto-trans)#mode transport
 

Аналогично сделаем и для R3.

Теперь создадим crypto map на R1 с именем cisco,который позже применим к интерфейсу.
R1(config)#crypto map cisco 10 ipsec-isakmp
При создании crypto map выпадает сообщение.
% NOTE: This new crypto map will remain disabled until a peer

 
        and a valid access list have been configured.
Которое говорит о необходимости настройки адреса и листа доступа.
Укажем адрес.
R1(config-crypto-map)#set peer 192.168.31.2

Укажем типы шифрования.
R1(config-crypto-map)#set transform-set cisco

И последним шагом указываем наш лист доступа.
R1(config-crypto-map)#match address 100

Создадим на R3
R3(config)#crypto map cisco 10 ipsec-isakmp
R3(config-crypto-map)#set peer 192.168.30.1
R3(config-crypto-map)#set transform-set cisco
R3(config-crypto-map)#match address 110

Применим данные crypto map к интерфейсам.

R1(config)#interface fastEthernet 0/0
R1(config-if)#crypto map cisco

Сообщение об активации crypto.
*Mar  1 21:39:19.010: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON


И получаем предупреждение.
*Mar  1 21:39:22.334: %CRYPTO-4-RECVD_PKT_NOT_IPSEC: Rec'd packet not an IPSEC packet.
        (ip) vrf/dest_addr= /192.168.30.1, src_addr= 192.168.31.2, prot= 47

А также о том что eigrp тоже перестал работать.
*Mar  1 21:39:32.674: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.10.10.2 (Tunnel0) is down: holding time expired

Применим crypto map на R3
R3(config-if)#crypto map cisco
 

Сообщение об активации crypto.
*Mar  1 21:45:58.954: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON

И о восстановлении туннеля и маршрутизации.
*Mar  1 21:46:07.978: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.10.10.1 (Tunnel0) is up: new adjacency

Сообственно все!

Основа для данной статьи взята здесь.

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

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