Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

Якорь
Настройка GRE-туннелей
Настройка GRE-туннелей
Настройка GRE-туннелей

GRE (англ. Generic Routing Encapsulation — общая инкапсуляция маршрутов) — протокол туннелирования сетевых пакетов. Его основное назначение — инкапсуляция пакетов сетевого уровня сетевой модели OSI в IP-пакеты. GRE может использоваться для организации VPN на 3 уровне модели OSI. В маршрутизаторе ESR и контроллере WLC реализованы статические неуправляемые GRE-туннели, то есть туннели создаются вручную путем конфигурирования на локальном и удаленном узлах. Параметры туннеля для каждой из сторон должны быть взаимосогласованными или переносимые данные не будут декапсулироваться партнером.

...

ШагОписаниеКомандаКлючи
1Сконфигурировать L3-интерфейс, от которого будет строиться GRE-туннель.

2Создать GRE-туннель и перейти в режим его конфигурирования.

esr(config)# tunnel gre <INDEX>

<INDEX> – идентификатор туннеля в диапазоне:

  • для ESR-10/12V(F)/14VF/15 – [1..10];
  • для ESR-20/21/30/100/200 – [1..250];
  • для ESR-1000/1200/
    1500/1511/1700/3100/3200 – [1..500].
3Указать экземпляр VRF, в котором будет работать данный GRE-туннель (не обязательно).

esr(config-gre )# ip vrf forwarding <VRF>

<VRF> – имя VRF, задается строкой до 31 символа.
4Указать описание конфигурируемого туннеля (не обязательно).

esr(config-gre)# description <DESCRIPTION>

<DESCRIPTION> – описание туннеля, задаётся строкой до 255 символов.
5Установить локальный IP-адрес для установки туннеля.

esr(config-gre)# local address <ADDR>

<ADDR> – IP-адрес локального шлюза, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255].

esr(config-gre)# local interface <IF>

<IF> – интерфейс, от IP-адреса которого устанавливается туннель.
6Установить удаленный IP-адрес для установки туннеля.

esr(config-gre)# remote address <ADDR>

<ADDR> – IP-адрес локального шлюза, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255].
7Указать режим инкапсуляции для GRE-туннеля.

esr(config-gre)# mode <MODE>

<MODE> – режим инкапсуляции для GRE-туннеля:

  • ip – инкапсуляция IP-пакетов в GRE;
  • ethernet – инкапсуляция Ethernet-фреймов в GRE.

Значение по умолчанию: ip

8Установить IP-адрес локальной стороны туннеля (только в режиме ip).

esr(config-gre)# ip address <ADDR/LEN>

<ADDR/LEN> – IP-адрес и префикс подсети задаётся в виде AAA.BBB.CCC.DDD/EE, где каждая часть AAA – DDD принимает значения [0..255] и EE принимает значения [1..32].

Можно указать до 8 IP-адресов перечислением через запятую.

Дополнительные функции IPv4-адресации см. в разделе Настройка IP-адресации.

9Назначить широковещательный домен для инкапсуляции в GRE-пакеты данного туннеля (только в режиме ethernet).

esr(config-gre)# bridge-group <BRIDGE-ID>

<BRIDGE-ID> – идентификационный номер моста, принимает значения в диапазоне:

  • для ESR-10/12V(F)/14VF/15 – [1..50];
  • для ESR-20/21/30/100/200 – [1..250];
  • для ESR-1000/1200/
    1500/1511/1700/3100/3200 – [1..500].
10Включить GRE-туннель в зону безопасности и настроить правила взаимодействия между зонами или отключить firewall (см. раздел Конфигурирование Firewall).

esr(config-gre)# security-zone<NAME>

<NAME> – имя зоны безопасности, задаётся строкой до 12 символов.

esr(config-gre)# ip firewall disable

          

11

Указать размер MTU (Maximum Transmition Unit) для туннеля (не обязательно).
MTU более 1500 будет активно только если применена команда "system jumbo-frames".

esr(config-gre)# mtu <MTU>

<MTU> – значение MTU, принимает значения в диапазоне:

  • для ESR-10/12V(F)/14VF/15 – [1280..9600];
  • для ESR-20/21/30 – [1280..9500];
  • для ESR-100/200/1000/
    1200/1500/1511/1700/3100/3200 – [1280..10000].

Значение по умолчанию: 1500.

12

Указать значение времени жизни TTL для туннельных пакетов (не обязательно).

esr(config-gre)# ttl <TTL>

<TTL> – значение TTL, принимает значения в диапазоне [1..255].

Значение по умолчанию: Наследуется от инкапсулируемого пакета.

13

Указать DSCP для использования в IP-заголовке инкапсулирующего пакета (не обязательно).

esr(config-gre)# dscp <DSCP>

<DSCP> – значение кода DSCP, принимает значения в диапазоне [0..63].

Значение по умолчанию: наследуется от инкапсулируемого пакета.

14

Разрешить передачу ключа (Key) в туннельном заголовке GRE (в соответствии с RFC 2890) и установить значение ключа. Настраивается только с обеих сторон туннеля.
(не обязательно).

esr(config-gre)# key <KEY>

<KEY> – значение KEY, принимает значения в диапазоне [1..2000000].

Значение по умолчанию: ключ не передаётся.

15

Включить вычисление контрольной суммы и занесение её в GRE-заголовок отправляемых пакетов. При этом на удаленной стороне необходимо включить проверку контрольной суммы.
(не обязательно)

esr(config-gre)# local checksum


16

Включить проверку наличия и соответствия значений контрольной суммы в заголовках принимаемых GRE-пакетов. При этом на удаленной стороне необходимо включить вычисление контрольной суммы
(не обязательно).

esr(config-gre)# remote checksum


17

Включить проверку доступности удаленного шлюза туннеля (не обязательно).

esr(config-gre)# keepalive enable


18

Изменить время ожидания keepalive пакетов от встречной стороны (не обязательно).

esr(config-gre)# keepalive timeout <TIME>

<TIME> – время в секундах, принимает значения в диапазоне [1..32767].

Значение по умолчанию: 10.

19

Изменить количество попыток проверки доступности удаленного шлюза туннеля (не обязательно).

esr(config-gre)# keepalive retries <VALUE>

<VALUE> – количество попыток, принимает значения в диапазоне [1..255].

Значение по умолчанию: 5.

20

Указать IP-адрес для работы механизма keepalive (обязательно в режиме ethernet).

esr(config-gre)# keepalive dst-address <ADDR>

<ADDR> – IP-адрес для проверки работоспособности GRE-туннеля.

21

Изменить интервал времени, за который усредняется статистика о нагрузке на туннеле (не обязательно).

esr(config-gre)# load-average <TIME>

<TIME> – интервал в секундах, принимает значения [5..150].

Значение по умолчанию: 5.

22

Включить отправку snmp-trap о включении/отключении туннеля.

esr(config-gre)# snmp init-trap


23

Включить механизм перезапроса IP-адресов по протоколу DHCP на указанных интерфейсах при отключении GRE-туннеля по keepalive (не обязательно).

esr(config-gre)# keepalive dhcp dependent-interface <IF>

<IF> – физический/логический интерфейс, на котором включено получение IP-адреса по DHCP.

24

Задать интервал времени между отключением GRE-туннеля и перезапросом IP-адреса на интерфейсе/интерфейсах, указанных командой keepalive dhcp dependent-interface (не обязательно).

esr(config-gre)# keepalive dhcp link-timeout <SEC>

<SEC> – интервал между отключением GRE-туннеля и перезапросом IP-адреса по DHCP на интерфейсах.

25Переопределить значение поля MSS (Maximum segment size) во входящих TCP-пакетах (не обязательно).

esr(config-gre)# ip tcp adjust-mss <MSS>

<MSS> – значение MSS, принимает значения в диапазоне [500..1460].

Значение по умолчанию: 1460.

26Включить запись статистики использования текущего туннеля (не обязательно).

esr(config-gre)# history statistics


27

Активировать туннель.

esr(config-gre)# enable


Также для GRE-туннеля возможно настроить:

...

Шаг

Описание

Команда

Ключи

1

Проверить доступность “внешних” IP-адресов, находящихся на физических интерфейсах.

 


2

Подготовить IPsec-туннели для работы совместно с динамическими GRE-туннелями.

 

См. раздел Настройка Policy-based IPsec VPN.

2Создать GRE-туннель и перейти в режим его конфигурирования.

esr(config)# tunnel gre <INDEX>

<INDEX> – идентификатор туннеля.

3

Перевести GRE-туннель в режим multipoint.

esr(config-gre )# multipoint


4

Установить открытый пароль для NHRP пакетов (не обязательно).

esr(config-gre)# ip nhrp authentication <WORD>

<WORD> – пароль в открытой форме, задается строкой [1..8] символов, может включать символы [0-9a-fA-F].

5

Указать время, в течение которого на NHS будет существовать запись о данном клиенте (не обязательно).

esr(config-gre)# ip nhrp holding-time <TIME>

<TIME> – время в секундах, в течение которого на сервере будет существовать запись о данном клиенте, принимает значения [1..65535].

Значение по умолчанию: 7200.

6

Задать «логический(туннельный)» адрес NHRP-сервера.

esr(config-gre)# ip nhrp nhs <ADDR> [ no-registration ]

<ADDR/LEN> – адрес, задаётся в виде AAA.BBB.CCC.DDD/EE, где каждая часть AAA – DDD принимает значения [0..255] и EE принимает значения [1..32];

  • no-registration – не регистрироваться на NHRP сервере.

7

Задать соответствие «внутреннего» туннельного адреса с «внешним» NBMA-адресом.

esr(config-gre)# ip nhrp map <ADDR> <ADDR>

<ADDR> – IP-адрес задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255].

8

Определить адресата мультикастного трафика.

esr(config-gre)# ip nhrp multicast { dynamic | nhs | <ADDR> }

  • dynamic – отправлять на все пиры, с которыми есть соединение;
  • nhs – отправлять на все статические сконфигурированные сервера;

<ADDR> – отправлять на специфически сконфигурированный адрес, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255].

9

Включить возможность отправки NHRP Traffic Indication пакетов. Выполняется на NHS (не обязательно).

esr(config-gre)# ip nhrp redirect


10

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

esr(config-gre)# ip nhrp shortcut


11

Привязать IPsec-VPN к mGRE-туннелю (не обязательно).

esr(config-gre)# ip nhrp ipsec <WORD> { static | dynamic }

<WORD> – имя VPN, задаётся строкой до 31 символа;

  • static – статическое соединение, применятся для связи с NHS;
  • dynamic – динамически устанавливающееся соединение, конфигурируется для связи между NHC.
12Включить передачу группового атрибута (не обязательно).esr(config-gre)# ip nhrp attribute group <WORD>
<WORD> – имя nhrp-группы, задаётся строкой [1..40] символов, не принимает символы [^#].

13

Включить работу протокола NHRP.

esr(config-gre)# ip nhrp enable


14

Организовать IP-связность посредством протокола динамической маршрутизации.



Остальные настройки – аналогичны настройкам статичного GRE-туннеля (см. раздел Настройка GRE-туннелей).

Пример настройки 1

Задача:

...

Spoke-2 внешний IP-адрес — 140.114.0.4.

Scroll Pagebreak
Параметры IPsec VPN:

IKE:

  • группа Диффи-Хэллмана: 2;
  • алгоритм шифрования: AES128;
  • алгоритм аутентификации: SHA1.

...

  1. Конфигурирование Hub.
    Создадим туннель GRE:

    Блок кода
    esr# configure
    esr(config)# tunnel gre 5

    Укажем IP-адрес интерфейса, граничащего с ISP:

    Блок кода
    esr(config-gre)# local address 150.115.0.5

    Зададим значение MTU:

    Блок кода
    esr(config-gre)# mtu 1416

    Установим значение ttl:

    Блок кода
    esr(config-gre)# ttl 16

    Зададим IP-адрес GRE-туннеля:

    Блок кода
    esr(config-gre)# ip address 10.10.0.5/24

    Переведём GRE-туннель в mutipoint режим для возможности соединения с несколькими точками:

    Блок кода
    esr(config-gre)# multipoint

    Перейдём к настройке NHRP. Настроим отправку мультикастовых рассылок в динамически узнаваемые адреса:

    Блок кода
    esr(config-gre)# ip nhrp multicast dynamic

    Scroll Pagebreak
    Произведём настройку протокола динамической маршрутизации для Hub. В нашем примере это будет BGP:

    Блок кода
    esr(config)# router bgp 65005
    esr(config-bgp)# address-family ipv4
    esr(config-bgp-af)# neighbor 10.10.0.8
    esr(config-bgp-neighbor)# remote-as 65008
    esr(config-bgp-neighbor)# enable
    esr(config-bgp-neighbor)# exit
    esr(config-bgp-af)# neighbor 10.10.0.4
    esr(config-bgp-neighbor)# remote-as 65004
    esr(config-bgp-neighbor)# enable
    esr(config-bgp-neighbor)# exit
    esr(config-bgp-af)# enable

    Произведём настройку IPsec для Hub:

    Блок кода
    esr(config)# security ike proposal IKEPROP
    esr(config-ike-proposal)# encryption algorithm aes128
    esr(config-ike-proposal)# dh-group 2
    esr(config-ike-proposal)# exit


    Блок кода
    esr(config)# security ike policy IKEPOLICY
    esr(config-ike-policy)# pre-shared-key ascii-text encrypted 8CB5107EA7005AFF
    esr(config-ike-policy)# proposal IKEPROP
    esr(config-ike-policy)# exit


    Блок кода
    esr(config)# security ike gateway IKEGW
    esr(config-ike-gw)# ike-policy IKEPOLICY
    esr(config-ike-gw)# local address 150.115.0.5
    esr(config-ike-gw)# local network 150.115.0.5/32 protocol gre
    esr(config-ike-gw)# remote address any
    esr(config-ike-gw)# remote network any
    esr(config-ike-gw)# mode policy-based
    esr(config-ike-gw)# exit


    Блок кода
    esr(config)# security ipsec proposal IPSECPROP
    esr(config-ipsec-proposal)# encryption algorithm aes128
    esr(config-ipsec-proposal)# exit


    Блок кода
    esr(config)# security ipsec policy IPSECPOLICY
    esr(config-ipsec-policy)# proposal IPSECPROP
    esr(config-ipsec-policy)# exit


    Блок кода
    esr(config)# security ipsec vpn IPSECVPN
    esr(config-ipsec-vpn)# mode ike
    esr(config-ipsec-vpn)# ike establish-tunnel route
    esr(config-ipsec-vpn)# ike gateway IKEGW
    esr(config-ipsec-vpn)# ike ipsec-policy IPSECPOLICY
    esr(config-ipsec-vpn)# enable

    Scroll Pagebreak
    Привяжем IPsec к GRE-туннелю, чтобы клиенты могли устанавливать шифрованное соединение:

    Блок кода
    esr(config-gre)# ip nhrp ipsec IPSECVPN dynamic

    Включим работу NHRP и сам туннель:

    Блок кода
    esr(config-gre)# ip nhrp enable
    esr(config-gre)# enable


  2. Конфигурирование Spoke

    Проведём стандартную настройку DMVPN на туннеле:

    Блок кода
    esr# configure
    esr(config-gre)# tunnel gre 8
    esr(config-gre)# mtu 1416
    esr(config-gre)# ttl 16
    esr(config-gre)# multipoint
    esr(config-gre)# local address 180.100.0.10
    esr(config-gre)# ip address 10.10.0.8/24

    Указываем сколько времени будет храниться запись о клиенте на сервере:

    Блок кода
    esr(config-gre)# ip nhrp holding-time 300

    Указываем туннельный адрес NHS:

    Блок кода
    esr(config-gre)# ip nhrp nhs 10.10.0.5/24

    Scroll Pagebreak
    Зададим соответствие туннельному адресу – реальный:

    Блок кода
    esr(config-gre)# ip nhrp map 10.10.0.5 150.115.0.5

    Настроим мультикастовую рассылку на NHRP-сервер:

    Блок кода
    esr(config)# ip nhrp multicast nhs

    Произведём настройку BGP для spoke:

    Блок кода
    esr(config)# router bgp 65008
    esr(config-bgp)# address-family ipv4
    esr(config-bgp-af)# neighbor 10.10.0.5
    esr(config-bgp-neighbor)# remote-as 65005
    esr(config-bgp-neighbor)# enable
    esr(config-bgp-neighbor)# exit
    esr(config-bgp-af)# enable

    Произведём настройку IPsec. При создании шлюза протокола IKE для NHS, укажем конкретные адреса назначения. A при создании шлюза IKE для NHC – адрес назначения будет any:

    Блок кода
    esr(config)# security ike proposal IKEPROP
    esr(config-ike-proposal)# encryption algorithm aes128
    esr(config-ike-proposal)# dh-group 2
    esr(config-ike-proposal)# exit


    Блок кода
    esr(config)# security ike policy IKEPOLICY
    esr(config-ike-policy)# pre-shared-key ascii-text encrypted 8CB5107EA7005AFF
    esr(config-ike-policy)# proposal IKEPROP
    esr(config-ike-policy)# exit


    Блок кода
    esr(config)# security ike gateway IKEGW_HUB
    esr(config-ike-gw)# ike-policy IKEPOLICY
    esr(config-ike-gw)# local address 180.100.0.10
    esr(config-ike-gw)# local network 180.100.0.10/32 protocol gre
    esr(config-ike-gw)# remote address 150.115.0.5
    esr(config-ike-gw)# remote network 150.115.0.5/32 protocol gre
    esr(config-ike-gw)# mode policy-based
    esr(config-ike-gw)# exit


    Блок кода
    esr(config)# security ike gateway IKEGW_SPOKE
    esr(config-ike-gw)# ike-policy IKEPOLICY
    esr(config-ike-gw)# local address 180.100.0.10
    esr(config-ike-gw)# local network 180.100.0.10/32 protocol gre
    esr(config-ike-gw)# remote address any
    esr(config-ike-gw)# remote network any
    esr(config-ike-gw)# mode policy-based
    esr(config-ike-gw)# exit


    Блок кода
    esr(config)# security ipsec proposal IPSECPROP
    esr(config-ipsec-proposal)# encryption algorithm aes128
    esr(config-ipsec-proposal)# exit


    Блок кода
    esr(config)# security ipsec policy IPSECPOLICY
    esr(config-ipsec-policy)# proposal IPSECPROP
    esr(config-ipsec-policy)# exit


    Блок кода
    esr(config)# security ipsec vpn IPSECVPN_HUB
    esr(config-ipsec-vpn)# mode ike
    esr(config-ipsec-vpn)# ike establish-tunnel route
    esr(config-ipsec-vpn)# ike gateway IKEGW_HUB
    esr(config-ipsec-vpn)# ike ipsec-policy IPSECPOLICY
    esr(config-ipsec-vpn)# enable


    Блок кода
    esr(config)# security ipsec vpn IPSECVPN_SPOKE
    esr(config-ipsec-vpn)# mode ike
    esr(config-ipsec-vpn)# ike establish-tunnel route
    esr(config-ipsec-vpn)# ike gateway IKEGW_SPOKE
    esr(config-ipsec-vpn)# ike ipsec-policy IPSECPOLICY
    esr(config-ipsec-vpn)# enable

    Scroll Pagebreak
    Привяжем IPsec к GRE-туннелю для возможности установления шифрованного соединения с сервером и с другими клиентами сети:

    Блок кода
    esr(config-gre)# ip nhrp ipsec IPSECVPN_HUB static
    esr(config-gre)# ip nhrp ipsec IPSECVPN_SPOKE dynamic

    Включим работу NHRP и сам туннель:

    Блок кода
    esr(config-gre)# ip nhrp enable
    esr(config-gre)# enable

    Состояние NHRP-записей можно посмотреть командой:

    Блок кода
    esr# show ip nhrp

    Очистить NHRP-записи можно командой:

    Блок кода
    esr# clear ip nhrp


...

  1. Конфигурирование HUB:
    Предварительно настроим протокол OSPF:

    Блок кода
    esr(config)# router ospf log-adjacency-changes
    esr(config)# router ospf 1
    esr(config-ospf)# router-id 77.77.77.77
    esr(config-ospf)# area 10.10.0.0
    esr(config-ospf-area)# enable
    esr(config-ospf-area)# exit
    esr(config-ospf)# enable
    esr(config-ospf)# exit

    Scroll Pagebreak
    Настроим интерфейс и определим принадлежность к зоне безопасности:

    Блок кода
    esr(config)# interface gigabitethernet 1/0/1
    esr(config-if-gi)# security-zone untrusted
    esr(config-if-gi)# ip address 150.115.0.5/30
    esr(config-if-gi)# exit

    Scroll Pagebreak
    Настроим GRE-туннель, определим принадлежность к зоне безопасности, настроим OSPF на GRE-туннеле, настроим NHRP и включим туннель и NHRP командой enable. Чтобы HUB стал DR, необходимо выставить максимальный приоритет:

    Блок кода
    esr(config)# tunnel gre 1
    esr(config-gre)# ttl 16
    esr(config-gre)# mtu 1416
    esr(config-gre)# multipoint
    esr(config-gre)# security-zone untrusted 
    esr(config-gre)# local address 150.115.0.5
    esr(config-gre)# ip address 10.10.0.1/28
    esr(config-gre)# ip ospf instance 1
    esr(config-gre)# ip ospf area 10.10.0.0
    esr(config-gre)# ip ospf priority 255
    esr(config-gre)# ip ospf
    esr(config-gre)# ip nhrp multicast dynamic
    esr(config-gre)# ip nhrp enable
    esr(config-gre)# enable
    esr(config-gre)# exit

    Создадим статические маршруты для подсетей интерфейсов spoke 180.100.0.8/30 и 140.114.0.4/30:

    Блок кода
    esr(config)# ip route 180.100.0.8/30 150.115.0.6
    esr(config)# ip route 140.114.0.4/30 150.115.0.6

    Произведём настройку IPsec для HUB:

    Блок кода
    esr(config)# security ike proposal ike_prop1
    esr(config-ike-proposal)# authentication algorithm md5
    esr(config-ike-proposal)# encryption algorithm aes128
    esr(config-ike-proposal)# dh-group 2
    esr(config-ike-proposal)# exit


    Блок кода
    esr(config)# security ike policy ike_pol1
    esr(config-ike-policy)# pre-shared-key ascii-text password
    esr(config-ike-policy)# proposal ike_prop1
    esr(config-ike-policy)# exit


    Блок кода
    esr(config)# security ike gateway ike_spoke
    esr(config-ike-gw)# ike-policy ike_pol1
    esr(config-ike-gw)# local address 150.115.0.5
    esr(config-ike-gw)# local network 150.115.0.5/32 protocol gre 
    esr(config-ike-gw)# remote address any
    esr(config-ike-gw)# remote network any
    esr(config-ike-gw)# mode policy-based
    esr(config-ike-gw)# exit


    Блок кода
    esr(config)# security ipsec proposal ipsec_prop1
    esr(config-ipsec-proposal)# authentication algorithm md5
    esr(config-ipsec-proposal)# encryption algorithm aes128
    esr(config-ipsec-proposal)# pfs dh-group 2
    esr(config-ipsec-proposal)# exit


    Блок кода
    esr(config)# security ipsec policy ipsec_pol1
    esr(config-ipsec-policy)# proposal ipsec_prop1
    esr(config-ipsec-policy)# exit


    Блок кода
    esr(config)# security ipsec vpn ipsec_spoke
    esr(config-ipsec-vpn)# mode ike
    esr(config-ipsec-vpn)# ike establish-tunnel route
    esr(config-ipsec-vpn)# ike gateway ike_spoke
    esr(config-ipsec-vpn)# ike ipsec-policy ipsec_pol1
    esr(config-ipsec-vpn)# enable
    esr(config-ipsec-vpn)# exit

    Привяжем IPsec к GRE-туннелю, чтобы клиенты могли устанавливать шифрованное соединение:

    Блок кода
    esr(config)# tunnel gre 1
    esr(config-gre)# ip nhrp ipsec ipsec_spoke dynamic
    esr(config-gre)# exit


  2. Конфигурирование SPOKE:
    Предварительно настроим протокол OSPF с анонсированием подсети LAN1:

    Блок кода
    esr(config)# router ospf log-adjacency-changes
    esr(config)# router ospf 1
    esr(config-ospf)# router-id 1.1.1.1
    esr(config-ospf)# area 10.10.0.0
    esr(config-ospf-area)# network 192.168.1.0/24
    esr(config-ospf-area)# enable
    esr(config-ospf-area)# exit
    esr(config-ospf)# enable
    esr(config-ospf)# exit

    Настроим интерфейс и определим принадлежность к зоне безопасности:

    Блок кода
    esr(config)# interface gigabitethernet 1/0/1
    esr(config-if-gi)# security-zone untrusted
    esr(config-if-gi)# ip address 180.100.0.10/30
    esr(config-if-gi)# exit

    Scroll Pagebreak
    Настроим GRE-туннель, определим принадлежность к зоне безопасности, настроим OSPF на GRE-туннеле, настроим NHRP и включим туннель и NHRP командой enable. Чтобы HUB стал DR, необходимо выставить минимальный приоритет на spoke:

    Блок кода
    esr(config)# tunnel gre 1
    esr(config-gre)# ttl 16
    esr(config-gre)# mtu 1416
    esr(config-gre)# multipoint
    esr(config-gre)# ip firewall disable
    esr(config-gre)# local address 180.100.0.10
    esr(config-gre)# ip address 10.10.0.2/28
    esr(config-gre)# ip ospf instance 1
    esr(config-gre)# ip ospf area 10.10.0.0
    esr(config-gre)# ip ospf priority 0
    esr(config-gre)# ip ospf
    esr(config-gre)# ip nhrp holding-time 300
    esr(config-gre)# ip nhrp map 10.10.0.1 150.115.0.5
    esr(config-gre)# ip nhrp nhs 10.10.0.1/28
    esr(config-gre)# ip nhrp multicast nhs
    esr(config-gre)# ip nhrp enable
    esr(config-gre)# enable
    esr(config-gre)# exit

    Создадим статические маршруты для подсетей интерфейсов spoke 180.100.0.8/30 и 140.114.0.4/30:

    Блок кода
    esr(config)# ip route 150.115.0.4/30 180.100.0.9
    esr(config)# ip route 140.114.0.4/30 180.100.0.9

    Произведём настройку IPsec для SPOKE:

    Блок кода
    esr(config)# security ike proposal ike_prop1
    esr(config-ike-proposal)# authentication algorithm md5
    esr(config-ike-proposal)# encryption algorithm aes128
    esr(config-ike-proposal)# dh-group 2
    esr(config-ike-proposal)# exit


    Блок кода
    esr(config)# security ike policy ike_pol1
    esr(config-ike-policy)# pre-shared-key ascii-text password
    esr(config-ike-policy)# proposal ike_prop1
    esr(config-ike-policy)# exit


    Блок кода
    esr(config)# security ike gateway ike_spoke
    esr(config-ike-gw)# ike-policy ike_pol1
    esr(config-ike-gw)# local address 180.100.0.10
    esr(config-ike-gw)# local network 180.100.0.10/32 protocol gre 
    esr(config-ike-gw)# remote address any
    esr(config-ike-gw)# remote network any
    esr(config-ike-gw)# mode policy-based
    esr(config-ike-gw)# exit
    esr(config)# security ike gateway ike_hub
    esr(config-ike-gw)# ike-policy ike_pol1
    esr(config-ike-gw)# local address 180.100.0.10
    esr(config-ike-gw)# local network 180.100.0.10/32 protocol gre 
    esr(config-ike-gw)# remote address 150.115.0.5
    esr(config-ike-gw)# remote network 150.115.0.5/32 protocol gre 
    esr(config-ike-gw)# mode policy-based
    esr(config-ike-gw)# exit


    Блок кода
    esr(config)# security ipsec proposal ipsec_prop1
    esr(config-ipsec-proposal)# authentication algorithm md5
    esr(config-ipsec-proposal)# encryption algorithm aes128
    esr(config-ipsec-proposal)# pfs dh-group 2
    esr(config-ipsec-proposal)# exit


    Блок кода
    esr(config)# security ipsec policy ipsec_pol1
    esr(config-ipsec-policy)# proposal ipsec_prop1
    esr(config-ipsec-policy)# exit


    Блок кода
    esr(config)# security ipsec vpn ipsec_spoke
    esr(config-ipsec-vpn)# mode ike
    esr(config-ipsec-vpn)# ike establish-tunnel route
    esr(config-ipsec-vpn)# ike gateway ike_spoke
    esr(config-ipsec-vpn)# ike ipsec-policy ipsec_pol1
    esr(config-ipsec-vpn)# enable
    esr(config-ipsec-vpn)# exit
    esr(config)# security ipsec vpn ipsec_hub
    esr(config-ipsec-vpn)# mode ike
    esr(config-ipsec-vpn)# ike establish-tunnel route
    esr(config-ipsec-vpn)# ike gateway ike_hub
    esr(config-ipsec-vpn)# ike ipsec-policy ipsec_pol1
    esr(config-ipsec-vpn)# enable
    esr(config-ipsec-vpn)# exit

    Привяжем IPsec к GRE-туннелю, для возможности установления шифрованного соединения с сервером и с другими клиентами сети:

    Блок кода
    esr(config)# tunnel gre 1
    esr(config-gre)# ip nhrp ipsec ipsec_hub static
    esr(config-gre)# ip nhrp ipsec ipsec_spoke dynamic
    esr(config-gre)# exit

    Scroll Pagebreak


  3. Состояние NHRP-записей можно посмотреть командой:

    Блок кода
    esr# show ip nhrp


  4. Дополнительно в security zone-pair untrusted self необходимо разрешить протоколы для GRE over IPSec-туннеля:

    Блок кода
    esr(config)# object-group service ISAKMP_PORT
    esr(config-object-group-service)# port-range 500
    esr(config-object-group-service)# poRt-range 4500
    esr(config-object-group-service)# exit
    esr(config)# security zone-pair untrusted self
    esr(config-zone-pair)# rule 1
    esr(config-zone-pair-rule)# action permit
    esr(config-zone-pair-rule)# match protocol udp
    esr(config-zone-pair-rule)# match destination-port ISAKMP_PORT
    esr(config-zone-pair-rule)# enable
    esr(config-zone-pair-rule)# exit
    esr(config-zone-pair)# rule 2
    esr(config-zone-pair-rule)# action permit
    esr(config-zone-pair-rule)# match protocol gre
    esr(config-zone-pair-rule)# enable
    esr(config-zone-pair-rule)# exit
    esr(config-zone-pair)# rule 3
    esr(config-zone-pair-rule)# action permit
    esr(config-zone-pair-rule)# match protocol esp
    esr(config-zone-pair-rule)# enable
    esr(config-zone-pair-rule)# exit
    esr(config-zone-pair)# rule 4
    esr(config-zone-pair-rule)# action permit
    esr(config-zone-pair-rule)# match protocol ah
    esr(config-zone-pair-rule)# enable
    esr(config-zone-pair-rule)# exit
    esr(config-zone-pair)# exit
    
    


...

<MODE> – режим переподключения, принимает следующие значения:

  • no – установленное подключение XAUTH будет удалено, если для нового подключения XAUTH инициатором соединения будет отправлено уведомление "INITIAL_CONTACT", будет назначен ранее использованный IP-адрес. В противном случае, установленное соединение XAUTH будет удержано. Для нового подключения XAUTH будет назначен новый IP-адрес.
  • never – установленное подключение XAUTH будет удержано. Для нового подключения XAUTH будет назначен новый IP-адрес. Уведомление "INITIAL_CONTACT" будет в любом случае проигнорировано.
  • replace – установленное подключение XAUTH будет удалено. Для нового подключения XAUTH будет использован ранее использованный IP-адрес.
  • keep – установленное подключение XAUTH будет удержано. Новое подключение XAUTH будет отклонено. 

...

  1. Конфигурирование R1
    Настроим внешний сетевой интерфейс и определим принадлежность к зоне безопасности:

    Блок кода
    esr# configure
    esr(config)# security zone untrusted
    esr(config-zone)# exit
    esr(config)# interface gigabitethernet 1/0/1
    esr(config-if-gi)# security-zone untrusted
    esr(config-if-gi)# ip address 180.100.0.1/24
    esr(config-if-gi)# exit

    Для настройки правил зон безопасности потребуется создать профиль порта протокола ISAKMP:

    Блок кода
    esr(config)# object-group service ISAKMP
    esr(config-object-group-service)# port-range 500,4500
    esr(config-object-group-service)# exit

    Создадим профиль протокола IKE. В профиле укажем группу Диффи-Хэллмана 2, алгоритм шифрования 3 DES, алгоритм аутентификации SHA1. Данные параметры безопасности используются для защиты IKE-соединения:

    Блок кода
    esr(config)# security ike proposal IKEPROP
    esr(config-ike-proposal)# dh-group 2
    esr(config-ike-proposal)# authentication algorithm sha1
    esr(config-ike-proposal)# encryption algorithm 3des
    esr(config-ike-proposal)# exit

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

    Блок кода
    esr(config)# security ike policy IKEPOLICY
    esr(config-ike-policy)# pre-shared-key hexadecimal 123FFF
    esr(config-ike-policy)# authentication method xauth-psk-key
    esr(config-ike-policy)# proposal IKEPROP
    esr(config-ike-policy)# exit

    Создадим профиль доступа и заведем в нем пару логин и пароль для клиента IPsec VPN:

    Блок кода
    esr(config)# access profile XAUTH
    esr(config-access-profile)# user client1
    esr(config-profile)# password ascii-text password123
    esr(config-profile)# exit
    esr(config-access-profile)# exit

    Создадим пул адресов назначения, из которого будут выдаваться IP клиентам IPsec VPN:

    Блок кода
    esr-1000(config)# address-assignment pool CLIENT_POOL
    esr-1000(config-pool)# ip prefix 192.0.2.0/24
    esr-1000(config-pool)# exit

    Создадим шлюз протокола IKE. В данном профиле необходимо указать политику протокола IKE, указать локальную подсеть, в качестве удаленной подсети указать пул адресов назначения, задать режим перенаправления трафика в туннель по политике и использование второго фактора аутентификации XAUTH:

    Блок кода
    esr(config)# security ike gateway IKEGW
    esr(config-ike-gw)# ike-policy IKEPOLICY
    esr(config-ike-gw)# local address 180.100.0.1
    esr(config-ike-gw)# local network 10.0.0.0/16
    esr(config-ike-gw)# remote address any
    esr(config-ike-gw)# remote network dynamic pool CLIENT_POOL
    esr(config-ike-gw)# dead-peer-detection action clear
    esr(config-ike-gw)# mode policy-based
    esr(config-ike-gw)# xauth access-profile XAUTH
    esr(config-ike-gw)# exit

    Scroll Pagebreak
    Создадим профиль параметров безопасности для IPsec-туннеля. В профиле укажем алгоритм шифрования 3DES, алгоритм аутентификации SHA1. Данные параметры безопасности используются для защиты IPsec-туннеля:

    Блок кода
    esr(config)# security ipsec proposal IPSECPROP
    esr(config-ipsec-proposal)# authentication algorithm sha1
    esr(config-ipsec-proposal)# encryption algorithm 3des
    esr(config-ipsec-proposal)# exit

    Создадим политику для IPsec-туннеля. В политике указывается список профилей IPsec-туннеля, по которым могут согласовываться узлы.

    Блок кода
    esr(config)# security ipsec policy IPSECPOLICY
    esr(config-ipsec-policy)# proposal IPSECPROP
    esr(config-ipsec-policy)# exit

    Создадим IPsec VPN. В VPN указывается шлюз IKE-протокола, политика IPsec-туннеля, режим обмена ключами и режим ожидания входящего соединения IPsec – by-request. После ввода всех параметров включим туннель командой enable.

    Блок кода
    esr(config)# security ipsec IPSECVPN
    esr(config-ipsec-vpn)# mode ike
    esr(config-ipsec-vpn)# ike establish-tunnel by-request
    esr(config-ipsec-vpn)# ike gateway IKEGW
    esr(config-ipsec-vpn)# ike ipsec-policy IPSECPOLICY
    esr(config-ipsec-vpn)# enable
    esr(config-ipsec-vpn)# exit

    Разрешим протокол esp и udp порты 500, 4500 в конфигурации firewall для установления IPsec VPN:

    Блок кода
    esr(config)# security zone-pair untrusted self
    esr(config-zone-pair)# rule 1
    esr(config-zone-pair-rule)# action permit
    esr(config-zone-pair-rule)# match protocol udp
    esr(config-zone-pair-rule)# match destination-port ISAKMP
    esr(config-zone-pair-rule)# enable
    esr(config-zone-pair-rule)# exit
    esr(config-zone-pair)#   rule 2
    esr(config-zone-pair-rule)# action permit
    esr(config-zone-pair-rule)# match protocol esp
    esr(config-zone-pair-rule)# enable
    esr(config-zone-pair-rule)# exit
    esr(config-zone-pair)# end


  2. Конфигурирование R2
    Настроим внешний сетевой интерфейс и определим принадлежность к зоне безопасности:

    Блок кода
    esr# configure
    esr(config)# interface gi 1/0/1
    esr(config-if)# ip address 120.11.5.1/24
    esr(config-if)# security-zone untrusted
    esr(config-if)# exit

    Scroll Pagebreak
    Для настройки правил зон безопасности потребуется создать профиль порта протокола ISAKMP:

    Блок кода
    esr(config)# object-group service ISAKMP
    esr(config-addr-set)# port-range 500,4500
    esr(config-addr-set)# exit

    Создадим профиль протокола IKE. В профиле укажем группу Диффи-Хэллмана 2, алгоритм шифрования 3 DES, алгоритм аутентификации SHA1. Данные параметры безопасности используются для защиты IKE-соединения:

    Блок кода
    esr(config)# security ike proposal IKEPROP
    esr(config-ike-proposal)# dh-group 2
    esr(config-ike-proposal)# authentication algorithm sha1
    esr(config-ike-proposal)# encryption algorithm 3des
    esr(config-ike-proposal)# exit

    Создадим политику протокола IKE. В политике указывается список профилей протокола IKE, по которым могут согласовываться узлы, ключ аутентификации, метод аутентификации XAUTH по ключу и режим аутентификации – клиент:

    Блок кода
    esr(config)# security ike policy IKEPOLICY
    esr(config-ike-policy)# pre-shared-key hexadecimal 123FFF
    esr(config-ike-policy)# authentication method xauth-psk-key
    esr(config-ike-policy)# authentication mode client
    esr(config-ike-policy)# proposal IKEPROP
    esr(config-ike-policy)# exit

    Создадим профиль доступа и заведем в нем пару логин и пароль:

    Блок кода
    esr(config)# access profile XAUTH
    esr(config-access-profile)# user client1
    esr(config-profile)# password ascii-text password123
    esr(config-profile)# exit
    esr(config-access-profile)# exit

    Создадим интерфейс loopback для терминации IP-адреса, полученного от IPsec VPN сервера:

    Блок кода
    esr(config)# interface loopback 8
    esr(config-loopback)# exit

    Создадим шлюз протокола IKE. В данном профиле указывается политика, интерфейс терминации, режим динамического установления удаленной подсети, выбор профиля доступа для XAUTH и режим перенаправления трафика в туннель по политике:

    Блок кода
    esr(config)# security ike gateway IKEGW
    esr(config-ike-gw)# ike-policy IKEPOLICY
    esr(config-ike-gw)# assign-interface loopback 8
    esr(config-ike-gw)# local address 120.11.5.1
    esr(config-ike-gw)# remote address 180.100.0.1
    esr(config-ike-gw)# remote network dynamic client
    esr(config-ike-gw)# mode policy-based
    esr(config-ike-gw)# xauth access-profile xauth client client1
    esr(config-ike-gw)# exit

    Scroll Pagebreak

    Создадим профиль параметров безопасности для IPsec-туннеля. В профиле укажем алгоритм шифрования 3DES, алгоритм аутентификации SHA1. Данные параметры безопасности используются для защиты IPsec-туннеля:

    Блок кода
    esr(config)# security ipsec proposal IPSECPROP
    esr(config-ipsec-proposal)# authentication algorithm md5
    esr(config-ipsec-proposal)# encryption algorithm aes128
    esr(config-ipsec-proposal)# exit

    Создадим политику для IPsec-туннеля. В политике указывается список профилей IPsec-туннеля, по которым могут согласовываться узлы:

    Блок кода
    esr(config)# security ipsec policy IPSECPOLICY
    esr(config-ipsec-policy)# proposal IPSECPROP
    esr(config-ipsec-policy)# exit

    Создадим IPsec VPN. В VPN указывается шлюз IKE-протокола, политика IP sec-туннеля, режим обмена ключами и способ установления соединения. После ввода всех параметров включим туннель командой enable:

    Блок кода
    esr(config)# security ipsec vpn IPSECVPN
    esr(config-ipsec-vpn)# mode ike
    esr(config-ipsec-vpn)# ike establish-tunnel route
    esr(config-ipsec-vpn)# ike gateway IKEGW
    esr(config-ipsec-vpn)# ike ipsec-policy IPSECPOLICY
    esr(config-ipsec-vpn)# enable
    esr(config-ipsec-vpn)# exit

    Разрешим протокол esp и udp порты 500,4500 в конфигурации firewall для установления IPsec VPN:

    Блок кода
    esr(config)# security zone-pair untrusted self
    esr(config-zone-pair)# rule 1
    esr(config-zone-pair-rule)# action permit
    esr(config-zone-pair-rule)# match protocol udp
    esr(config-zone-pair-rule)# match destination-port ISAKMP
    esr(config-zone-pair-rule)# enable
    esr(config-zone-pair-rule)# exit
    esr(config-zone-pair)#   rule 2
    esr(config-zone-pair-rule)# action permit
    esr(config-zone-pair-rule)# match protocol esp
    esr(config-zone-pair-rule)# enable
    esr(config-zone-pair-rule)# exit
    esr(config-zone-pair)# end

    Состояние туннеля можно посмотреть командой:

    Блок кода
    esr# show security ipsec vpn status IPSECVPN

    Конфигурацию туннеля можно посмотреть командой:

    Блок кода
    esr# show security ipsec vpn configuration IPSECVPN


Примечание

В firewall необходимо разрешить протокол ESP и ISAKMP (UDP-порт 500, 4500).

Якорь
DPD
DPD
Пример настройки DPD (Dead Peer Detection)

Задача:

Настроить Dead Peed Detection на R1 для Policy-based Ipsec VPN между R1 и R2.

...

Блок кода
esr# show security ipsec vpn configuration ipsec1

Scroll Pagebreak
После разрыва соединения между R1 и R2 на R1 IPsec-туннель начнет перестраиваться спустя 4 секунды после разрыва.

...