LAN-2-LAN ipsec vpn gre

Заметка будет практического характера. Рассчитано на тех, кто уже знаком с общей теорией работы ipsec и примерами построения туннелей. Итак, построение статического туннеля. Все пакеты подлежащие шифрованию будут инкапсулироваться в gre туннель и  потом в ipsec .

1. Тунель

Адресация сети выглядит следующим образом.

Внутренняя сеть А: 192.168.1.0/24
Внутренняя сеть Б: 192.168.2.0/24

Внешний интерфейс А: 10.10.11.2/24
Внешний интерфейс Б: 10.10.10.2/24

Необходимо установить туннель между внешними интерфейсами маршрутизаторов, в данном случае 10.10.11.2 и 10.10.10.2.

Минимальные параметры настройки:

  • каждый туннель «привязывается» к конкретному физическому интерфейсу, в данном случае это FastEthernet 1/0.
  • поскольку это layer 3 соединения, необходима ip адресация. Для уменьшения путаницы с «лишними» адресами будем использовать адреса физических интерфейсов.
  • раз есть у туннеля начало, значит еть где-то и конец (Указание второго пира, также обязательный параметр).

Здесь приведена конфигурация только одной стороны туннеля, другая сторона конфигурируется идентично за исключением адреса пира.

! пример конфигурации gre туннеля
RouterA(config)# interface Tunnel10
RouterA(config-if)# tunnel source FastEthernet1/0
RouterA(config-if)# tunnel destination 10.10.10.2
RouterA(config-if)# ip unnumbered FastEthernet1/0

Туннель поднят, но по нему еще ничего не ходит. Сделаем рутинг для сетей 192.168.1.0/24 и 192.168.2.0/24, соответственно в сторону туннеля.

!рутинг в туннель
RouterA(config)# ip route 192.168.2.0 255.255.255.0 Tunnel10

Для рутера Б, нужно завернуть сеть 192.168.1.0/24. Внутренние сети находящиеся за рутерами стали видить друг друга.

!простейшая проверка — ping
RouterA#ping
Protocol [ip]:
Target IP address: 192.168.2.1
Repeat count [5]:
Datagram size [100]:
Timeout in seconds [2]:
Extended commands [n]: y
Source address or interface: 192.168.1.1
Type of service [0]:
Set DF bit in IP header? [no]:
Validate reply data? [no]:
Data pattern [0xABCD]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Sweep range of sizes [n]:
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.2.1, timeout is 2 seconds:
Packet sent with a source address of 192.168.1.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 32/61/104 ms

Пинг проходит успешно. Можно посмотреть, что внутри туннеля, для этого используется PIX с настроенным capture.

!sniff
pix# show cap anyin
10 packets captured
1: 16:01:56.004577 10.10.11.2 > 10.10.10.2: ip-proto-47, length 104
2: 16:01:56.024870 10.10.10.2 > 10.10.11.2: ip-proto-47, length 104
(skip)
9: 16:01:56.232715 10.10.11.2 > 10.10.10.2: ip-proto-47, length 104
10: 16:01:56.249163 10.10.10.2 > 10.10.11.2: ip-proto-47, length 104
10 packets shown

Туннель работает нормально. Протокол 47 стека IP  есть gre.

2. Шифрование

Нужно изменить crypto acl определяющий какой трафик подлежит шифрованию. Сниффер нам показал только gre пакеты между двумя пирами, шифровать будем их.

!crypto acl, они должны быть зеркальны с обоих сторон
RouterA(config)# access-list 150 permit gre host 10.10.11.2 host 10.10.10.2

isakmp, crypto map и прочее настраиваются совершенно идентично. Приведем кусок конфигурации рутера А.

!пример конфигурации
!
crypto isakmp policy 200
encr aes 256
authentication pre-share
group 2
lifetime 7200
crypto isakmp key sUpeRkEy address 10.10.10.2
!
crypto ipsec transform-set ts-aes-sha esp-aes 256 esp-sha-hmac
!
crypto map cr_outside 10 ipsec-isakmp
set peer 10.10.10.2
set transform-set ts-aes-sha
match address 110
!
interface Tunnel10
ip unnumbered FastEthernet1/0
tunnel source FastEthernet1/0
tunnel destination 10.10.10.2
!
interface FastEthernet1/0
ip address 10.10.11.2 255.255.255.0
crypto map cr_outside
!
ip route 192.168.2.0 255.255.255.0 Tunnel10
!
access-list 110 permit gre host 10.10.11.2 host 10.10.10.2
!

!Тестирование с помощью ping.
pix# show capture anyin
17 packets captured
1: 15:33:57.516788 10.10.11.2.500 > 10.10.10.2.500: udp 144
2: 15:33:57.741477 10.10.10.2.500 > 10.10.11.2.500: udp 104
3: 15:33:57.911284 10.10.11.2.500 > 10.10.10.2.500: udp 304
4: 15:33:58.126153 10.10.10.2.500 > 10.10.11.2.500: udp 304
5: 15:33:58.186025 10.10.11.2.500 > 10.10.10.2.500: udp 108
6: 15:33:58.206059 10.10.10.2.500 > 10.10.11.2.500: udp 76
7: 15:33:58.219852 10.10.11.2.500 > 10.10.10.2.500: udp 172
8: 15:33:58.259401 10.10.10.2.500 > 10.10.11.2.500: udp 172
9: 15:33:58.268388 10.10.11.2.500 > 10.10.10.2.500: udp 60
10: 15:33:59.395807 10.10.11.2 > 10.10.10.2: ip-proto-50, length 164
11: 15:33:59.444541 10.10.10.2 > 10.10.11.2: ip-proto-50, length 164
(skip)
17: 15:33:59.556703 10.10.10.2 > 10.10.11.2: ip-proto-50, length 164
17 packets shown

Конфигурация работает, трафик шифруется.
Первые 9 пакетов — обмен udp пакетами по 500 порту, isakmp при установлении sa. Дальше обмен пакетами протокола 50 стека IP, ipsec.

© shadow_alone

  • shad

    вот еще в догонку:
    вместо
    crypto map cr_outside 10 ipsec-isakmp
    set peer 10.10.10.2
    set transform-set ts-aes-sha
    match address 110
    и
    crypto map cr_outside на интерфейсе,
    можно использовать:
    crypto ipsec profile TUNNEL
    set transform-set ts-aes-sha
    и на интерфейс Tunnel10 повесить
    tunnel protection ipsec profile TUNNEL

    работает эдентично, даж если с одной стороны настройки сделаны как показано в посте, а с другой как здесь.