ѕодписывайтесь на наш YouTube - канал :)

ћерион Ќетворкс

8 минут чтени€

¬сем привет! —егодн€ в статье мы расскажем про настройку Point-to-Point GRE VPN туннелей на оборудовании Cisco и о том, как сделать их защищенными при помощи IPsec. Generic Routing Encapsulation (GRE) - это протокол туннелировани€, разработанный компанией Cisco, который позвол€ет инкапсулировать широкий спектр протоколов сетевого уровн€ в point-to-point каналах.

“уннель GRE используетс€, когда пакеты должны быть отправлены из одной сети в другую через »нтернет или незащищенную сеть. ¬ GRE виртуальный туннель создаетс€ между двум€ конечными точками (маршрутизаторами Cisco), а пакеты отправл€ютс€ через туннель GRE.

¬ажно отметить, что пакеты, проход€щие внутри туннел€ GRE, не шифруютс€, поскольку GRE не шифрует туннель, а инкапсулирует его с заголовком GRE. ≈сли требуетс€ защита данных, IPSec должен быть настроен дл€ обеспечени€ конфиденциальности данных - тогда GRE-туннель преобразуетс€ в безопасный VPN-туннель GRE.

Ќа приведенной ниже схеме показана процедура инкапсул€ции простого незащищенного пакета GRE, проход€щего через маршрутизатор и вход€щего в туннельный интерфейс:

 ак работает GRE

’от€ многие могут подумать, что туннель GRE IPSec между двум€ маршрутизаторами похож на VPN-соединение IPSec между сайтами, это не так. ќсновное отличие состоит в том, что туннели GRE позвол€ют multicast пакетам проходить через туннель, тогда как IPSec VPN не поддерживает multicast пакеты.

¬ больших сет€х, где необходимы протоколы маршрутизации, такие как OSPF, EIGRP, туннели GRE - ваш лучший выбор. ѕо этой причине, а также из-за того, что туннели GRE гораздо проще в настройке, инженеры предпочитают использовать GRE, а не IPSec VPN.

¬ этой статье объ€сн€етс€, как создавать простые незащищенные (unprotected) и безопасные (IPSec encrypted) туннели GRE между конечными точками. ћы объ€сним все необходимые шаги дл€ создани€ и проверки туннел€ GRE (незащищенного и защищенного) и настройки маршрутизации между двум€ сет€ми.


—оздание Cisco GRE туннел€

—хема работы GRE на Cisco

“уннель GRE использует интерфейс Ђтуннельї - логический интерфейс, настроенный на маршрутизаторе с IP-адресом, где пакеты инкапсулируютс€ и декапсулируютс€ при входе или выходе из туннел€ GRE.

ѕервым шагом €вл€етс€ создание нашего туннельного интерфейса на R1:

R1(config)# interface Tunnel0
R1(config-if)# ip address 172.16.0.1 255.255.255.0
R1(config-if)# ip mtu 1400
R1(config-if)# ip tcp adjust-mss 1360
R1(config-if)# tunnel source 1.1.1.10
R1(config-if)# tunnel destination 2.2.2.10

¬се туннельные интерфейсы участвующих маршрутизаторов всегда должны быть настроены с IP-адресом, который не используетс€ где-либо еще в сети.  аждому туннельному интерфейсу назначаетс€ IP-адрес в той же сети, что и другим туннельным интерфейсам.

¬ нашем примере оба туннельных интерфейса €вл€ютс€ частью сети 172.16.0.0/24.

ѕоскольку GRE €вл€етс€ протоколом инкапсул€ции, мы устанавливаем максимальную единицу передачи (MTU - Maximum Transfer Unit) до 1400 байт, а максимальный размер сегмента (MSS - Maximum Segment Size) - до 1360 байт. ѕоскольку большинство транспортных MTU имеют размер 1500 байт и у нас есть дополнительные издержки из-за GRE, мы должны уменьшить MTU дл€ учета дополнительных служебных данных. ”становка 1400 €вл€етс€ обычной практикой и гарантирует, что ненужна€ фрагментаци€ пакетов будет сведена к минимуму.

¬ заключение мы определ€ем туннельный источник, который €вл€етс€ публичным IP-адресом R1, и пункт назначени€ - публичный IP-адрес R2.

 ак только мы завершим настройку R1, маршрутизатор подтвердит создание туннел€ и сообщит о его состо€нии:

R1#
*May 21 16:33:27.321: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel0, changed state to up

ѕоскольку интерфейс Tunnel 0 €вл€етс€ логическим интерфейсом, он останетс€ включенным, даже если туннель GRE не настроен или не подключен на другом конце.

ƒалее мы должны создать интерфейс Tunnel 0 на R2:

R2(config)# interface Tunnel0
R2(config-if)# ip address 172.16.0.2 255.255.255.0
R2(config-if)# ip mtu 1400
R2(config-if)# ip tcp adjust-mss 1360
R2(config-if)# tunnel source 2.2.2.10
R2(config-if)# tunnel destination 1.1.1.10

»нтерфейс туннел€ R2 настроен с соответствующим IP-адресом источника и назначени€ туннел€.  ак и в случае с R1, маршрутизатор R2 сообщит нам, что интерфейс Tunnel0 работает:

R2#
*May 21 16:45:30.442: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel0, changed state to up

ћаршрутизаци€ сетей через туннель GRE

Ќа этом этапе обе конечные точки туннел€ готовы и могут Ђвидетьї друг друга. Echo icmp от одного конца подтвердит это:

R1# ping 172.16.0.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.0.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms
R1#

ќп€ть же, этот результат означает, что две конечные точки туннел€ могут видеть друг друга. –абочие станции в любой сети по-прежнему не смогут достичь другой стороны, если на каждой конечной точке не установлен статический маршрут:

R1(config)# ip route 192.168.2.0 255.255.255.0 172.16.0.2

Ќа R1 мы добавл€ем статический маршрут к удаленной сети 192.168.2.0/24 через 172.16.0.2, который €вл€етс€ другим концом нашего туннел€ GRE.  огда R1 получает пакет дл€ сети 192.168.2.0, он теперь знает, что следующим переходом €вл€етс€ 172.16.0.2, и поэтому отправит его через туннель.

“а же конфигураци€ должна быть повторена дл€ R2:

R2(config)# ip route 192.168.1.0 255.255.255.0 172.16.0.1

“еперь обе сети могут свободно общатьс€ друг с другом через туннель GRE.


«ащита туннел€ GRE с помощью IPSec

 ак упоминалось ранее, GRE €вл€етс€ протоколом инкапсул€ции и не выполн€ет шифрование. —оздание туннел€ GRE точка-точка без какого-либо шифровани€ чрезвычайно рискованно, поскольку конфиденциальные данные могут быть легко извлечены из туннел€ и просмотрены другими.

ƒл€ этого мы используем IPSec дл€ добавлени€ уровн€ шифровани€ и защиты туннел€ GRE. Ёто обеспечивает нам необходимое шифрование военного уровн€ и спокойствие. Ќаш пример ниже охватывает режим туннел€ GRE IPSec.


Ќастройка шифровани€ IPSec дл€ туннел€ GRE (GRE over IPSec)

Ўифрование IPSec включает в себ€ два этапа дл€ каждого маршрутизатора. Ёти шаги:

  • Ќастройка ISAKMP (ISAKMP Phase 1)
  • Ќастройка IPSec (ISAKMP Phase 2)

Ќастройка ISAKMP (ISAKMP Phase 1)

IKE существует только дл€ установлени€ SA (Security Association) дл€ IPsec. ѕрежде чем он сможет это сделать, IKE должен согласовать отношени€ SA (ISAKMP SA) с партнером.

ƒл€ начала, мы начнем работать над R1.

ѕервым шагом €вл€етс€ настройка политики ISAKMP Phase 1:

R1(config)# crypto isakmp policy 1
R1(config-isakmp)# encr 3des
R1(config-isakmp)# hash md5
R1(config-isakmp)# authentication pre-share
R1(config-isakmp)# group 2
R1(config-isakmp)# lifetime 86400

ѕриведенные выше команды определ€ют следующее (в указанном пор€дке):

  • 3DES - метод шифровани€, который будет использоватьс€ на этапе 1 Phase 1
  • MD5 - алгоритм хешировани€
  • Authentication pre-share - использование предварительного общего ключа в качестве метода проверки подлинности
  • Group 2 - группа ƒиффи-’еллмана, котора€ будет использоватьс€
  • 86400 - врем€ жизни ключа сеанса. ¬ыражаетс€ в килобайтах или в секундах. «начение установлено по умолчанию.

ƒалее мы собираемс€ определить Pre Shared Key (PSK) дл€ аутентификации с партнером R1, 2.2.2.10:

R1(config)# crypto isakmp key merionet address 2.2.2.10

PSK ключ партнера установлен на merionet. Ётот ключ будет использоватьс€ дл€ всех переговоров ISAKMP с партнером 2.2.2.10 (R2).


—оздание IPSec Transform (ISAKMP Phase 2 policy)

“еперь нам нужно создать набор преобразований, используемый дл€ защиты наших данных. ћы назвали это TS:

R1(config)# crypto ipsec transform-set TS esp-3des esp-md5-hmac
R1(cfg-crypto-trans)# mode transport

¬ышеуказанные команды определ€ют следующее:

  • SP-3DES - метод шифровани€
  • MD5 - алгоритм хешировани€
  • ”становите IPSec в транспортный режим.

Ќаконец, мы создаем профиль IPSec дл€ соединени€ ранее определенной конфигурации ISAKMP и IPSec. ћы назвали наш профиль IPSec protect-gre:

R1(config)# crypto ipsec profile protect-gre
R1(ipsec-profile)# set security-association lifetime seconds 86400
R1(ipsec-profile)# set transform-set TS

“еперь мы готовы применить шифрование IPSec к интерфейсу туннел€:

R1(config)# interface Tunnel 0
R1(config-if)# tunnel protection ipsec profile protect-gre

Ќу и наконец пришло врем€ применить ту же конфигурацию на R2:

R2(config)# crypto isakmp policy 1
R2(config-isakmp)# encr 3des
R2(config-isakmp)# hash md5
R2(config-isakmp)# authentication pre-share
R2(config-isakmp)# group 2
R2(config-isakmp)# lifetime 86400
 
R2(config)# crypto isakmp key merionet address 1.1.1.10
R2(config)# crypto ipsec transform-set TS esp-3des esp-md5-hmac
R2(cfg-crypto-trans)# mode transport

R2(config)# crypto ipsec profile protect-gre
R2(ipsec-profile)# set security-association lifetime seconds 86400
R2(ipsec-profile)# set transform-set TS

R2(config)# interface Tunnel 0
R2(config-if)# tunnel protection ipsec profile protect-gre

ѕроверка GRE over IPSec туннел€

Ќаконец, наш туннель был зашифрован с помощью IPSec, предоставл€€ нам столь необходимый уровень безопасности. „тобы проверить и проверить это, все, что требуетс€, это попинговать другой конец и заставить туннель VPN IPSec подойти и начать шифрование/дешифрование наших данных:

R1# ping 192.168.2.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.2.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/3/4 ms

»спользу€ команду show crypto session, мы можем быстро убедитьс€, что шифрование установлено и выполн€ет свою работу:

R1# show crypto session
Crypto session current status
Interface: Tunnel0
Session status: UP-ACTIVE
Peer: 2.2.2.10 port 500
IKE SA: local 1.1.1.10/500 remote 2.2.2.10/500 Active
IPSEC FLOW: permit 47 host 1.1.1.10 host 2.2.2.10
Active SAs: 2, origin: crypto map

ѕоздравл€ю! ћы только что успешно создали Point-to-point GRE over IPSec VPN туннель между двум€ маршрутизаторами Cisco.


ѕолезна ли ¬ам эта стать€?


Ёти статьи могут быть вам интересны: