Оглавление | ||
---|---|---|
|
...
GRE (англ. Generic Routing Encapsulation — общая инкапсуляция маршрутов) — протокол туннелирования сетевых пакетов. Его основное назначение — инкапсуляция пакетов сетевого уровня сетевой модели OSI в IP-пакеты. GRE может использоваться для организации VPN на 3 уровне модели OSI. В маршрутизаторе ESR и контроллере WLC реализованы статические неуправляемые GRE-туннели, то есть туннели создаются вручную путем конфигурирования на локальном и удаленном узлах. Параметры туннеля для каждой из сторон должны быть взаимосогласованными или переносимые данные не будут декапсулироваться партнером.
Алгоритм настройки
...
esr(config)# tunnel gre <INDEX>
...
<INDEX> – идентификатор туннеля в диапазоне:
- для ESR-10/12V(F)/14VF/15 и WLC-15 – [1..10];
- для ESR-20/21/30/100/200 и WLC-30 – [1..250];
- для ESR-1000/1200/
1500/1511/1700/3100/3200 и WLC-3200 – [1..500].
...
esr(config-gre )# ip vrf forwarding <VRF>
...
esr(config-gre)# description <DESCRIPTION>
...
esr(config-gre)# local address <ADDR>
...
esr(config-gre)# local interface <IF>
...
esr(config-gre)# remote address <ADDR>
...
esr(config-gre)# mode <MODE>
...
<MODE> – режим инкапсуляции для GRE-туннеля:
- ip – инкапсуляция IP-пакетов в GRE;
- ethernet – инкапсуляция Ethernet-фреймов в GRE.
Значение по умолчанию: 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-адресации.
...
esr(config-gre)# bridge-group <BRIDGE-ID>
...
<BRIDGE-ID> – идентификационный номер моста, принимает значения в диапазоне:
- для ESR-10/12V(F)/14VF/15 и WLC-15 – [1..50];
- для ESR-20/21/30/100/200 и WLC-30 – [1..250];
- для ESR-1000/1200/
1500/1511/1700/3100/3200 и WLC-3200 – [1..500].
...
esr(config-gre)# security-zone<NAME>
...
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 и WLC-15 – [1280..9600];
- для ESR-20/21/30 и WLC-30 – [1280..9500];
- для ESR-100/200/1000/
1200/1500/1511/1700/3100/3200 и WLC-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.
...
Указать IP-адрес для работы механизма keepalive (обязательно в режиме ethernet).
...
esr(config-gre)# keepalive dst-address <ADDR>
...
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 на интерфейсах.
...
esr(config-gre)# ip tcp adjust-mss <MSS>
...
<MSS> – значение MSS, принимает значения в диапазоне [500..1460].
Значение по умолчанию: 1460.
...
esr(config-gre)# history statistics
...
27
...
Активировать туннель.
...
esr(config-gre)# enable
...
Также для GRE-туннеля возможно настроить:
- QoS в базовом или расширенном режимах (см. раздел Управление QoS);
- proxy (см. раздел Проксирование HTTP/HTTPS-трафика);
- мониторинг траффика (см. разделы Настройка Netflow и Настройка sFlow);
- функционал протоколов маршрутизации (см. раздел Управление маршрутизацией);
- функционал BRAS (см. раздел Управление BRAS (Broadband Remote Access Server));
Scroll Pagebreak |
---|
Пример настройки IP-GRE-туннеля
Задача:
Организовать L3-VPN между офисами компании через IP-сеть, используя для туннелирования трафика протокол GRE.
- в качестве локального шлюза для туннеля используется IP-адрес 115.0.0.1;
- в качестве удаленного шлюза для туннеля используется IP-адрес 114.0.0.10;
- IP-адрес туннеля на локальной стороне 25.0.0.1/24.
Решение:
Предварительно на устройствах должны быть настроены интерфейсы для связи с сетью WAN разрешено получение пакетов протокола GRE из зоны безопасности, в которой работают интерфейсы, подключенные к сети WAN.
Создадим туннель GRE 10:
Блок кода |
---|
esr(config)# tunnel gre 10 |
Укажем локальный и удаленный шлюз (IP-адреса интерфейсов, граничащих с WAN):
Блок кода |
---|
esr(config-gre)# local address 115.0.0.1
esr(config-gre)# remote address 114.0.0.10 |
Укажем IP-адрес туннеля 25.0.0.1/24:
Блок кода |
---|
esr(config-gre)# ip address 25.0.0.1/24 |
Также туннель должен принадлежать к зоне безопасности, для того чтобы можно было создать правила, разрешающие прохождение трафика в firewall. Принадлежность туннеля к зоне задается следующей командой:
Блок кода |
---|
esr(config-gre)# security-zone untrusted |
Включим туннель:
Блок кода |
---|
esr(config-gre)# enable
esr(config-gre)# exit |
На маршрутизаторе или контроллере должен быть создан маршрут до локальной сети партнера. В качестве интерфейса назначения указываем ранее созданный туннель GRE:
Блок кода |
---|
esr(config)# ip route 172.16.0.0/16 tunnel gre 10 |
После применения настроек трафик будет инкапсулироваться в туннель и отправляться партнеру, независимо от наличия GRE-туннеля и правильности настроек с его стороны.
Опционально для GRE-туннеля можно указать следующие параметры:
Включить вычисление и включение в пакет контрольной суммы заголовка GRE и инкапсулированного пакета для исходящего трафика:
Блок кода |
---|
esr(config-gre)# local checksum |
Включить проверку наличия и корректности контрольной суммы GRE для входящего трафика:
Блок кода |
---|
esr(config-gre)# remote checksum |
Указать уникальный идентификатор:
Блок кода |
---|
esr(config-gre)# key 15808 |
Указать значение DSCP, MTU, TTL:
Блок кода |
---|
esr(config-gre)# dscp 44
esr(config-gre)# mtu 1426
esr(config-gre)# ttl 18 |
Включить и настроить механизм keepalive:
Блок кода |
---|
esr(config-gre)# keepalive enable
esr(config-gre)# keepalive timeout <TIME>
esr(config-gre)# keepalive retries <VALUE> |
Состояние туннеля можно посмотреть командой:
Блок кода |
---|
esr# show tunnels status gre 10 |
Счетчики входящих и отправленных пакетов можно посмотреть командой:
Блок кода |
---|
esr# show tunnels counters gre 10 |
Конфигурацию туннеля можно посмотреть командой:
Блок кода |
---|
esr# show tunnels configuration gre 10 |
Настройка туннеля IPv4-over-IPv4 производится аналогичным образом.
Примечание |
---|
При создании туннеля необходимо в firewall разрешить протокол GRE (47). |
Настройка DMVPN
DMVPN (Dynamic Multipoint Virtual Private Network) — технология для создания виртуальных частных сетей, с возможностью динамического создания туннелей между узлами. Преимуществом данного решения является высокая масштабируемость и легкость настройки при подключении филиалов к головному офису. DMVPN используется в топологии Hub-and-Spoke, и позволяет строить прямые VPN-туннели Spoke-to-Spoke в дополнение к обычным Spoke-to-Hub туннелям. Это означает, что филиалы смогут общаться друг с другом напрямую, без необходимости прохождения трафика через Hub.
Чтобы установить такое соединение, клиенты (NHC) по шифрованному IPsec-туннелю отправляют соответствие своего внутреннего (туннельного) адреса и внешнего (NBMA) адреса на NHRP-сервер (NHS). Когда клиент захочет соединиться с другим NHC, он посылает на сервер запрос, чтобы узнать его внешний адрес. Получив ответ от сервера, клиент теперь самостоятельно может устанавливать соединение c удалённым филиалом.
Алгоритм настройки
...
Шаг
...
Описание
...
Команда
...
Ключи
...
1
...
Проверить доступность “внешних” IP-адресов, находящихся на физических интерфейсах.
...
...
2
...
Подготовить IPsec-туннели для работы совместно с динамическими GRE-туннелями.
...
...
См. раздел Управление туннелированием#Настройка Policy-based IPsec VPN.
...
esr(config)# tunnel gre <INDEX>
...
<INDEX> – идентификатор туннеля.
...
4
...
Перевести GRE-туннель в режим multipoint.
...
esr(config-gre )# multipoint
...
5
...
Установить открытый пароль для NHRP-пакетов (не обязательно).
...
esr(config-gre)# ip nhrp authentication <WORD>
...
<WORD> – пароль в открытой форме, задается строкой [1..8] символов, может включать символы [0-9a-fA-F].
...
6
...
Указать время, в течение которого на NHS будет существовать запись о данном клиенте (не обязательно).
...
esr(config-gre)# ip nhrp holding-time <TIME>
...
<TIME> – время в секундах, в течение которого на сервере будет существовать запись о данном клиенте, принимает значения [1..65535].
Значение по умолчанию: 7200.
...
7
...
Задать «логический(туннельный)» адрес 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-сервере.
...
8
...
Задать соответствие «внутреннего» туннельного адреса с «внешним» NBMA-адресом.
...
esr(config-gre)# ip nhrp map <ADDR> <ADDR>
...
<ADDR> – IP-адрес задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255].
...
9
...
Определить адресата мультикастного трафика.
...
esr(config-gre)# ip nhrp multicast { dynamic | nhs | <ADDR> }
...
- dynamic – отправлять на все пиры, с которыми есть соединение;
- nhs – отправлять на все статические сконфигурированные сервера.
<ADDR> – отправлять на специфически сконфигурированный адрес, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255].
...
10
...
Включить возможность отправки NHRP Traffic Indication пакетов. Выполняется на NHS (не обязательно).
...
esr(config-gre)# ip nhrp redirect
...
11
...
Включить возможность создания кратчайших маршрутов. Выполняется на NHC (не обязательно).
...
esr(config-gre)# ip nhrp shortcut
...
12
...
Привязать IPsec-VPN к mGRE-туннелю (не обязательно).
...
esr(config-gre)# ip nhrp ipsec <WORD> { static | dynamic }
...
<WORD> – имя VPN, задаётся строкой до 31 символа;
- static – статическое соединение, применятся для связи с NHS;
- dynamic – динамически устанавливающееся соединение, конфигурируется для связи между NHC.
...
14
...
Включить работу протокола NHRP.
...
esr(config-gre)# ip nhrp enable
...
15
...
Организовать IP-связность посредством протокола динамической маршрутизации.
...
Пример настройки 1
Задача:
Организовать DMVPN между офисами компании, используя mGRE-туннели, NHRP (Next Hop Resolution Protocol), протокол динамической маршрутизации (BGP), IPsec. В нашем примере у нас будет HUB-устройство и два филиала. HUB – это DMVPN-cервер (NHS), а филиалы – DMPVN-клиенты (NHC).
Hub внешний IP-адрес — 150.115.0.5;
Spoke-1 внешний IP-адрес — 180.100.0.10;
Spoke-2 внешний IP-адрес — 140.114.0.4.
Параметры IPsec VPN:
IKE:
- группа Диффи-Хэллмана: 2;
- алгоритм шифрования: AES128;
- алгоритм аутентификации: SHA1.
IPsec:
- алгоритм шифрования: AES128;
- алгоритм аутентификации: SHA1.
Решение:
Конфигурирование 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 |
Произведём настройку протокола динамической маршрутизации для 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 |
Привяжем IPsec к GRE-туннелю, чтобы клиенты могли устанавливать шифрованное соединение:
Блок кода |
---|
esr(config-gre)# ip nhrp ipsec IPSECVPN dynamic |
Включим работу NHRP и сам туннель:
Блок кода |
---|
esr(config-gre)# ip nhrp enable
esr(config-gre)# enable |
...
Проведём стандартную настройку 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 |
Привяжем 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 |
Пример настройки 2
Задача:
Организовать DMVPN между офисами компании с соответствующими подсетями LAN1 и LAN2, используя mGRE-туннели, NHRP (Next Hop Resolution Protocol), протокол динамической маршрутизации (OSPF), IPsec. В нашем примере у нас будет HUB-устройство и два филиала. HUB – это DMVPN-cервер (NHS), а филиалы – DMPVN-клиенты (NHC).
При использовании схемы DMVPN необходимо, чтобы HUB являлся DR-маршрутизатором. Таким образом, маршруты локальных подсетей spoke 1 и spoke 2 будут ретранслироваться через hub.
HUB внешний IP-адрес — 150.115.0.5;
SPOKE-1 внешний IP-адрес — 180.100.0.10;
SPOKE-2 внешний IP-адрес — 140.114.0.4.
Параметры IPsec VPN:
IKE:
- группа Диффи-Хэллмана: 2;
- алгоритм шифрования: AES128;
- алгоритм аутентификации: MD5.
IPsec:
- группа Диффи-Хэллмана: 2;
- алгоритм шифрования: AES128;
- алгоритм аутентификации: MD5.
Решение:
Конфигурирование 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 |
Настроим 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 |
Конфигурирование 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 |
---|
Блок кода |
---|
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 |
Состояние NHRP-записей можно посмотреть командой:
Блок кода |
---|
esr# show ip nhrp |
Дополнительно в 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
|
...
Настройка L2TPv3-туннелей
L2TPv3 (Layer 2 Tunneling Protocol Version 3) — протокол для туннелирования пакетов 2 уровня модели OSI между двумя IP-узлами. В качестве инкапсулирующего протокола используется IP или UDP. L2TPv3 может использоваться как альтернатива MPLS P2P L2VPN (VLL) для организации VPN уровня L2. В устройствах реализованы статические неуправляемые L2TPv3-туннели, то есть туннели создаются вручную путем конфигурирования на локальном и удаленном узлах. Параметры туннеля на каждой из сторон должны быть взаимосогласованными или переносимые данные не будут декапсулироваться партнером.
Алгоритм настройки
...
Шаг
...
Описание
...
Команда
...
Ключи
...
1
...
Сконфигурировать L3-интерфейс, от которого будет строиться L2TPv3-туннель.
...
...
2
...
Создать L2TPv3-туннель и перейти в режим его конфигурирования.
...
esr(config)# tunnel l2tpv3 <INDEX>
...
<INDEX> – идентификатор туннеля в диапазоне:
- для ESR-10/12V(F)/14VF/15 и WLC-15 – [1..10];
- для ESR-20/21/30/100/200 и WLC-30 – [1..250];
- для ESR-1000/1200/1500/
1511/1700/3100/3200 и WLC-3200 – [1..500].
...
3
...
Указать описание конфигурируемого туннеля (не обязательно).
...
esr(config-l2tpv3)# description <DESCRIPTION>
...
<DESCRIPTION> – описание туннеля, задаётся строкой до 255 символов.
...
Установить локальный IP-адрес для установки туннеля.
...
esr(config-l2tpv3)# local address <ADDR>
...
<ADDR> – IP-адрес локального шлюза, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255].
...
5
...
Установить удаленный IP-адрес для установки туннеля.
...
esr(config-l2tpv3)# remote address <ADDR>
...
<ADDR> – IP-адрес локального шлюза, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255].
...
6
...
Выбрать метод инкапсуляции для туннеля L2TPv3.
...
esr(config-l2tpv3)# protocol <TYPE>
...
<TYPE> – тип инкапсуляции, возможные значения:
- ip - инкапсуляция в IP-пакет;
- udp - инкапсуляция в UDP-дейтаграммы.
...
7
...
Установить локальный идентификатор сессии.
...
esr(config-l2tpv3)# local session-id <SESSION-ID>
...
<SESSION-ID> – идентификатор сессии, принимает значения [1..200000].
...
8
...
Установить удаленный идентификатор сессии.
...
esr(config-l2tpv3)# remote session-id <SESSION-ID>
...
<SESSION-ID> – идентификатор сессии, принимает значения [1..200000].
...
9
...
Определить локальный UDP-порт (если в качестве метода инкапсуляции был выбран UDP-протокол).
...
esr(config-l2tpv3)# local port <UDP>
...
<UDP> – номер UDP-порта в диапазоне [1..65535].
...
esr(config-l2tpv3)# remote port <UDP>
...
esr(config-l2tpv3)# bridge-group <BRIDGE-ID>
...
<BRIDGE-ID> – идентификационный номер моста, принимает значения в диапазоне:
- для ESR-10/12V(F)/14VF/15 и WLC-15 – [1..50];
- для ESR-20/21/30/100/200 и WLC-30 – [1..250];
- для ESR-1000/1200/1500 –
/1511/1700/3100/3200 и WLC-3200 – [1..500].
...
esr(config-l2tpv3)# enable
...
esr(config-l2tpv3)# mtu <MTU>
...
<MTU> – значение MTU, принимает значения в диапазоне:
- для ESR-10/12V(F)/14VF/15 и WLC-15 – [1280..9600];
- для ESR-20/21/30 и WLC-30 – [1280..9500];
- для ESR-100/200/1000/
1200/1500/1511/1700/3100/3200 и WLC-3200 – [1280..10000].
Значение по умолчанию: 1500.
...
esr(config-l2tpv3)# local cookie <COOKIE>
...
esr(config-l2tpv3)# remote cookie <COOKIE>
...
esr(config-l2tpv3)# load-average <TIME>
...
<TIME> – интервал в секундах, принимает значения [5..150].
Значение по умолчанию: 5.
...
esr(config-subif)# history statistics
...
Также для L2TPv3-туннеля возможно настроить:
- QoS в базовом или расширенном режимах (см. раздел Управление QoS);
- функционал BRAS (см. раздел Управление BRAS (Broadband Remote Access Server)).
Пример настройки L2TPv3-туннеля
Задача:
Организовать L2 VPN между офисами компании через IP-сеть, используя для туннелирования трафика протокол L2TPv3.
- в качестве инкапсулирующего протокола используется UDP, номер порта на локальной стороне и номер порта на стороне партнера 519;
- в качестве локального шлюза для туннеля используется IP-адрес 21.0.0.1;
- в качестве удаленного шлюза для туннеля используется IP-адрес 183.0.0.10;
- идентификатор туннеля на локальной стороне равен 2, на стороне партнера 3;
- идентификатор сессии внутри туннеля равен 100, на стороне партнера 200;
- в туннель направим трафик из bridge с идентификатором 333.
Scroll Pagebreak |
---|
Создадим туннель L2TPv3 333:
Блок кода |
---|
esr# configure
esr(config)# tunnel l2tpv3 333 |
...
Блок кода |
---|
esr(config-l2tpv3)# local address 21.0.0.1
esr(config-l2tpv3)# remote address 183.0.0.10 |
Укажем тип инкапсулирующего протокола и номера UDP-портов:
Блок кода |
---|
esr(config-l2tpv3)# protocol udp
esr(config-l2tpv3)# local port 519
esr(config-l2tpv3)# remote port 519 |
Укажем идентификаторы сессии внутри туннеля для локальной и удаленной сторон:
Блок кода |
---|
esr(config-l2tpv3)# local session-id 100
esr(config-l2tpv3)# remote session-id 200 |
Установим принадлежность L2TPv3-туннеля к мосту, который должен быть связан с сетью удаленного офиса (настройка моста рассматривается в пункте Пример настройки bridge для VLAN и L2TPv3-туннеля):
Блок кода |
---|
esr(config-l2tpv3)# bridge-group 333 |
Включим ранее созданный туннель и выйдем:
Блок кода |
---|
esr(config-l2tpv3)# enable
esr(config-l2tpv3)# exit |
Создадим саб-интерфейс для коммутации трафика, поступающего из туннеля, в локальную сеть с тегом VLAN id 333:
Блок кода |
---|
esr(config)# interface gi 1/0/2.333 |
Установим принадлежность саб-интерфейса к мосту, который должен быть связан с локальной сетью (настройка моста рассматривается в пункте Настройка PPP через E1):
Блок кода |
---|
esr(config-subif)# bridge-group 333
esr(config-subif)# exit |
После применения настроек трафик будет инкапсулироваться в туннель и отправляться партнеру, независимо от наличия L2TPv3-туннеля и правильности настроек с его стороны.
Настройки туннеля в удаленном офисе должны быть зеркальными локальным. В качестве локального шлюза должен использоваться IP-адрес 183.0.0.10. В качестве удаленного шлюза должен использоваться IP-адрес 21.0.0.1. Номер порта инкапсулирующего протокола на локальной стороне и стороне партнера 519. Идентификатор сессии внутри туннеля должен быть равным 200, на стороне партнера 100. Также туннель должен принадлежать мосту, который необходимо соединить с сетью партнера.
Состояние туннеля можно посмотреть командой:
Блок кода |
---|
esr# show tunnels status l2tpv3 333 |
Счетчики входящих и отправленных пакетов можно посмотреть командой:
Блок кода |
---|
esr# show tunnels counters l2tpv3 333 |
Конфигурацию туннеля можно посмотреть командой:
Блок кода |
---|
esr# show tunnels configuration l2tpv3 333 |
Примечание |
---|
Помимо создания туннеля необходимо в firewall разрешить входящий трафик по протоколу UDP с портом отправителя 519 и портом назначения 519. |
Настройка IPsec VPN
IPsec — это набор протоколов, которые обеспечивают защиту передаваемых с помощью IP-протокола данных. Данный набор протоколов позволяет осуществлять подтверждение подлинности (аутентификацию), проверку целостности и шифрование IP-пакетов, а также включает в себя протоколы для защищённого обмена ключами в сети Интернет.
Алгоритм настройки Route-based IPsec VPN
...
esr(config)# tunnel vti <TUN>
...
esr(config-vti)#local address <ADDR>
...
esr(config-vti)#remote address <ADDR>
...
esr(config-vti)# ip address <ADDR/LEN>
...
esr(config-vti)# security-zone<NAME>
...
esr(config-vti)# ip firewall disable
...
esr(config-vti)#enable
...
esr(config)# security ike proposal <NAME>
...
esr(config-ike-proposal)# description<DESCRIPTION>
...
esr(config-ike-proposal)# authentication algorithm <ALGORITHM>
...
<ALGORITHM> – алгоритм аутентификации, принимает значения: md5, sha1, sha2-256, sha2‑384, sha2-512.
Значение по умолчанию: sha1.
...
esr(config-ike-proposal)# encryption algorithm <ALGORITHM>
...
<ALGORITHM> – протокол шифрования, принимает значения: des, 3des, blowfish128, blowfish192, blowfish256, aes128, aes192, aes256, aes128ctr, aes192ctr, aes256ctr, camellia128, camellia192, camellia256.
Значение по умолчанию: 3des.
...
11
...
Определить номер группы Диффи-Хэллмана (не обязательно).
...
esr(config-ike-proposal)# dh-group <DH-GROUP>
...
<DH-GROUP> – номер группы Диффи-Хэллмана, принимает значения [1, 2, 5, 14, 15, 16, 17, 18].
Значение по умолчанию: 1.
...
12
...
Определить режим аутентификации IKE (не обязательно).
...
esr(config-ike-proposal)# authentication method <METHOD>
...
<METHOD> – метод аутентификации ключа. Может принимать значения:
- pre - shared - key – метод аутентификации, использующий предварительно полученные ключи шифрования;
- public - key – метод аутентификации, использующий сертификат.
Значение по умолчанию: pre-shared-key.
...
13
...
Создать IKE-политику и перейти в режим её конфигурирования.
...
esr(config)# security ike policy <NAME>
...
<NAME> – имя политики IKE, задаётся строкой до 31 символа.
...
14
...
Задать время жизни соединения протокола IKE (не обязательно).
...
esr(config-ike-proposal)# lifetime seconds <SEC>
...
<SEC> – период времени, принимает значения [4 ..86400] секунд.
Значение по умолчанию: 3600.
...
15
...
Привязать IKE-профиль к IKE-политике.
...
esr(config-ike-policy)# proposal <NAME>
...
<NAME> – имя профиля протокола IKE, задаётся строкой до 31 символа.
...
16
...
Указать ключ аутентификации (обязательно, если в качестве режима аутентификации выбран pre-shared-key)
...
esr(config-ike-policy)# pre-shared-key ascii-text<TEXT>
...
<TEXT> – строка [1..64] ASCII символов.
...
17
...
Создать IKE-шлюз и перейти в режим его конфигурирования.
...
esr(config)# security ike gateway <NAME>
...
<NAME> – имя шлюза протокола IKE, задаётся строкой до 31 символа.
...
18
...
Привязать IKE-политику к IKE-шлюзу.
...
esr(config-ike-gw)# ike-policy <NAME>
...
<NAME> – имя политики протокола IKE, задаётся строкой до 31 символа.
...
19
...
Указать версию IKE (не обязательно).
...
esr(config-ike-gw)# version <VERSION>
...
<version> – версия IKE-протокола: v1-only или v2-only.
Значение по умолчанию: v1-only.
...
20
...
Установить режим перенаправления трафика в туннель – route-based.
...
esr(config-ike-gw)# mode route-based
...
21
...
Указать действие для DPD (не обязательно).
...
esr(config-ike-gw)# dead-peer-detection action <MODE>
...
<MODE> – режим работы DPD:
- restart – соединение переустанавливается;
- clear – соединение останавливается;
- hold – соединение поддерживается;
- none – механизм выключен, никаких действий не предпринимается.
Значение по умолчанию: none.
...
22
...
Указать интервал между отправкой сообщений механизмом DPD (не обязательно).
...
esr(config-ike-gw)# dead-peer-detection interval <SEC>
...
<SEC> – интервал между отправкой сообщений механизмом DPD, принимает значения [1..180] секунд.
Значение по умолчанию: 2.
...
23
...
Указать период времени для ответа на сообщения механизма DPD (не обязательно).
...
esr(config-ike-gw)# dead-peer-detection timeout <SEC>
...
<SEC> – период времени для ответа на сообщения механизма DPD, принимает значения [1..180] секунд.
Значение по умолчанию: 30 секунд.
...
24
...
Привязать VTI-туннель к IKE-шлюзу.
...
esr(config-ike-gw)# bind-interface vti <VTI>
...
<VTI> – идентификационный номер интерфейса VTI.
...
25
...
Создать в IPsec-профиль.
...
esr(config)# security ipsec proposal <NAME>
...
<NAME> – имя профиля протокола IPsec, задаётся строкой до 31 символа.
...
26
...
Определить алгоритм аутентификации для IPsec (не обязательно).
...
esr(config-ipsec-proposal)# authentication algorithm <ALGORITHM>
...
<ALGORITHM> – алгоритм аутентификации, принимает значения: md5, sha1, sha2-256, sha2‑384, sha2-512.
Значение по умолчанию: sha1.
...
27
...
Определить алгоритм шифрования для IPsec (не обязательно).
...
esr(config-ipsec-proposal)# encryption algorithm <ALGORITHM>
...
<ALGORITHM> – протокол шифрования, принимает значения: des, 3des, blowfish128, blowfish192, blowfish256, aes128, aes192, aes256, aes128ctr, aes192ctr, aes256ctr, camellia128, camellia192, camellia256.
Значение по умолчанию: 3des.
...
28
...
Указать протокол инкапсуляции для IPsec (не обязательно).
...
esr(config-ipsec-proposal)# protocol <PROTOCOL>
...
<PROTOCOL> – инкапсулирующий протокол.
Значение по умолчанию: esp.
...
29
...
Создать IPsec-политику и перейти в режим её конфигурирования.
...
esr(config)# security ipsec policy <NAME>
...
<NAME> – имя политики IPsec, задаётся строкой до 31 символа.
...
30
...
Привязать IPsec-профиль к IPsec-политике.
...
esr(config-ipsec-policy)# proposal <NAME>
...
<NAME> – имя профиля протокола IPsec, задаётся строкой до 31 символа.
...
31
...
Задать время жизни IPsec-туннеля (не обязательно).
...
esr(config-ipsec- policy)# lifetime { seconds <SEC> |
packets <PACKETS> | kilobytes <KB> }
...
<SEC> – период времени жизни IPsec-туннеля, по истечении которого происходит пересогласование. Принимает значения [1140..86400] секунд.
<PACKETS> – количество пакетов, после передачи которого происходит пересогласование IPsec-туннеля. Принимает значения [4..86400].
<KB> – объем трафика, после передачи которого происходит пересогласование IPsec-туннеля. Принимает значения [4..86400] секунд.
Значение по умолчанию: 28800 секунд.
...
32
...
Создать IPsec VPN и перейти в режим конфигурирования.
...
esr(config)# security ipsec vpn <NAME>
...
<NAME> – имя VPN, задаётся строкой до 31 символа.
...
33
...
Определить режим согласования данных, необходимых для активации VPN.
...
esr(config-ipsec-vpn)# mode <MODE>
...
<MODE> – режим работы VPN.
...
34
...
Привязать IPsec-политику к IPsec-VPN.
...
esr(config-ipsec-vpn)# ike ipsec-policy <NAME>
...
<NAME> – имя IPsec-политики, задаётся строка до 31 символа.
...
35
...
Задать значение DSCP для использования в IP-заголовке исходящих пакетов IKE-протокола (не обязательно).
...
esr(config-ipsec-vpn)# ike dscp <DSCP>
...
<DSCP> – значение кода DSCP, принимает значения в диапазоне [0..63].
Значение по умолчанию: 63.
...
36
...
Установить режим активации VPN.
...
esr(config-ipsec-vpn)# ike establish-tunnel <MODE>
...
<MODE> – режим активации VPN:
- by - request – соединение активируется встречной стороной;
- route – соединение активируется при появлении трафика, маршрутизируемого в туннель;
- immediate – туннель активируется автоматически после применения конфигурации.
...
37
...
Осуществить привязку IKE-шлюза к IPsec-VPN.
...
esr(config-ipsec-vpn)# ike gateway <NAME>
...
<NAME> – имя IKE-шлюза, задаётся строкой до 31 символа.
...
38
...
Установить значение временного интервала в секундах, по истечению которого соединение закрывается, если не было принято или передано ни одного пакета через SA (не обязательно).
...
esr(config-ipsec-vpn)# ike idle-time <TIME>
...
<TIME> – интервал в секундах, принимает значения [4..86400].
...
39
...
Отключить пересогласование ключей до разрыва IKE-соединения по истечении времени, количеству переданных пакетов или байт (не обязательно).
...
esr(config-ipsec-vpn)# ike rekey disable
...
40
...
Настроить начало пересогласования ключей IKE-соединения до истечения времени жизни (не обязательно).
...
esr(config-ipsec-vpn)# ike rekey margin { seconds <SEC> |
packets <PACKETS> | kilobytes <KB> }
...
<SEC> – интервал времени в секундах, оставшийся до закрытия соединения (задается командой lifetimeseconds). Принимает значения [4..86400].
<PACKETS> – количество пакетов, оставшихся до закрытия соединения (задается командой lifetimepackets). Принимает значения [4..86400].
<KB> – объем трафика в килобайтах, оставшийся до закрытия соединения (задается командой lifetimekilobytes). Принимает значения [4..86400].
Значение по умолчанию:
- Пересогласование ключей до истечения времени – за 540 секунд.
- Пересогласование ключей до истечения объема трафика и количества пакетов – отключено.
...
41
...
Установить уровень случайного разброса значений параметров margin seconds, margin packets, margin kilobytes (не обязательно).
...
esr(config-ipsec-vpn)# ike rekey randomization <VALUE>
...
<VALUE> – максимальный процент разброса значений, принимает значения [1..100].
Значение по умолчанию: 100%
...
42
...
Указать описание для IPsec-VPN (не обязательно).
...
esr(config-ipsec-vpn)# description <DESCRIPTION>
...
<DESCRIPTION> – описание профиля, задаётся строкой до 255 символов.
...
43
...
Активировать IPsec VPN.
...
esr(config-ipsec-vpn)# enable
Пример настройки Route-based IPsec VPN
Задача:
Настроить IPsec-туннель между R1 и R2.
- R1 IP-адрес – 120.11.5.1;
- R2 IP-адрес – 180.100.0.1.
IKE:
- группа Диффи-Хэллмана: 2;
- алгоритм шифрования: AES 128 bit;
- алгоритм аутентификации: MD5.
IP sec:
- алгоритм шифрования: AES 128 bit;
- алгоритм аутентификации: MD5.
Решение:
Конфигурирование R1
Настроим внешний сетевой интерфейс и определим принадлежность к зоне безопасности:
Блок кода |
---|
esr# configure
esr(config)# interface gi 1/0/1
esr(config-if-gi)# ip address 180.100.0.1/24
esr(config-if-gi)# security-zone untrusted
esr(config-if-gi)# exit |
Создадим туннель VTI. Трафик будет перенаправляться через VTI в IPsec-туннель. В качестве локального и удаленного шлюза указываются IP-адреса интерфейсов, граничащих с WAN:
Блок кода |
---|
esr(config)# tunnel vti 1
esr(config-vti)# local address 180.100.0.1
esr(config-vti)# remote address 120.11.5.1
esr(config-vti)# enable
esr(config-vti)# exit |
Для настройки правил зон безопасности потребуется создать профиль порта протокола ISAKMP:
Блок кода |
---|
esr(config)# object-group service ISAKMP
esr(config-object-group-service)# port-range 500
esr(config-object-group-service)# exit |
Scroll Pagebreak |
---|
Блок кода |
---|
esr(config)# ip route 192.0.2.0/24 tunnel vti 1 |
Создадим профиль протокола IKE. В профиле укажем группу Диффи-Хэллмана 2, алгоритм шифрования AES 128 bit, алгоритм аутентификации MD5. Данные параметры безопасности используются для защиты IKE-соединения:
Блок кода |
---|
esr(config)# security ike proposal ike_prop1
esr(config-ike-proposal)# dh-group 2
esr(config-ike-proposal)# authentication algorithm md5
esr(config-ike-proposal)# encryption algorithm aes128
esr(config-ike-proposal)# exit |
Создадим политику протокола IKE. В политике указывается список профилей протокола IKE, по которым могут согласовываться узлы и ключ аутентификации:
Блок кода |
---|
esr(config)# security ike policy ike_pol1
esr(config-ike-policy)# pre-shared-key hexadecimal 123FFF
esr(config-ike-policy)# proposal ike_prop1
esr(config-ike-policy)# exit |
Создадим шлюз протокола IKE. В данном профиле указывается VTI-туннель, политика, версия протокола и режим перенаправления трафика в туннель:
Блок кода |
---|
esr(config)# security ike gateway ike_gw1
esr(config-ike-gw)# ike-policy ike_pol1
esr(config-ike-gw)# mode route-based
esr(config-ike-gw)# bind-interface vti 1
esr(config-ike-gw)# version v2-only
esr(config-ike-gw)# exit |
Создадим профиль параметров безопасности для IPsec-туннеля. В профиле укажем алгоритм шифрования AES 128 bit, алгоритм аутентификации MD5. Данные параметры безопасности используются для защиты IPsec-туннеля:
Блок кода |
---|
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)# exit |
Создадим политику для IPsec-туннеля. В политике указывается список профилей IPsec-туннеля, по которым могут согласовываться узлы:
Блок кода |
---|
esr(config)# security ipsec policy ipsec_pol1
esr(config-ipsec-policy)# proposal ipsec_prop1
esr(config-ipsec-policy)# exit |
Scroll Pagebreak |
---|
Блок кода |
---|
esr(config)# security ipsec vpn ipsec1
esr(config-ipsec-vpn)# mode ike
esr(config-ipsec-vpn)# ike establish-tunnel route
esr(config-ipsec-vpn)# ike gateway ike_gw1
esr(config-ipsec-vpn)# ike ipsec-policy ipsec_pol1
esr(config-ipsec-vpn)# enable
esr(config-ipsec-vpn)# exit
esr(config)# exit |
...
Настроим внешний сетевой интерфейс и определим принадлежность к зоне безопасности:
Блок кода |
---|
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 |
Создадим туннель VTI. Трафик будет перенаправляться через VTI в IPsec-туннель. В качестве локального и удаленного шлюза указываются IP-адреса интерфейсов, граничащих с WAN:
Блок кода |
---|
esr(config)# tunnel vti 1
esr(config-vti)# remote address 180.100.0.1
esr(config-vti)# local address 120.11.5.1
esr(config-vti)# enable
esr(config-vti)# exit |
Для настройки правил зон безопасности потребуется создать профиль порта протокола ISAKMP:
Блок кода |
---|
esr(config)# object-group service ISAKMP
esr(config-object-group-service)# port-range 500
esr(config-object-group-service)# exit |
Создадим статический маршрут до удаленной LAN-сети. Для каждой подсети, которая находится за IPsec-туннелем, нужно указать маршрут через VTI-туннель:
Блок кода |
---|
esr(config)# ip route 10.0.0.0/16 tunnel vti 1 |
Создадим профиль протокола IKE. В профиле укажем группу Диффи-Хэллмана 2, алгоритм шифрования AES 128 bit, алгоритм аутентификации MD5. Данные параметры безопасности используются для защиты IKE-соединения:
Блок кода |
---|
esr(config)# security ike proposal ike_prop1
esr(config-ike-proposal)# dh-group 2
esr(config-ike-proposal)# authentication algorithm md5
esr(config-ike-proposal)# encryption algorithm aes128
esr(config-ike-proposal)# exit
esr(config)# |
Scroll Pagebreak |
---|
Блок кода |
---|
esr(config)# security ike policy ike_pol1
esr(config-ike-policy)# pre-shared-key hexadecimal 123FFF
esr(config-ike-policy)# proposal ike_prop1
esr(config-ike-policy)# exit |
Создадим шлюз протокола IKE. В данном профиле указывается VTI-туннель, политика, версия протокола и режим перенаправления трафика в туннель:
Блок кода |
---|
esr(config)# security ike gateway ike_gw1
esr(config-ike-gw)# ike-policy ike_pol1
esr(config-ike-gw)# mode route-based
esr(config-ike-gw)# bind-interface vti 1
esr(config-ike-gw)# version v2-only
esr(config-ike-gw)# exit |
Создадим профиль параметров безопасности для IPsec-туннеля. В профиле укажем алгоритм шифрования AES 128 bit, алгоритм аутентификации MD5. Данные параметры безопасности используются для защиты IPsec-туннеля:
Блок кода |
---|
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)# exit |
Создадим политику для IPsec-туннеля. В политике указывается список профилей IPsec-туннеля, по которым могут согласовываться узлы:
Блок кода |
---|
esr(config)# security ipsec policy ipsec_pol1
esr(config-ipsec-policy)# proposal ipsec_prop1
esr(config-ipsec-policy)# exit |
Создадим IPsec VPN. В VPN указывается шлюз IKE-протокола, политика IP sec-туннеля, режим обмена ключами и способ установления соединения. После ввода всех параметров включим туннель командой enable:
Блок кода |
---|
esr(config)# security ipsec vpn ipsec1
esr(config-ipsec-vpn)# mode ike
esr(config-ipsec-vpn)# ike establish-tunnel route
esr(config-ipsec-vpn)# ike gateway ike_gw1
esr(config-ipsec-vpn)# ike ipsec-policy ipsec_pol1
esr(config-ipsec-vpn)# enable
esr(config-ipsec-vpn)# exit
esr(config)# exit |
Состояние туннеля можно посмотреть командой:
Блок кода |
---|
esr# show security ipsec vpn status ipsec1 |
Scroll Pagebreak |
---|
Блок кода |
---|
esr# show security ipsec vpn configuration ipsec1 |
Примечание |
---|
В firewall необходимо разрешить протокол ESP и ISAKMP (UDP-порт 500). |
...
Алгоритм настройки Policy-based IPsec VPN
...
esr(config)# security ike proposal <NAME>
...
esr(config-ike-proposal)# description<DESCRIPTION>
...
esr(config-ike-proposal)# authentication algorithm <ALGORITHM>
...
esr(config-ike-proposal)# encryption algorithm <ALGORITHM>
...
esr(config-ike-proposal)# dh-group <DH-GROUP>
...
esr(config-ike-proposal)# authentication method <METHOD>
...
<METHOD> – метод аутентификации ключа. Может принимать значения:
- pre - shared - key – метод аутентификации, использующий предварительно полученные ключи шифрования;
- public - key – метод аутентификации, использующий сертификат.
...
esr(config)# security ike policy <NAME>
...
esr(config-ike-proposal)# lifetime seconds <SEC>
...
esr(config-ike-policy)# proposal <NAME>
...
esr(config-ike-policy)#pre-shared-key ascii-text<TEXT>
...
esr(config)# security ike gateway <NAME>
...
esr(config-ike-gw)# ike-policy <NAME>
...
esr(config-ike-gw)# version <VERSION>
...
esr(config-ike-gw)#mode<MODE>
...
<MODE> – режим перенаправления трафика в туннель, принимает значения:
- policy - based – трафик перенаправляется на основе принадлежности к указанным в политиках подсетям;
- route - based – трафик перенаправляется на основе маршрутов, шлюзом у которых является туннельный интерфейс.
...
esr(config-ike-gw)# dead-peer-detection action <MODE>
...
<MODE> – режим работы DPD:
- restart – соединение переустанавливается;
- clear – соединение останавливается;
- hold – соединение поддерживается;
- none – механизм выключен, никаких действий не предпринимается.
...
esr(config-ike-gw)#dead-peer-detection interval <SEC>
...
esr(config-ike-gw)# dead-peer-detection timeout <SEC>
...
esr(config-ike-gw)# version <VERSION>
...
19
...
Установить IP подсети отправителя.
...
esr(config-ike-gw)# local network <ADDR/LEN>
[ protocol { <TYPE> | <ID> } [ port <PORT> ] ]
...
<ADDR/LEN> – IP-адрес и маска подсети отправителя. Параметр задаётся в виде AAA.BBB.CCC.DDD/EE, где каждая часть AAA – DDD принимает значения [0..255] и EE принимает значения [1..32];
<TYPE> – тип протокола, принимает значения: esp, icmp, ah, eigrp, ospf, igmp, ipip, tcp, pim, udp, vrrp, rdp, l2tp, gre;
<ID> – идентификационный номер IP-протокола, принимает значения [0x00-0xFF];
<PORT> – TCP/UDP-порт, принимает значения [1..65535].
...
20
...
Установить IP-адрес локального шлюза IPsec-туннеля.
...
esr(config-ike-gw)#local address <ADDR>
...
<ADDR> – IP-адрес локального шлюза.
...
21
...
Установить IP-адрес удаленного шлюза IPsec-туннеля.
...
esr(config-ike-gw)#remote address <ADDR>
...
<ADDR> – IP-адрес удаленного шлюза.
...
22
...
Установить IP-адрес подсети получателя, а также IP-протокол и порт.
...
esr(config-ike-gw)# remote network <ADDR/LEN>
[ protocol { <TYPE> | <ID> } [ port <PORT> ] ]
...
<ADDR/LEN> – IP-адрес и маска подсети отправителя. Параметр задаётся в виде AAA.BBB.CCC.DDD/EE, где каждая часть AAA – DDD принимает значения [0..255] и EE принимает значения [1..32];
<TYPE> – тип протокола, принимает значения: esp, icmp, ah, eigrp, ospf, igmp, ipip, tcp, pim, udp, vrrp, rdp, l2tp, gre;
<ID> – идентификационный номер IP-протокола, принимает значения [0x00-0xFF];
<PORT> – TCP/UDP-порт, принимает значения [1..65535].
...
23
...
Создать профиль IPsec.
...
esr(config)# security ipsec proposal <NAME>
...
<NAME> – имя профиля протокола IPsec, задаётся строкой до 31 символа.
...
24
...
Определить алгоритм аутентификации для IPsec.
...
esr(config-ipsec-proposal)# authentication algorithm <ALGORITHM>
...
<ALGORITHM> – алгоритм аутентификации, принимает значения: md5, sha1, sha2-256, sha2‑384, sha2-512.
...
26
...
Определить алгоритм шифрования для IPsec.
...
esr(config-ipsec-proposal)# encryption algorithm <ALGORITHM>
...
<ALGORITHM> – протокол шифрования, принимает значения: des, 3des, blowfish128, blowfish192, blowfish256, aes128, aes192, aes256, aes128ctr, aes192ctr, aes256ctr, camellia128, camellia192, camellia256.
...
26
...
Указать протокол (не обязательно).
...
esr(config-ipsec-proposal)#protocol <PROTOCOL>
...
<PROTOCOL> – инкапсулирующий протокол, принимает значения.
...
27
...
Создать политику для профиля IPsec и перейти в режим её конфигурирования.
...
esr(config)# security ipsec policy <NAME>
...
<NAME> – имя политики IPsec, задаётся строкой до 31 символа.
...
28
...
Привязать политику к профилю.
...
esr(config-ipsec-policy)# proposal <NAME>
...
<NAME> – имя профиля протокола IPsec, задаётся строкой до 31 символа.
...
29
...
Задать время жизни IPsec-туннеля (не обязательно).
...
esr(config-ipsec-policy)# lifetime { seconds <SEC> |
packets <PACKETS> | kilobytes <KB> }
...
<SEC> – период времени жизни IPsec-туннеля, по истечении которого происходит пересогласование. Принимает значения [1140..86400] секунд.
<PACKETS> – количество пакетов, после передачи которых происходит пересогласование IPsec-туннеля. Принимает значения [4..86400].
<KB> – объем трафика, после передачи которого происходит пересогласование IPsec-туннеля. Принимает значения [4..86400] секунд.
...
30
...
Создать IPsec VPN и перейти в режим конфигурирования.
...
esr(config)# security ipsecvpn <NAME>
...
<NAME> – имя VPN, задаётся строкой до 31 символа.
...
31
...
Определить режим согласования данных, необходимых для активации VPN.
...
esr(config-ipsec-vpn)# mode <MODE>
...
<MODE> – режим работы VPN.
...
32
...
Привязать IPsec политику к VPN.
...
esr(config-ipsec-vpn)#ike ipsec-policy <NAME>
...
<NAME> – имя IPsec-политики, задаётся строка до 31 символа.
...
33
...
Задать значение DSCP для использования в IP-заголовке исходящих пакетов IKE-протокола (не обязательно).
...
esr(config-ipsec-vpn)#ike dscp <DSCP>
...
<DSCP> – значение кода DSCP, принимает значения в диапазоне [0..63].
...
34
...
Установить режим активации VPN.
...
esr(config-ipsec-vpn)#ike establish-tunnel <MODE>
...
<MODE> – режим активации VPN:
- by - request – соединение активируется встречной стороной;
- route – соединение активируется при появлении трафика, маршрутизируемого в туннель;
- immediate – туннель активируется автоматически после применения конфигурации.
...
35
...
Осуществить привязку IKE-шлюза к VPN.
...
esr(config-ipsec-vpn)# ike gateway <NAME>
...
<NAME> – имя IKE-шлюза, задаётся строкой до 31 символа.
...
36
...
Установить значение временного интервала в секундах, по истечению которого соединение закрывается, если не было принято или передано ни одного пакета через SA (не обязательно).
...
esr(config-ipsec-vpn)# ike idle-time <TIME>
...
<TIME> – интервал в секундах, принимает значения [4..86400].
...
37
...
Отключить пересогласование ключей до разрыва IKE-соединения по истечению времени, количеству переданных пакетов или байт (не обязательно).
...
esr(config-ipsec-vpn)#ike rekey disable
...
38
...
Настроить начало пересогласования ключей IKE-соединения до истечения времени жизни (не обязательно).
...
esr(config-ipsec-vpn)# Ike rekey margin { seconds <SEC> |
packets <PACKETS> | kilobytes <KB> }
...
<SEC> – интервал времени в секундах, оставшийся до закрытия соединения (задается командой lifetimeseconds) . Принимает значения [4..86400].
<PACKETS> – количество пакетов, оставшихся до закрытия соединения (задается командой lifetimepackets). Принимает значения [4..86400].
<KB> – объем трафика в килобайтах, оставшийся до закрытия соединения (задается командой lifetimekilobytes). Принимает значения [4..86400].
...
39
...
Установить уровень случайного разброса значений параметров marginseconds, marginpackets, marginkilobytes (не обязательно).
...
esr(config-ipsec-vpn)# ike rekey randomization <VALUE>
...
<VALUE> – максимальный процент разброса значений, принимает значения [1..100].
...
40
...
Описать VPN (не обязательно).
...
esr(config-ipsec-vpn)# description <DESCRIPTION>
...
<DESCRIPTION> – описание профиля, задаётся строкой до 255 символов.
...
41
...
Активировать IPsec VPN.
...
esr(config-ipsec-vpn)# enable
...
Задача:
Настроить IPsec-туннель между R1 и R2.
R1 IP-адрес – 198.51.100.1;
R2 IP-адрес – 203.0.113.1;
Scroll Pagebreak |
---|
- группа Диффи-Хэллмана: 2;
- алгоритм шифрования: AES 128 bit;
- алгоритм аутентификации: MD5.
IPsec:
- алгоритм шифрования: AES 128 bit;
- алгоритм аутентификации: MD5.
Решение:
...
Настроим внешний сетевой интерфейс и определим принадлежность к зоне безопасности:
Блок кода |
---|
esr# configure
esr(config)# interface gigabitethernet 1/0/1
esr(config-if-gi)# ip address 198.51.100.1/24
esr(config-if-gi)# security-zone untrusted
esr(config-if-gi)# exit |
Для настройки правил зон безопасности потребуется создать профиль порта протокола ISAKMP:
Блок кода |
---|
esr(config)# object-group service ISAKMP
esr(config-object-group-service)# port-range 500
esr(config-object-group-service)# exit |
Создадим профиль протокола IKE. В профиле укажем группу Диффи-Хэллмана 2, алгоритм шифрования AES 128 bit, алгоритм аутентификации MD5. Данные параметры безопасности используются для защиты IKE-соединения:
Блок кода |
---|
esr(config)# security ike proposal ike_prop1
esr(config-ike-proposal)# dh-group 2
esr(config-ike-proposal)# authentication algorithm md5
esr(config-ike-proposal)# encryption algorithm aes128
esr(config-ike-proposal)# exit |
Создадим политику протокола IKE. В политике указывается список профилей протокола IKE, по которым могут согласовываться узлы и ключ аутентификации:
Блок кода |
---|
esr(config)# security ike policy ike_pol1
esr(config-ike-policy)# pre-shared-key hexadecimal 123FFF
esr(config-ike-policy)# proposal ike_prop1
esr(config-ike-policy)# exit |
Scroll Pagebreak |
---|
Блок кода |
---|
esr(config)# security ike gateway ike_gw1
esr(config-ike-gw)# ike-policy ike_pol1
esr(config-ike-gw)# local address 198.51.100.1
esr(config-ike-gw)# local network 10.0.0.0/16
esr(config-ike-gw)# remote address 203.0.113.1
esr(config-ike-gw)# remote network 192.0.2.0/24
esr(config-ike-gw)# mode policy-based
esr(config-ike-gw)# exit |
Создадим профиль параметров безопасности для IPsec-туннеля. В профиле укажем алгоритм шифрования AES 128 bit, алгоритм аутентификации MD5. Данные параметры безопасности используются для защиты IPsec-туннеля:
Блок кода |
---|
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)# exit |
Создадим политику для IPsec-туннеля. В политике указывается список профилей IPsec-туннеля, по которым могут согласовываться узлы:
Блок кода |
---|
esr(config)# security ipsec policy ipsec_pol1
esr(config-ipsec-policy)# proposal ipsec_prop1
esr(config-ipsec-policy)# exit |
Создадим IPsec VPN. В VPN указывается шлюз IKE-протокола, политика IPsec-туннеля, режим обмена ключами и способ установления соединения. После ввода всех параметров включим туннель командой enable:
Блок кода |
---|
esr(config)# security ipsec vpn ipsec1
esr(config-ipsec-vpn)# mode ike
esr(config-ipsec-vpn)# ike establish-tunnel route
esr(config-ipsec-vpn)# ike gateway ike_gw1
esr(config-ipsec-vpn)# ike ipsec-policy ipsec_pol1
esr(config-ipsec-vpn)# enable
esr(config-ipsec-vpn)# exit
esr(config)# exit |
...
Настроим внешний сетевой интерфейс и определим принадлежность к зоне безопасности:
Блок кода |
---|
esr# configure
esr(config)# interface gi 1/0/1
esr(config-if)# ip address 203.0.113.1/24
esr(config-if)# security-zone untrusted
esr(config-if)# exit |
Scroll Pagebreak |
---|
Блок кода |
---|
esr(config)# object-group service ISAKMP
esr(config-addr-set)# port-range 500
esr(config-addr-set)# exit |
Создадим профиль протокола IKE. В профиле укажем группу Диффи-Хэллмана 2, алгоритм шифрования AES 128 bit, алгоритм аутентификации MD5. Данные параметры безопасности используются для защиты IKE-соединения:
Блок кода |
---|
esr(config)# security ike proposal ike_prop1
esr(config-ike-proposal)# dh-group 2
esr(config-ike-proposal)# authentication algorithm md5
esr(config-ike-proposal)# encryption algorithm aes128
esr(config-ike-proposal)# exit
esr(config)# |
Создадим политику протокола IKE. В политике указывается список профилей протокола IKE, по которым могут согласовываться узлы и ключ аутентификации:
Блок кода |
---|
esr(config)# security ike policy ike_pol1
esr(config-ike-policy)# pre-shared-key hexadecimal 123FFF
esr(config-ike-policy)# proposal ike_prop1
esr(config-ike-policy)# exit |
Создадим шлюз протокола IKE. В данном профиле указывается VTI-туннель, политика, версия протокола и режим перенаправления трафика в туннель:
Блок кода |
---|
esr(config)# security ike gateway ike_gw1
esr(config-ike-gw)# ike-policy ike_pol1
esr(config-ike-gw)# remote address 198.51.100.1
esr(config-ike-gw)# remote network 10.0.0.0/16
esr(config-ike-gw)# local address 203.0.113.1
esr(config-ike-gw)# local network 192.0.2.0/24
esr(config-ike-gw)# mode policy-based
esr(config-ike-gw)# exit |
Создадим профиль параметров безопасности для IPsec-туннеля. В профиле укажем алгоритм шифрования AES 128 bit, алгоритм аутентификации MD5. Данные параметры безопасности используются для защиты IPsec-туннеля:
Блок кода |
---|
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)# exit |
Создадим политику для IPsec-туннеля. В политике указывается список профилей IPsec-туннеля, по которым могут согласовываться узлы:
Блок кода |
---|
esr(config)# security ipsec policy ipsec_pol1
esr(config-ipsec-policy)# proposal ipsec_prop1
esr(config-ipsec-policy)# exit |
Scroll Pagebreak |
---|
Блок кода |
---|
esr(config)# security ipsec vpn ipsec1
esr(config-ipsec-vpn)# mode ike
esr(config-ipsec-vpn)# ike establish-tunnel route
esr(config-ipsec-vpn)# ike gateway ike_gw1
esr(config-ipsec-vpn)# ike ipsec-policy ipsec_pol1
esr(config-ipsec-vpn)# enable
esr(config-ipsec-vpn)# exit
esr(config)# exit |
Состояние туннеля можно посмотреть командой:
Блок кода |
---|
esr# show security ipsec vpn status ipsec1 |
Конфигурацию туннеля можно посмотреть командой:
Блок кода |
---|
esr# show security ipsec vpn configuration ipsec1 |
Примечание |
---|
В firewall необходимо разрешить протокол ESP и ISAKMP (UDP-порт 500). |
Алгоритм настройки Remote Access IPsec VPN
Remote Access IPsec VPN – сценарий организации временных VPN-подключений, в котором сервер IPsec VPN находится в режиме ожидания входящих подключений, а клиенты осуществляют временные подключения к серверу для получения доступа к сетевым ресурсам.
Дополнительной особенностью RA IPsec VPN является возможность использования второго фактора аутентификации IPsec – Extended Authentication (XAUTH), вторым фактором аутентификации является пара логин-пароль для клиента IPsec VPN.
...
esr(config)# security ike proposal <NAME>
...
esr(config-ike-proposal)# description <DESCRIPTION>
...
esr(config-ike-proposal)# authentication algorithm <ALGORITHM>
...
esr(config-vti)# ip address <ADDR/LEN>
...
esr(config-ike-proposal)# dh-group <DH-GROUP>
...
<DH-GROUP> – номер группы Диффи-Хэллмана, принимает значения [1, 2, 5, 14, 15, 16, 17, 18].
Значение по умолчанию: 1.
...
esr(config)# security ike policy <NAME>
...
esr(config-ike- policy)# authentication method <METHOD>
...
<METHOD> – метод аутентификации ключа. Может принимать значения:
- xauth - psk - key – метод двухфакторной аутентификации, использующий пару логин-пароль и предварительно полученные ключи шифрования.
...
esr(config-ike- policy)# authentication mode client
...
esr(config-ike- policy)# lifetime seconds <SEC>
...
<SEC> – период времени, принимает значения [4 ..86400] секунд.
Значение по умолчанию: 3600.
...
esr(config-ike-policy)# proposal <NAME>
...
esr(config-ike-policy)#pre-shared-key ascii-text <TEXT>
...
esr(config)# access profile <NAME>
...
esr(config-access-profile)# user <LOGIN>
...
esr(config-profile)# password ascii-text <TEXT>
...
esr(config)# address-assignment pool <NAME>
...
esr(config-pool)# ip prefix <ADDR/LEN>
...
esr(config)# security ike gateway <NAME>
...
esr(config-ike-gw)# ike-policy <NAME>
...
esr(config-ike-gw)# mode <MODE>
...
<MODE> – режим перенаправления трафика в туннель, принимает значения:
- policy - based – трафик перенаправляется на основе принадлежности к указанным в политиках подсетям.
...
esr(config-ike-gw)# dead-peer-detection action <MODE>
...
<MODE> – режим работы DPD:
- restart – соединение переустанавливается;
- clear – соединение останавливается;
- hold – соединение поддерживается;
- none – механизм выключен, никаких действий не предпринимается.
Значение по умолчанию: none.
...
esr(config-ike-gw)#dead-peer-detection interval <SEC>
...
<SEC> – интервал между отправкой сообщений механизмом DPD, принимает значения [1..180] секунд.
Значение по умолчанию: 2.
...
esr(config-ike-gw)# dead-peer-detection timeout <SEC>
...
<SEC> – период времени для ответа на сообщения механизма DPD, принимает значения [1..180] секунд.
Значение по умолчанию: 30.
...
esr(config-ike-gw)# version <VERSION>
...
<VERSION> – версия IKE-протокола: v1-only или v2-only.
Значение по умолчанию: v1-only
...
esr(config-ike-gw)# local network <ADDR/LEN>
[ protocol { <TYPE> | <ID> } [ port <PORT> ] ]
...
<ADDR/LEN> – IP-адрес и маска подсети отправителя. Параметр задаётся в виде AAA.BBB.CCC.DDD/EE, где каждая часть AAA – DDD принимает значения [0..255] и EE принимает значения [1..32];
<TYPE> – тип протокола, принимает значения: esp, icmp, ah, eigrp, ospf, igmp, ipip, tcp, pim, udp, vrrp, rdp, l2tp, gre;
<ID> – идентификационный номер IP-протокола, принимает значения [0x00-0xFF];
<PORT> – TCP/UDP порт, принимает значения [1..65535].
...
esr(config-ike-gw)#local address <ADDR>
...
esr(config-ike-gw)#remote address [any | <ADDR/LEN>
[ protocol { <TYPE> | <ID> } [ port <PORT> ] ]
...
Any – установить в качестве удаленного адреса – любой адрес клиента, в конфигурации сервера;
<ADDR/LEN> – IP-адрес и маска подсети сервера, в конфигурации клиента.
...
esr(config-ike-gw)# remote network dynamic pool <NAME>
...
esr(config-ike-gw)# remote network dynamic client
...
esr(config-ike-gw)# xauth access-profile <NAME>
...
esr(config-ike-gw)# xauth access-profile <NAME> client <LOGIN>
...
<NAME> – имя профиля доступа, задаётся строкой до 31 символа;
<LOGIN> – логин клиента, задаётся строкой до 31 символа.
...
esr(config-ike-gw)# assign-interface loopback <INDEX>
...
esr(config)# security ipsec proposal <NAME>
...
esr(config-ipsec-proposal)# authentication algorithm <ALGORITHM>
...
<ALGORITHM> – алгоритм аутентификации, принимает значения: md5, sha1, sha2-256, sha2‑384, sha2-512.
Значение по умолчанию: sha1.
...
esr(config-ipsec-proposal)# encryption algorithm <ALGORITHM>
...
<ALGORITHM> – протокол шифрования, принимает значения: des, 3des, blowfish128, blowfish192, blowfish256, aes128, aes192, aes256, aes128ctr, aes192ctr, aes256ctr, camellia128, camellia192, camellia256.
Значение по умолчанию: 3des.
...
esr(config-ipsec-proposal)#protocol <PROTOCOL>
...
<PROTOCOL> – инкапсулирующий протокол, принимает значения:
- ah – данный протокол осуществляет только аутентификацию трафика, шифрование данных не выполняется;
- esp – данный протокол осуществляет аутентификацию и шифрование трафика.
Значение по умолчанию: esp.
...
esr(config)# security ipsec policy <NAME>
...
esr(config-ipsec-policy)# proposal <NAME>
...
esr(config-ipsec-policy)# lifetime { seconds <SEC> |
packets <PACKETS> | kilobytes <KB> }
...
<SEC> – период времени жизни IPsec-туннеля, по истечении которого происходит пересогласование.
Принимает значения [1140..86400] секунд.
Значение по умолчанию: 540.
<PACKETS> – количество пакетов, после передачи которых происходит пересогласование IPsec-туннеля.
Принимает значения [4..86400].
Значение по умолчанию: отключено.
<KB> – объем трафика, после передачи которого происходит пересогласование IPsec-туннеля. Принимает значения [4..86400] секунд.
Значение по умолчанию: отключено.
...
esr(config)# security ipsec vpn <NAME>
...
esr(config-ipsec-vpn)# mode <MODE>
...
esr(config-ipsec-vpn)#ike ipsec-policy <NAME>
...
esr(config-ipsec-vpn)#ike dscp <DSCP>
...
DSCP> – значение кода DSCP, принимает значения в диапазоне [0..63].
Значение по умолчанию: 63.
...
esr(config-ipsec-vpn)#ike establish-tunnel <MODE>
...
<MODE> – режим активации VPN:
- by - request – соединение активируется встречной стороной, доступно для сервера;
- route – соединение активируется при появлении трафика, маршрутизируемого в туннель, доступно для сервера;
- immediate – туннель активируется автоматически после применения конфигурации, доступно для клиента.
...
esr(config-ipsec-vpn)# ike gateway <NAME>
...
esr(config-ipsec-vpn)# ike idle-time <TIME>
...
<TIME> – интервал в секундах, принимает значения [4..86400].
Значение по умолчанию: 0.
...
esr(config-ipsec-vpn)#ike rekey disable
...
esr(config-ipsec-vpn)# ike rekey margin { seconds <SEC> |
packets <PACKETS> | kilobytes <KB> }
...
<SEC> – интервал времени в секундах, оставшийся до закрытия соединения (задается командой lifetimeseconds) . Принимает значения [4..86400].
Значение по умолчанию: 540
<PACKETS> – количество пакетов, оставшихся до закрытия соединения (задается командой lifetimepackets). Принимает значения [4..86400].
Значение по умолчанию: отключено.
<KB> – объем трафика в килобайтах, оставшийся до закрытия соединения (задается командой lifetimekilobytes). Принимает значения [4..86400].
Значение по умолчанию: отключено.
...
esr(config-ipsec-vpn)# ike rekey randomization <VALUE>
...
<VALUE> – максимальный процент разброса значений, принимает значения [1..100].
Значение по умолчанию: 100.
...
esr(config-ipsec-vpn)# description <DESCRIPTION>
...
esr(config-ipsec-vpn)# enable
...
esr(config-ipsec-vpn)# security ike session uniqueids <MODE>
...
<MODE> – режим переподключения, принимает следующие значения:
- no – установленное подключение XAUTH будет удалено, если для нового подключения XAUTH инициатором соединения будет отправлено уведомление "INITIAL_CONTACT", будет назначен ранее использованный IP-адрес. В противном случае, установленное соединение XAUTH будет удержано. Для нового подключения XAUTH будет назначен новый IP-адрес.
- never – установленное подключение XAUTH будет удержано. Для нового подключения XAUTH будет назначен новый IP-адрес. Уведомление "INITIAL_CONTACT" будет в любом случае проигнорировано.
- replace – установленное подключение XAUTH будет удалено. Для нового подключения XAUTH будет использован ранее использованный IP-адрес.
- keep – установленное подключение XAUTH будет удержано. Новое подключение XAUTH будет отклонено.
Пример настройки Remote Access IPsec VPN
Задача:
Настроить Remote Access IPsec VPN между R1 и R2 с использованием второго фактора аутентификации IPsec - XAUTH. В качестве сервера IPsec VPN настроить устройство R1, а устройство R2 в качестве клиента IPsec VPN.
R2 IP-адрес – 120.11.5.1;
R1 IP-адрес – 180.100.0.1;
Клиентам IPsec VPN:
- выдавать адреса из пула подсети 192.0.2.0/24
- предоставлять доступ до LAN подсети 10.0.0.0/16
IKE:
- группа Диффи-Хэллмана: 2;
- алгоритм шифрования: 3DES;
- алгоритм аутентификации: SHA1.
IPsec:
- алгоритм шифрования: 3DES;
- алгоритм аутентификации: SHA1.
XAUTH:
- логин: client1;
- пароль: password123.
Решение:
Конфигурирование 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 |
---|
Блок кода |
---|
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 |
Конфигурирование 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 |
---|
Блок кода |
---|
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-протокола, политика IPsec-туннеля, режим обмена ключами и способ установления соединения. После ввода всех параметров включим туннель командой 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). |
...
Задача:
Настроить Dead Peed Detection на R1 для Policy-based Ipsec VPN между R1 и R2.
Исходную конфигурацию можно взять из примера настройки Policy-based IPsec VPN.
Решение:
На R1 в шлюзе протокола IKE укажем: режим работы DPD – restart, интервал опроса – 1 секунду, таймаут – 4 секунды:
Блок кода |
---|
esr# configure
esr(config)# security ike gateway ike_gw1
esr(config-ike-gw)# dead-peer-detection action restart
esr(config-ike-gw)# dead-peer-detection interval 1
esr(config-ike-gw)# dead-peer-detection timeout 4
esr(config-ike-gw)# exit |
Состояние туннеля можно посмотреть командой:
Блок кода |
---|
esr# show security ipsec vpn status ipsec1 |
Конфигурацию туннеля можно посмотреть командой:
Блок кода |
---|
esr# show security ipsec vpn configuration ipsec1 |
После разрыва соединения между R1 и R2 на R1 IPsec-туннель начнет перестраиваться спустя 4 секунды после разрыва.
Блок кода |
---|
esr# show security ipsec vpn status
Name Local host Remote host Initiator spi Responder spi State
------------------------------- --------------- --------------- ------------------ ------------------ -----------
ipsec1 198.51.100.1 203.0.113.1 0x7a77a25a55853255 0xb62fd04f2db43d08 Established
2037-10-30T07:52:53+00:00 %CLI-I-CMD: user admin from console input: show security ipsec vpn status
esr# show security ipsec vpn status
Name Local host Remote host Initiator spi Responder spi State
------------------------------- --------------- --------------- ------------------ ------------------ -----------
ipsec1 198.51.100.1 203.0.113.1 0x77706e37b4e68cce 0x0000000000000000 Connecting
2037-10-30T07:52:57+00:00 %CLI-I-CMD: user admin from console input: show security ipsec vpn status |
...
LT (англ. Logical Tunnel – логический туннель) – тип туннелей, предназначенный для передачи маршрутной информации и трафика между различными виртуальными устройствами (VRF), сконфигурированными на одном аппаратном устройстве. LT-туннель может использоваться для организации взаимодействия между двумя или более VRF с применением ограничений firewall.
Алгоритм настройки
...
esr(config)# tunnel lt <ID>
...
esr(config-lt)# description <DESCRIPTION>
...
3
...
Включить каждый LT-туннель в соответствующий VFR.
...
esr(config-lt)# ip vrf forwarding <VRF>
...
<VRF> – имя VRF, задается строкой до 31 символа.
...
4
...
Включить каждый LT-туннель в зону безопасности и настроить правила взаимодействия между зонами или отключить firewall для LT-туннеля.
esr(config-lt)# security-zone<NAME>
...
<NAME> – имя зоны безопасности, задаётся строкой до 12 символов.
...
esr(config-lt)# ip firewall disable
...
5
...
Для каждого LT-туннеля задать номер противоположный LT-туннель (в другом VRF).
...
esr(config-lt)# peer lt <ID>
...
<ID> – идентификатор туннеля в диапазоне [1..128].
...
6
...
Для каждого LT-туннеля указать IP-адрес для маршрутизации пакетов. Для взаимодействующих LT-туннелей, IP-адреса должны быть из одной IP-подсети.
...
esr(config-lt)# ip address <ADDR/LEN>
...
<ADDR/LEN> – IP-адрес и префикс подсети, задаётся в виде AAA.BBB.CCC.DDD/EE, где каждая часть AAA – DDD принимает значения [0..255] и EE принимает значения [1..32].
...
7
...
Включить туннели.
...
esr(config-lt)# enable
...
8
...
Для каждого VRF настроить необходимые протоколы маршрутизации через LT-туннель.
...
9
...
Задать интервал времени, за который усредняется статистика о нагрузке на туннеле (не обязательно).
...
esr(config-lt)# load-average <TIME>
...
<TIME> – интервал в секундах, принимает значения [5..150].
Значение по умолчанию: 5.
...
10
...
Указать размер MTU (Maximum Transmition Unit) пакетов, которые может пропускать данный bridge (не обязательно; возможно, если в bridge включен только VLAN).
MTU более 1500 будет активно только в случае применения команды "system jumbo-frames".
...
esr(config-lt)# mtu <MTU>
...
<MTU> – значение MTU, принимает значения в диапазоне:
- для ESR-10/12V(F)/14VF/15 и WLC-15 – [1280..9600];
- для ESR-20/21/30 и WLC-30 – [1280..9500];
- для ESR-100/200/1000/
1200/1500/1511/1700/3100/3200 и WLC-3200 – [1280..10000].
Значение по умолчанию: 1500.
Scroll Pagebreak |
---|
Задача:
Организовать взаимодействие между хостами, терминированными в двух VRF vrf_1 и vrf_2.
Исходная конфигурация:
Блок кода |
---|
hostname esr
ip vrf vrf_1
exit
ip vrf vrf_2
exit
interface gigabitethernet 1/0/1
ip vrf forwarding vrf_1
ip firewall disable
ip address 10.0.0.1/24
exit
interface gigabitethernet 1/0/2
ip vrf forwarding vrf_2
ip firewall disable
ip address 10.0.1.1/24
exit |
Решение:
Создадим LT-туннели для каждого VRF с указанием IP-адресов из одной подсети:
Блок кода |
---|
esr(config)# tunnel lt 1
esr(config-lt)# ip vrf forwarding vrf_1
esr(config-lt)# ip firewall disable
esr(config-lt)# ip address 192.168.0.1/30
esr(config-lt)# exit
esr(config)# tunnel lt 2
esr(config-lt)# ip vrf forwarding vrf_2
esr(config-lt)# ip firewall disable
esr(config-lt)# ip address 192.168.0.2/30
esr(config-lt)# exit |
Укажем для каждого LT-туннеля LT-туннель из VRF, с которым необходимо установить связь, и активируем их:
Блок кода |
---|
esr(config)# tunnel lt 1
esr(config-lt)# peer lt 2
esr(config-lt)# enable
esr(config-lt)# exit
esr(config)# tunnel lt 2
esr(config-lt)# peer lt 1
esr(config-lt)# enable
esr(config-lt)# exit |
...
Если в VRF не сконфигурирован ни один из протоколов динамической маршрутизации, то необходимо указать статические маршруты для каждого VRF:
Блок кода |
---|
esr(config)# ip route vrf vrf_1 0.0.0.0/0 192.168.0.2
esr(config)# ip route vrf vrf_2 0.0.0.0/0 192.168.0.1 |
Алгоритм и примеры настройки функций управления туннелированием см. в документации ESR.
Примечание |
---|
Значения параметров для WLC-15/30/3200 идентичны значениям для ESR-15/15R/30/3200 соответственно. |