Управление туннелированием
Настройка GRE-туннелей
GRE (англ. Generic Routing Encapsulation — общая инкапсуляция маршрутов) — протокол туннелирования сетевых пакетов. Его основное назначение — инкапсуляция пакетов сетевого уровня сетевой модели OSI в IP-пакеты. GRE может использоваться для организации VPN на 3-м уровне модели OSI. В маршрутизаторе ESR реализованы статические неуправляемые GRE-туннели, то есть туннели создаются вручную путем конфигурирования на локальном и удаленном узлах. Параметры туннеля для каждой из сторон должны быть взаимосогласованными или переносимые данные не будут декапсулироваться партнером.
Алгоритм настройки
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Сконфигурировать L3-интерфейс, от которого будет строиться GRE-туннель. | ||
2 | Создать GRE-туннель и перейти в режим его конфигурирования. | esr(config)# tunnel gre <INDEX> | <INDEX> – идентификатор туннеля в диапазоне:
|
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 |
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> – идентификационный номер моста, принимает значения в диапазоне:
|
10 | Включить GRE-туннель в зону безопасности и настроить правила взаимодействия между зонами или отключить firewall (см. раздел Конфигурирование Firewall). | esr(config-gre)# security-zone<NAME> | <NAME> – имя зоны безопасности, задаётся строкой до 12 символов. |
esr(config-gre)# ip firewall disable | |||
11 | Указать размер MTU (MaximumTransmitionUnit) для туннеля (не обязательно). | esr(config-gre)# mtu <MTU> | <MTU> – значение MTU, принимает значения в диапазоне:
Значение по умолчанию: 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-туннеля возможно настроить:
|
Пример настройки 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
CODEВключить проверку наличия и корректности контрольной суммы GRE для входящего трафика:
esr(config-gre)# remote checksum
CODEУказать уникальный идентификатор:
esr(config-gre)# key 15808
CODEУказать значение DSCP, MTU, TTL:
esr(config-gre)# dscp 44 esr(config-gre)# mtu 1426 esr(config-gre)# ttl 18
CODEВключить и настроить механизм keepalive:
esr(config-gre)# keepalive enable esr(config-gre)# keepalive timeout <TIME> esr(config-gre)# keepalive retries <VALUE>
CODE
Состояние туннеля можно посмотреть командой:
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. |
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];
|
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> } |
<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 символа;
|
12 | Включить работу протокола NHRP. | esr(config-gre)# ip nhrp enable | |
13 | Организовать IP-связность посредством протокола динамической маршрутизации. | ||
Остальные настройки - аналогичны настройкам статичного GRE-туннеля (см. раздел Настройка GRE-туннелей) |
Пример настройки 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
CODEУкажем IP-адрес интерфейса, граничащего с ISP:
esr(config-gre)# local address 150.115.0.5
CODEЗададим значение MTU:
esr(config-gre)# mtu 1416
CODEУстановим значение ttl:
esr(config-gre)# ttl 16
CODEЗададим IP-адрес GRE-туннеля:
esr(config-gre)# ip address 10.10.0.5/24
CODEПереведём GRE-туннель в mutipoint режим для возможности соединения с несколькими точками:
esr(config-gre)# multipoint
CODEПерейдём к настройке NHRP. Настроим отправку мультикастовых рассылок в динамически узнаваемые адреса:
esr(config-gre)# ip nhrp multicast dynamic
CODEПроизведём настройку протокола динамической маршрутизации для 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
CODEПроизведём настройку 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
CODEesr(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
CODEesr(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
CODEesr(config)# security ipsec proposal IPSECPROP esr(config-ipsec-proposal)# encryption algorithm aes128 esr(config-ipsec-proposal)# exit
CODEesr(config)# security ipsec policy IPSECPOLICY esr(config-ipsec-policy)# proposal IPSECPROP esr(config-ipsec-policy)# exit
CODEesr(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
CODEПривяжем IPsec к GRE-туннелю, чтобы клиенты могли устанавливать шифрованное соединение:
esr(config-gre)# ip nhrp ipsec IPSECVPN dynamic
CODEВключим работу NHRP и сам туннель:
esr(config-gre)# ip nhrp enable esr(config-gre)# enable
CODE- Конфигурирование 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
CODEУказываем сколько времени будет храниться запись о клиенте на сервере:
esr(config-gre)# ip nhrp holding-time 300
CODEУказываем туннельный адрес NHS:
esr(config-gre)# ip nhrp nhs 10.10.0.5/24
CODEЗададим соответствие туннельному адресу – реальный:
esr(config-gre)# ip nhrp map 10.10.0.5 150.115.0.5
CODEНастроим мультикастовую рассылку на NHRP сервер:
esr(config)# ip nhrp multicast nhs
CODEПроизведём настройку 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
CODEПроизведём настройку 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
CODEesr(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
CODEesr(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
CODEesr(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
CODEesr(config)# security ipsec proposal IPSECPROP esr(config-ipsec-proposal)# encryption algorithm aes128 esr(config-ipsec-proposal)# exit
CODEesr(config)# security ipsec policy IPSECPOLICY esr(config-ipsec-policy)# proposal IPSECPROP esr(config-ipsec-policy)# exit
CODEesr(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
CODEesr(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
CODEПривяжем IPsec к GRE-туннелю, для возможности установления шифрованного соединения с сервером и с другими клиентами сети:
esr(config-gre)# ip nhrp ipsec IPSECVPN_HUB static esr(config-gre)# ip nhrp ipsec IPSECVPN_SPOKE dynamic
CODEВключим работу NHRP и сам туннель:
esr(config-gre)# ip nhrp enable esr(config-gre)# enable
CODEСостояние NHRP-записей можно посмотреть командой:
esr# show ip nhrp
CODEОчистить NHRP-записи можно командой:
esr# clear ip nhrp
CODE
Пример настройки 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
CODEНастроим интерфейс и определим принадлежность к зоне безопасности.
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
CODEНастроим 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
CODEСоздадим статические маршруты для подсетей интерфейсов 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
CODEПроизведём настройку 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
CODEesr(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
CODEesr(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
CODEesr(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
CODEesr(config)# security ipsec policy ipsec_pol1 esr(config-ipsec-policy)# proposal ipsec_prop1 esr(config-ipsec-policy)# exit
CODEesr(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
CODEПривяжем IPsec к GRE-туннелю, чтобы клиенты могли устанавливать шифрованное соединение.
esr(config)# tunnel gre 1 esr(config-gre)# ip nhrp ipsec ipsec_spoke dynamic esr(config-gre)# exit
CODEКонфигурирование spoke1
Предварительно настроим протокол 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
CODEНастроим интерфейс и определим принадлежность к зоне безопасности.
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
CODEНастроим 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
CODEСоздадим статические маршруты для подсетей интерфейсов 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
CODEПроизведём настройку 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
CODEesr(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
CODEesr(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
CODEesr(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
CODEesr(config)# security ipsec policy ipsec_pol1 esr(config-ipsec-policy)# proposal ipsec_prop1 esr(config-ipsec-policy)# exit
CODEesr(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
CODEПривяжем 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
CODEСостояние NHRP-записей можно посмотреть командой.
esr# show ip nhrp
CODEДополнительно в security zone-pair untrusted self необходимо разрешить протоколы для GRE over IPSec-туннеля.
esr(config)# security zone-pair untrusted self esr(config-zone-pair)# rule 10 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 11 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 12 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
CODE
Настройка L2TPv3-туннелей
L2TPv3 (Layer 2 Tunneling Protocol Version 3) — протокол для туннелирования пакетов 2-го уровня модели OSI между двумя IP-узлами. В качестве инкапсулирующего протокола используется IP или UDP. L2TPv3 может использоваться как альтернатива MPLS P2P L2VPN (VLL) для организации VPN уровня L2. В маршрутизаторе ESR реализованы статические неуправляемые L2TPv3-туннели, то есть туннели создаются вручную путем конфигурирования на локальном и удаленном узлах. Параметры туннеля на каждой из сторон должны быть взаимосогласованными или переносимые данные не будут декапсулироваться партнером.
Алгоритм настройки
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Сконфигурировать L3-интерфейс, от которого будет строиться L2TPv3-туннель. |
| |
2 | Создать L2TPv3-туннель и перейти в режим его конфигурирования. | esr(config)# tunnel l2tpv3 <INDEX> | <INDEX> – идентификатор туннеля в диапазоне:
|
3 | Указать описание конфигурируемого туннеля (не обязательно). | esr(config-l2tpv3)# description <DESCRIPTION> | <DESCRIPTION> – описание туннеля, задаётся строкой до 255 символов. |
4 | Установить локальный 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> – тип инкапсуляции, возможные значения:
|
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]. |
10 | Определить удаленный UDP-порт (если в качестве метода инкапсуляции был выбран UDP протокол). | esr(config-l2tpv3)# remote port <UDP> | <UDP> – номер UDP-порта в диапазоне [1..65535]. |
11 | Назначить широковещательный домен для инкапсуляции в L2TPV3-пакеты данного туннеля. | esr(config-l2tpv3)# bridge-group <BRIDGE-ID> | <BRIDGE-ID> – идентификационный номер моста, принимает значения в диапазоне:
|
12 | Активировать туннель. | esr(config-l2tpv3)# enable | |
13 | Указать размер MTU (MaximumTransmitionUnit) для туннелей (не обязательно). MTU более 1500 будет активно только в случае применения команды "system jumbo-frames" | esr(config-l2tpv3)# mtu <MTU> | <MTU> – значение MTU, принимает значения в диапазоне:
Значение по умолчанию: 1500. |
14 | Определить локальное значение cookie для дополнительной проверки соответствия между передаваемыми данными и сессией (не обязательно). | esr(config-l2tpv3)# local cookie <COOKIE> | <COOKIE> – значение COOKIE, параметр принимает значения длиной восемь или шестнадцать символов в шестнадцатеричном виде. |
15 | Определить удаленное значение cookie для дополнительной проверки соответствия между передаваемыми данными и сессией (не обязательно). | esr(config-l2tpv3)# remote cookie <COOKIE> | <COOKIE> – значение COOKIE, параметр принимает значения длиной восемь или шестнадцать символов в шестнадцатеричном виде. |
16 | Задать интервал времени, за который усредняется статистика о нагрузке на туннеле (не обязательно). | esr(config-l2tpv3)# load-average <TIME> | <TIME> – интервал в секундах, принимает значения [5..150]. Значение по умолчанию: 5. |
17 | Включить запись статистики использования текущего туннеля (не обязательно). | esr(config-subif)# history statistics | |
Также для L2TPv3-туннеля возможно настроить:
|
Пример настройки L2TPv3-туннеля
Задача:
Организовать L2 VPN между офисами компании через IP-сеть, используя для туннелирования трафика протокол L2TPv3.
- в качестве инкапсулирующего протокола используется UDP, номер порта на локальной стороне и номер порта на стороне партнера 519;
- в качестве локального шлюза для туннеля используется IP-адрес 21.0.0.1;
- в качестве удаленного шлюза для туннеля используется IP-адрес 183.0.0.10;
- идентификатор туннеля на локальной стороне равен 2, на стороне партнера 3;
- идентификатор сессии внутри туннеля равен 100, на стороне партнера 200;
- в туннель направим трафик из bridge с идентификатором 333.
Решение:
Создадим туннель L2TPv3 333:
esr# configure
esr(config)# tunnel l2tpv3 333
Укажем локальный и удаленный шлюз (IP-адреса интерфейсов, граничащих с WAN):
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
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Создать VTI-туннель и перейти в режим его конфигурирования. | esr(config)# tunnel vti <TUN> | <TUN> – имя туннеля устройства. |
2 | Указать локальный IP-адрес VTI-туннеля. | esr(config-vti)#local address <ADDR> | <ADDR> – IP-адрес локального шлюза. |
3 | Указать удаленный IP-адрес VTI-туннеля. | esr(config-vti)#remote address <ADDR> | <ADDR> – IP-адрес удаленного шлюза. |
4 | Установить IP-адрес локальной стороны VTI-туннеля | esr(config-vti)# ip address <ADDR/LEN> | <ADDR/LEN> – IP-адрес и префикс подсети задаётся в виде AAA.BBB.CCC.DDD/EE, где каждая часть AAA – DDD принимает значения [0..255] и EE принимает значения [1..32]. |
5 | Включить VTI-туннель в зону безопасности и настроить правила взаимодействия между зонами или отключить firewall для VTI-туннеля. | esr(config-vti)# security-zone<NAME> | <NAME> – имя зоны безопасности, задаётся строкой до 12 символов. |
esr(config-vti)# ip firewall disable | |||
6 | Включить туннель. | esr(config-vti)#enable | |
7 | Создать IKE-профиль и перейти в режим его конфигурирования. | esr(config)# security ike proposal <NAME> | <NAME> – имя профиля протокола IKE, задаётся строкой до 31 символа. |
8 | Указать описание конфигурируемого IKE-профиля (не обязательно). | esr(config-ike-proposal)# description<DESCRIPTION> | <DESCRIPTION> – описание туннеля, задаётся строкой до 255 символов. |
9 | Определить алгоритм аутентификации для IKE (не обязательно). | esr(config-ike-proposal)# authentication algorithm <ALGORITHM> | <ALGORITHM> – алгоритм аутентификации, принимает значения: md5, sha1, sha2-256, sha2‑384, sha2-512. Значение по умолчанию: sha1 |
10 | Определить алгоритм шифрования для IKE (не обязательно). | 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 |
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:
Значение по умолчанию: 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> | | <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:
|
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> | | <SEC> – интервал времени в секундах, оставшийся до закрытия соединения (задается командой lifetimeseconds, см. 22.2.13). Принимает значения [4..86400]. <PACKETS> – количество пакетов, оставшихся до закрытия соединения (задается командой lifetimepackets). Принимает значения [4..86400] <KB> – объем трафика в килобайтах, оставшийся до закрытия соединения (задается командой lifetimekilobytes). Принимает значения [4..86400] Значение по умолчанию:
|
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
CODEСоздадим туннель 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
CODEДля настройки правил зон безопасности потребуется создать профиль порта протокола ISAKMP:
esr(config)# object-group service ISAKMP esr(config-object-group-service)# port-range 500 esr(config-object-group-service)# exit
CODEСоздадим статический маршрут до удаленной LAN-сети. Для каждой подсети, которая находится за IPsec-туннелем, нужно указать маршрут через VTI-туннель:
esr(config)# ip route 192.0.2.0/24 tunnel vti 1
CODEСоздадим профиль протокола 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
CODEСоздадим политику протокола 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
CODEСоздадим шлюз протокола 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
CODEСоздадим профиль параметров безопасности для 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
CODEСоздадим политику для IPsec-туннеля. В политике указывается список профилей IPsec-туннеля, по которым могут согласовываться узлы.
esr(config)# security ipsec policy ipsec_pol1 esr(config-ipsec-policy)# proposal ipsec_prop1 esr(config-ipsec-policy)# exit
CODEСоздадим 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
CODE- Конфигурирование 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
CODEСоздадим туннель 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
CODEДля настройки правил зон безопасности потребуется создать профиль порта протокола ISAKMP:
esr(config)# object-group service ISAKMP esr(config-object-group-service)# port-range 500 esr(config-object-group-service)# exit
CODEСоздадим статический маршрут до удаленной LAN-сети. Для каждой подсети, которая находится за IPsec-туннелем, нужно указать маршрут через VTI-туннель:
esr(config)# ip route 10.0.0.0/16 tunnel vti 1
CODEСоздадим профиль протокола 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)#
CODEСоздадим политику протокола 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
CODEСоздадим шлюз протокола 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
CODEСоздадим профиль параметров безопасности для 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
CODEСоздадим политику для IPsec-туннеля. В политике указывается список профилей IPsec-туннеля, по которым могут согласовываться узлы.
esr(config)# security ipsec policy ipsec_pol1 esr(config-ipsec-policy)# proposal ipsec_prop1 esr(config-ipsec-policy)# exit
CODEСоздадим 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
CODEСостояние туннеля можно посмотреть командой:
esr# show security ipsec vpn status ipsec1
CODEКонфигурацию туннеля можно посмотреть командой:
esr# show security ipsec vpn configuration ipsec1
CODE
В firewall необходимо разрешить протокол ESP и ISAKMP (UDP-порт 500).
Алгоритм настройки Policy-based IPsec VPN
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Создать IKE-экземпляр и перейти в режим его конфигурирования. | esr(config)# security ike proposal <NAME> | <NAME> – имя профиля протокола IKE, задаётся строкой до 31 символа. |
2 | Указать описание конфигурируемого туннеля (не обязательно). | esr(config-ike-proposal)# description<DESCRIPTION> | <DESCRIPTION> – описание туннеля, задаётся строкой до 255 символов. |
3 | Определить алгоритм аутентификации для IKE. | esr(config-ike-proposal)# authentication algorithm <ALGORITHM> | <ALGORITHM> – алгоритм аутентификации, принимает значения: md5, sha1, sha2-256, sha2‑384, sha2-512. |
4 | Определить алгоритм шифрования для IKE. | esr(config-ike-proposal)# encryption algorithm <ALGORITHM> | <ALGORITHM> – протокол шифрования, принимает значения: des, 3des, blowfish128, blowfish192, blowfish256, aes128, aes192, aes256, aes128ctr, aes192ctr, aes256ctr, camellia128, camellia192, camellia256. |
5 | Определить номер группы Диффи-Хеллмана. | esr(config-ike-proposal)# dh-group <DH-GROUP> | <DH-GROUP> – номер группы Диффи-Хеллмана, принимает значения [1, 2, 5, 14, 15, 16, 17, 18]. |
6 | Определить режим аутентификации. | esr(config-ike-proposal)# authentication method <METHOD> | <METHOD> – метод аутентификации ключа. Может принимать значения:
|
7 | Создать политику для профиля IKE и перейти в режим её конфигурирования. | esr(config)# security ike policy <NAME> | <NAME> – имя политики IKE, задаётся строкой до 31 символа. |
8 | Задать время жизни соединения протокола IKE (не обязательно). | esr(config-ike-proposal)# lifetime seconds <SEC> | <SEC> – период времени, принимает значения [4 ..86400] секунд. |
9 | Привязать политику к профилю. | esr(config-ike-policy)# proposal <NAME> | <NAME> – имя профиля протокола IKE, задаётся строкой до 31 символа. |
10 | Указать ключ аутентификации. | esr(config-ike-policy)#pre-shared-key ascii-text<TEXT> | <TEXT> – строка [1..64] ASCII символов. |
11 | Создать шлюз для IKE и перейти в режим его конфигурирования. | esr(config)# security ike gateway <NAME> | <NAME> – имя шлюза протокола IKE, задаётся строкой до 31 символа. |
12 | Привязать политику IKE. | esr(config-ike-gw)# ike-policy <NAME> | <NAME> – имя политики протокола IKE, задаётся строкой до 31 символа. |
13 | Указать версию IKE (не обязательно). | esr(config-ike-gw)# version <VERSION> | <version> – версия IKE-протокола: v1-only или v2-only. |
14 | Установить режим перенаправления трафика в туннель. | esr(config-ike-gw)#mode<MODE> | <MODE> – режим перенаправления трафика в туннель, принимает значения:
|
15 | Указать действие для DPD (не обязательно). | esr(config-ike-gw)# dead-peer-detection action <MODE> | <MODE> – режим работы DPD:
|
16 | Указать интервал между отправкой сообщений механизмом DPD (не обязательно). | esr(config-ike-gw)#dead-peer-detection interval <SEC> | <SEC> – интервал между отправкой сообщений механизмом DPD, принимает значения [1..180] секунд. |
17 | Указать период времени для ответа на сообщения механизма DPD (не обязательно). | esr(config-ike-gw)# dead-peer-detection timeout <SEC> | <SEC> – период времени для ответа на сообщения механизма DPD, принимает значения [1..180] секунд. |
18 | Указать версию IKE (не обязательно). | esr(config-ike-gw)# version <VERSION> | <version> – версия IKE-протокола: v1-only или v2-only. |
19 | Установить IP подсети отправителя. | esr(config-ike-gw)# local network <ADDR/LEN> | <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> | <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> | | <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:
|
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> | | <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 |
Пример настройки Policy-based IPsec VPN
Задача:
Настроить IPsec-туннель между R1 и R2.
R1 IP-адрес – 198.51.100.1;
R2 IP-адрес – 203.0.113.1;
IKE:
- группа Диффи-Хэллмана: 2;
- алгоритм шифрования: AES 128 bit;
- алгоритм аутентификации: MD5.
IPsec:
- алгоритм шифрования: AES 128 bit;
- алгоритм аутентификации: MD5.
Решение:
- Конфигурирование R1
Настроим внешний сетевой интерфейс и определим принадлежность к зоне безопасности:
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
CODEДля настройки правил зон безопасности потребуется создать профиль порта протокола ISAKMP:
esr(config)# object-group service ISAKMP esr(config-object-group-service)# port-range 500 esr(config-object-group-service)# exit
CODEСоздадим профиль протокола 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
CODEСоздадим политику протокола 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
CODEСоздадим шлюз протокола IKE. В данном профиле указывается VTI-туннель, политика, версия протокола и режим перенаправления трафика в туннель:
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
CODEСоздадим профиль параметров безопасности для 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
CODEСоздадим политику для IPsec-туннеля. В политике указывается список профилей IPsec-туннеля, по которым могут согласовываться узлы.
esr(config)# security ipsec policy ipsec_pol1 esr(config-ipsec-policy)# proposal ipsec_prop1 esr(config-ipsec-policy)# exit
CODEСоздадим 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 immediate 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
CODE - Конфигурирование R2
Настроим внешний сетевой интерфейс и определим принадлежность к зоне безопасности:
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
CODEДля настройки правил зон безопасности потребуется создать профиль порта протокола ISAKMP:
esr(config)# object-group service ISAKMP esr(config-addr-set)# port-range 500 esr(config-addr-set)# exit
CODEСоздадим профиль протокола 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)#
CODEСоздадим политику протокола 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
CODEСоздадим шлюз протокола 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
CODEСоздадим профиль параметров безопасности для 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
CODEСоздадим политику для IPsec-туннеля. В политике указывается список профилей IPsec-туннеля, по которым могут согласовываться узлы.
esr(config)# security ipsec policy ipsec_pol1 esr(config-ipsec-policy)# proposal ipsec_prop1 esr(config-ipsec-policy)# exit
CODEСоздадим 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 immediate 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
CODEСостояние туннеля можно посмотреть командой:
esr# show security ipsec vpn status ipsec1
CODEКонфигурацию туннеля можно посмотреть командой:
esr# show security ipsec vpn configuration ipsec1
CODE
В 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.
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Создать IKE-экземпляр и перейти в режим его конфигурирования. | esr(config)# security ike proposal <NAME> | <NAME> – имя профиля протокола IKE, задаётся строкой до 31 символа. |
2 | Указать описание конфигурируемого туннеля (не обязательно). | esr(config-ike-proposal)# description <DESCRIPTION> | <DESCRIPTION> – описание туннеля, задаётся строкой до 255 символов. |
3 | Определить алгоритм аутентификации для IKE (не обязательно). | esr(config-ike-proposal)# authentication algorithm <ALGORITHM> | <ALGORITHM> – алгоритм аутентификации, принимает значения: md5, sha1, sha2-256, sha2‑384, sha2-512. Значение по умолчанию: sha1 |
4 | Установить IP-адрес локальной стороны VTI-туннеля (не обязательно). | esr(config-vti)# ip address <ADDR/LEN> | <ADDR/LEN> – IP-адрес и префикс подсети задаётся в виде AAA.BBB.CCC.DDD/EE, где каждая часть AAA – DDD принимает значения [0..255] и EE принимает значения [1..31]. |
5 | Определить номер группы Диффи-Хеллмана (не обязательно). | esr(config-ike-proposal)# dh-group <DH-GROUP> | <DH-GROUP> – номер группы Диффи-Хеллмана, принимает значения [1, 2, 5, 14, 15, 16, 17, 18]. Значение по умолчанию: 1 |
6 | Создать политику для профиля IKE и перейти в режим её конфигурирования. | esr(config)# security ike policy <NAME> | <NAME> – имя политики IKE, задаётся строкой до 31 символа. |
7 | Определить режим аутентификации. | esr(config-ike- policy)# authentication method <METHOD> | <METHOD> – метод аутентификации ключа. Может принимать значения:
|
8 | Задать режим клиента (только для клиента). | esr(config-ike- policy)# authentication mode client | |
9 | Задать время жизни соединения протокола IKE (не обязательно). | esr(config-ike- policy)# lifetime seconds <SEC> | <SEC> – период времени, принимает значения [4 ..86400] секунд. Значение по умолчанию: 3600 |
10 | Привязать политику к профилю. | esr(config-ike-policy)# proposal <NAME> | <NAME> – имя профиля протокола IKE, задаётся строкой до 31 символа. |
11 | Указать ключ аутентификации. | esr(config-ike-policy)#pre-shared-key ascii-text <TEXT> | <TEXT> – строка [1..64] ASCII символов. |
12 | Создать профиль доступа. | esr(config)# access profile <NAME> | <NAME> – имя профиля доступа, задаётся строкой до 31 символа. |
13 | Создать имя пользователя. | esr(config-access-profile)# user <LOGIN> | <LOGIN> – логин клиента, задаётся строкой до 31 символа. |
14 | Задать пароль пользователя. | esr(config-profile)# password ascii-text <TEXT> | <TEXT> – строка [8..32] ASCII символов. |
15 | Создать пул адресов назначения (только для сервера). | esr(config)# address-assignment pool <NAME> | <NAME> – имя пула адресов назначения, задаётся строкой до 31 символа. |
16 | Задать подсеть, из которой будут выдаваться IP клиентам (только для сервера). | esr(config-pool)# ip prefix <ADDR/LEN> | <ADDR/LEN> – адрес подсети и префикс. |
17 | Создать шлюз для IKE и перейти в режим его конфигурирования. | esr(config)# security ike gateway <NAME> | <NAME> – имя шлюза протокола IKE, задаётся строкой до 31 символа. |
18 | Привязать политику IKE. | esr(config-ike-gw)# ike-policy <NAME> | <NAME> – имя политики протокола IKE, задаётся строкой до 31 символа. |
19 | Установить режим перенаправления трафика в туннель. | esr(config-ike-gw)# mode <MODE> | <MODE> – режим перенаправления трафика в туннель, принимает значения:
|
20 | Указать действие для DPD (не обязательно). | esr(config-ike-gw)# dead-peer-detection action <MODE> | <MODE> – режим работы DPD:
Значение по умолчанию: none |
21 | Указать интервал между отправкой сообщений механизмом DPD (не обязательно). | esr(config-ike-gw)#dead-peer-detection interval <SEC> | <SEC> – интервал между отправкой сообщений механизмом DPD, принимает значения [1..180] секунд. Значение по умолчанию: 2 |
22 | Указать период времени для ответа на сообщения механизма DPD (не обязательно). | esr(config-ike-gw)# dead-peer-detection timeout <SEC> | <SEC> – период времени для ответа на сообщения механизма DPD, принимает значения [1..180] секунд. Значение по умолчанию: 30 |
23 | Указать версию IKE (не обязательно). | esr(config-ike-gw)# version <VERSION> | <VERSION> – версия IKE-протокола: v1-only или v2-only. Значение по умолчанию: v1-only |
24 | Установить IP подсети отправителя (только для сервера). | esr(config-ike-gw)# local network <ADDR/LEN> | <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]. |
25 | Установить IP-адрес локального шлюза IPsec-туннеля. | esr(config-ike-gw)#local address <ADDR> | <ADDR> – IP-адрес локального шлюза. |
26 | Установить IP-адрес удаленного шлюза IPsec-туннеля. | esr(config-ike-gw)#remote address [any | <ADDR/LEN> | Any – установить в качестве удаленного адреса – любой адрес клиента, в конфигурации сервера; <ADDR/LEN> – IP-адрес и маска подсети сервера, в кофигурации клиента. |
27 | Задать пул динамического выделения IP-адресов клиентам (только для сервера). | esr(config-ike-gw)# remote network dynamic pool <NAME> | <NAME> – имя пула адресов назначения, задаётся строкой до 31 символа. |
28 | Задать режим динамического установления удаленной подсети (только для клиента). | esr(config-ike-gw)# remote network dynamic client | |
29 | Задать профиль доступа для XAUTH параметров (только для сервера). | esr(config-ike-gw)# xauth access-profile <NAME> | <NAME> – имя профиля доступа, задаётся строкой до 31 символа. |
30 | Задать профиль доступа и логин для XAUTH параметров (только для клиента). | esr(config-ike-gw)# xauth access-profile <NAME> client <LOGIN> | <NAME> – имя профиля доступа, задаётся строкой до 31имвола; <LOGIN> – логин клиента, задаётся строкой до 31 символа. |
31 | Задать интерфейс терминации выделенного IP для построения IPsec VPN (только для клиента). | esr(config-ike-gw)# assign-interface loopback <INDEX> | <INDEX> – индекс интерфейса, принимает значения [1..65535]. |
32 | Создать профиль IPsec. | esr(config)# security ipsec proposal <NAME> | <NAME> – имя профиля протокола IPsec, задаётся строкой до 31 символа. |
33 | Определить алгоритм аутентификации для IPsec (не обязательно). | esr(config-ipsec-proposal)# authentication algorithm <ALGORITHM> | <ALGORITHM> – алгоритм аутентификации, принимает значения: md5, sha1, sha2-256, sha2‑384, sha2-512. Значение по умолчанию: sha1 |
34 | Определить алгоритм шифрования для IPsec (не обязательно). | esr(config-ipsec-proposal)# encryption algorithm <ALGORITHM> | <ALGORITHM> – протокол шифрования, принимает значения: des, 3des, blowfish128, blowfish192, blowfish256, aes128, aes192, aes256, aes128ctr, aes192ctr, aes256ctr, camellia128, camellia192, camellia256. Значение по умолчанию: 3des |
35 | Указать протокол (не обязательно). | esr(config-ipsec-proposal)#protocol <PROTOCOL> | <PROTOCOL> – инкапсулирующий протокол, принимает значения:
Значение по умолчанию: esp |
36 | config-ipsec-proposal конфигурирования | esr(config)# security ipsec policy <NAME> | <NAME> – имя политики IPsec, задаётся строкой до 31 символа. |
37 | Привяжем политику к профилю | esr(config-ipsec-policy)# proposal <NAME> | <NAME> – имя профиля протокола IPsec, задаётся строкой до 31 символа. |
38 | Задать время жизни IPsec туннеля (не обязательно). | esr(config-ipsec-policy)# lifetime { seconds <SEC> | | <SEC> – период времени жизни IPsec-туннеля, по истечении которого происходит пересогласование. Принимает значения [1140..86400] секунд. Значение по умолчанию: 540 <PACKETS> – количество пакетов, после передачи которых происходит пересогласование IPsec-туннеля. Принимает значения [4..86400]. Значение по умолчанию: отключено. <KB> – объем трафика, после передачи которого происходит пересогласование IPsec-туннеля. Принимает значения [4..86400] секунд. Значение по умолчанию: отключено. |
39 | Создать IPsec VPN и перейти в режим конфигурирования. | esr(config)# security ipsec vpn <NAME> | <NAME> – имя VPN, задаётся строкой до 31 символа. |
40 | Определить режим согласования данных, необходимых для активации VPN. | esr(config-ipsec-vpn)# mode <MODE> | <MODE> – режим работы VPN, принимает значения: ike, manual. |
41 | Привязать IPsec политику к VPN. | esr(config-ipsec-vpn)#ike ipsec-policy <NAME> | <NAME> – имя IPsec-политики, задаётся строка до 31 символа. |
42 | Задать значение DSCP для использования в IP-заголовке исходящих пакетов IKE-протокола (не обязательно). | esr(config-ipsec-vpn)#ike dscp <DSCP> | DSCP> – значение кода DSCP, принимает значения в диапазоне [0..63]. Значение по умолчанию: 63 |
43 | Устанавливается режим активации VPN. | esr(config-ipsec-vpn)#ike establish-tunnel <MODE> | <MODE> – режим активации VPN:
|
44 | Осуществить привязка IKE-шлюза к VPN. | esr(config-ipsec-vpn)# ike gateway <NAME> | <NAME> – имя IKE-шлюза, задаётся строкой до 31 символа. |
45 | Установить значение временного интервала в секундах, по истечению которого соединение закрывается, если не было принято или передано ни одного пакета через SA (не обязательно). | esr(config-ipsec-vpn)# ike idle-time <TIME> | <TIME> – интервал в секундах, принимает значения [4..86400]. Значение по умолчанию: 0 |
46 | Отключить пересогласование ключей до разрыва IKE-соединения по истечению времени, количеству переданных пакетов или байт (не обязательно). | esr(config-ipsec-vpn)#ike rekey disable | Значение по умолчанию: включено. |
47 | Настроить начало пересогласования ключей IKE-соединения до истечения времени жизни (не обязательно). | esr(config-ipsec-vpn)# ike rekey margin { seconds <SEC> | | <SEC> – интервал времени в секундах, оставшийся до закрытия соединения (задается командой lifetimeseconds) . Принимает значения [4..86400]. <PACKETS> – количество пакетов, оставшихся до закрытия соединения (задается командой lifetimepackets). Принимает значения [4..86400]. <KB> – объем трафика в килобайтах, оставшийся до закрытия соединения (задается командой lifetimekilobytes). Принимает значения [4..86400] |
48 | Установить уровень случайного разброса значений параметров marginseconds, marginpackets, marginkilobytes (не обязательно). | esr(config-ipsec-vpn)# ike rekey randomization <VALUE> | <VALUE> – максимальный процент разброса значений, принимает значения [1..100]. Значение по умолчанию: 100 |
49 | Описать VPN (не обязательно). | esr(config-ipsec-vpn)# description <DESCRIPTION> | <DESCRIPTION> – описание профиля, задаётся строкой до 255 символов. |
50 | Активировать IPsec VPN. | esr(config-ipsec-vpn)# enable | |
51 | Включить режим пере-подключения клиентов XAUTH с одним логином/паролем (только для сервера) (не обязательно). | esr(config-ipsec-vpn)# security ike session uniqueids <MODE> | <MODE> – режим пере-подключения, принимает следующие значения:
|
Пример настройки 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
CODEДля настройки правил зон безопасности потребуется создать профиль порта протокола ISAKMP:
esr(config)# object-group service ISAKMP esr(config-object-group-service)# port-range 500,4500 esr(config-object-group-service)# exit
CODEСоздадим профиль протокола 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
CODEСоздадим политику протокола 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
CODEСоздадим профиль доступа и заведем в нем пару логин и пароль для клиента 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
CODEСоздадим пул адресов назначения, из которого будут выдаваться 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
CODEСоздадим шлюз протокола 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
CODEСоздадим профиль параметров безопасности для 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
CODEСоздадим политику для IPsec-туннеля. В политике указывается список профилей IPsec-туннеля, по которым могут согласовываться узлы.
esr(config)# security ipsec policy IPSECPOLICY esr(config-ipsec-policy)# proposal IPSECPROP esr(config-ipsec-policy)# exit
CODEСоздадим IPsec VPN. В VPN указывается шлюз IKE-протокола, политика IP sec-туннеля, режим обмена ключами и режим ожидания входящего соединения 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
CODEРазрешим протокол 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
CODEКонфигурирование 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
CODEДля настройки правил зон безопасности потребуется создать профиль порта протокола ISAKMP:
esr(config)# object-group service ISAKMP esr(config-addr-set)# port-range 500,4500 esr(config-addr-set)# exit
CODEСоздадим профиль протокола 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
CODEСоздадим политику протокола 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
CODEСоздадим профиль доступа и заведем в нем пару логин и пароль:
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
CODEСоздадим интерфейс loopback для терминации IP адреса, полученного от IPsec VPN сервера:
esr(config)# interface loopback 8 esr(config-loopback)# exit
CODEСоздадим шлюз протокола 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
CODEСоздадим профиль параметров безопасности для 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
CODEСоздадим политику для IPsec-туннеля. В политике указывается список профилей IPsec-туннеля, по которым могут согласовываться узлы.
esr(config)# security ipsec policy IPSECPOLICY esr(config-ipsec-policy)# proposal IPSECPROP esr(config-ipsec-policy)# exit
CODEСоздадим 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 immediate 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
CODEРазрешим протокол 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
CODEСостояние туннеля можно посмотреть командой:
esr# show security ipsec vpn status IPSECVPN
CODEКонфигурацию туннеля можно посмотреть командой:
esr# show security ipsec vpn configuration IPSECVPN
CODE
В firewall необходимо разрешить протокол ESP и ISAKMP (UDP-порт 500, 4500).
Настройка LT-туннелей
LT (англ. Logical Tunnel – логический туннель) – тип туннелей, предназначенный для передачи маршрутной информации и трафика между различными виртуальными маршрутизаторами (VRF Lite), сконфигурированными на одном аппаратном маршрутизаторе. LT-туннель может использоваться для организации взаимодействия между двумя или более VRF с применением ограничений firewall.
Алгоритм настройки
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Создать LT-туннели для каждого из существующих VRF. | esr(config)# tunnel lt <ID> | <ID> – идентификатор туннеля в диапазоне [1..128]. |
2 | Указать описание конфигурируемых туннелей (не обязательно). | esr(config-lt)# description <DESCRIPTION> | <DESCRIPTION> – описание туннеля, задаётся строкой до 255 символов. |
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). | esr(config-lt)# mtu <MTU> | <MTU> – значение MTU, принимает значения в диапазоне:
Значение по умолчанию: 1500. |
Пример настройки
Задача:
Организовать взаимодействие между хостами, терминированными в двух 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