Показаны сообщения с ярлыком IPSec. Показать все сообщения
Показаны сообщения с ярлыком IPSec. Показать все сообщения
среда, 30 июля 2014 г.
воскресенье, 13 июля 2014 г.
DMVPN DualHUB(Dual_ISP) Spoke1(Dual_ISP)
Данное продакш решение демонстрирует возможности построения логических модулей и является одним из фундаментальных блоков для решения множества задач. Написано уже давно лично мной без чьей-либо помощи, и является моей привычной средой уровня работы.
Все элементарные-базовые концептуальные решения заимствованы из гугла, и цисковких манов. Спасибо так же более "старшим" неизвестным мне коллегам, у которых можно было увидеть базовые применения по EEM в пределах одного оператора.
Надеюсь, что и мои записи так же помогут неизвестным мне начинающим коллегам.
В данном рассмотрении уделено особое внимание связке HUB1-Spoke1, как выделения его в модуль решения. Всё остальные связки делают по аналогии пользуясь этим же решением или комплектом более простых.
1) Задаём IP адреса на интерфейсы(пропущено) и прописываем маршрутизацию
ПоказатьСкрыть
HUB1
Spoke1
Снимем маршрутизацию с физических интерфейсов в VRF-ы ( в моём концептном решении это было необходимо в силу глобальной задачи, но рассмотрению самой изюминки это не мешает )
ip route 0.0.0.0 0.0.0.0 100.1.1.1 ip route 0.0.0.0 0.0.0.0 100.1.2.1
Spoke1
Снимем маршрутизацию с физических интерфейсов в VRF-ы ( в моём концептном решении это было необходимо в силу глобальной задачи, но рассмотрению самой изюминки это не мешает )
ip vrf R1C1 rd 101:11 ip vrf R2C1 rd 101:12 ip route vrf R1C1 0.0.0.0 0.0.0.0 200.1.1.1 ip route vrf R2C1 0.0.0.0 0.0.0.0 200.1.2.1
2) Настраиваем mGRE и маршрутизацию
ПоказатьСкрыть
HUB1
Spoke1
уже прописано на туннельных интерфейсах
и поднимаем eigrp на HUB и Spoke роутерах
interface Tunnel1 ip address 192.168.101.1 255.255.255.0 no ip redirects ip mtu 1400 no ip next-hop-self eigrp 77 ip nhrp authentication cisco711 ip nhrp map multicast dynamic ip nhrp network-id 1 ip tcp adjust-mss 1360 no ip split-horizon eigrp 77 tunnel source FastEthernet2/1 tunnel mode gre multipoint tunnel key 2011 tunnel route-via FastEthernet2/1 mandatory tunnel path-mtu-discovery interface Tunnel2 ip address 192.168.102.1 255.255.255.0 no ip redirects ip mtu 1400 no ip next-hop-self eigrp 77 ip nhrp authentication cisco712 ip nhrp map multicast dynamic ip nhrp network-id 2 ip tcp adjust-mss 1360 no ip split-horizon eigrp 77 tunnel source FastEthernet1/0 tunnel mode gre multipoint tunnel key 2012 tunnel route-via FastEthernet1/0 mandatory tunnel path-mtu-discovery
Spoke1
interface Tunnel111 ip address 192.168.101.101 255.255.255.0 no ip redirects ip mtu 1400 no ip next-hop-self eigrp 77 ip nhrp authentication cisco711 ip nhrp map 192.168.101.1 100.1.1.2 ip nhrp map multicast 100.1.1.2 ip nhrp network-id 1 ip nhrp holdtime 1800 ip nhrp nhs 192.168.101.1 ip nhrp registration no-unique no ip split-horizon eigrp 77 tunnel source FastEthernet1/0 tunnel mode gre multipoint tunnel key 2011 tunnel route-via FastEthernet1/0 mandatory tunnel path-mtu-discovery tunnel vrf R1C1 ! interface Tunnel112 ip address 192.168.101.101 255.255.255.0 no ip redirects ip mtu 1400 no ip next-hop-self eigrp 77 ip nhrp authentication cisco711 ip nhrp map 192.168.101.1 100.1.1.2 ip nhrp map multicast 100.1.1.2 ip nhrp network-id 1 ip nhrp holdtime 1800 ip nhrp nhs 192.168.101.1 ip nhrp registration no-unique no ip split-horizon eigrp 77 shutdown tunnel source FastEthernet2/1 tunnel mode gre multipoint tunnel key 2011 tunnel route-via FastEthernet2/1 mandatory tunnel path-mtu-discovery tunnel vrf R2C1 ! interface Tunnel121 ip address 192.168.102.101 255.255.255.0 no ip redirects ip mtu 1400 no ip next-hop-self eigrp 77 ip nhrp authentication cisco712 ip nhrp map multicast 100.1.2.2 ip nhrp map 192.168.102.1 100.1.2.2 ip nhrp network-id 2 ip nhrp holdtime 1800 ip nhrp nhs 192.168.102.1 ip nhrp registration no-unique no ip split-horizon eigrp 77 shutdown tunnel source FastEthernet1/0 tunnel mode gre multipoint tunnel key 2012 tunnel route-via FastEthernet1/0 mandatory tunnel path-mtu-discovery tunnel vrf R1C1 ! interface Tunnel122 ip address 192.168.102.101 255.255.255.0 no ip redirects ip mtu 1400 no ip next-hop-self eigrp 77 ip nhrp authentication cisco712 ip nhrp map multicast 100.1.2.2 ip nhrp map 192.168.102.1 100.1.2.2 ip nhrp network-id 2 ip nhrp holdtime 1800 ip nhrp nhs 192.168.102.1 ip nhrp registration no-unique no ip split-horizon eigrp 77 shutdown tunnel source FastEthernet2/1 tunnel mode gre multipoint tunnel key 2012 tunnel route-via FastEthernet2/1 mandatory tunnel path-mtu-discovery tunnel vrf R2C1
уже прописано на туннельных интерфейсах
no ip next-hop-self eigrp 77 no ip split-horizon eigrp 77
и поднимаем eigrp на HUB и Spoke роутерах
router eigrp 77 network 10.0.0.0 network 192.168.0.0 0.0.255.255
3) На данном этапе надо решить задачку по экономии трафика подключив логический модуль
ПоказатьСкрыть
Условия и ситуации данной задачи сводятся к решению простого концепта указанного на картинке которую я сделал.
Приоритет использования туннелей в порядке убывания в данных условиях будет такой: Tunnel 111, Tunnel 112, Tunnel 121, Tunnel 122
А так же приведена блок-схема логического модуля.
Приступим к анализу ситуаций и выработке стратегии
Spoke1
а) Задаём SLA и треки следящие за SLA
б) Задаём stub-треки для снятия информации о текущем состоянии SLA
в) Задаём stub-треки для снятия информации о текущем состоянии Tunnel интерфейсов
г) Прописываем обработку срабатываний SLA-Track в STUB-Track и старт основного логического блока
д) Создаём основной логический блок (Central Office 1 Service Logic Tunnels)
Срабатывает на изменение STUB-Track'ов принудительно через run
action 110-141 -- считываем данные с STUB-Track'ов из SLA в переменные $_track_state_1ХХ
action 150-181 -- считываем данные с STUB-Track'ов из Tunnel в переменные $_track_state_1ХХ
action 201-215 -- Вывод данных в лог для визуализации
action 301-399 -- Логический блок
Приоритет использования туннелей в порядке убывания в данных условиях будет такой: Tunnel 111, Tunnel 112, Tunnel 121, Tunnel 122
А так же приведена блок-схема логического модуля.
Приступим к анализу ситуаций и выработке стратегии
Spoke1
а) Задаём SLA и треки следящие за SLA
ip sla 111 icmp-echo 100.1.1.2 source-interface FastEthernet1/0 vrf R1C1 threshold 3 timeout 2000 frequency 5 ip sla schedule 111 life forever start-time now track 111 ip sla 111 reachability delay down 10 up 20 ip sla 112 icmp-echo 100.1.1.2 source-interface FastEthernet2/1 vrf R2C1 threshold 3 timeout 2000 frequency 5 ip sla schedule 112 life forever start-time now track 112 ip sla 112 reachability delay down 15 up 25 ip sla 121 icmp-echo 100.1.2.2 source-interface FastEthernet1/0 vrf R1C1 threshold 3 timeout 2000 frequency 5 ip sla schedule 121 life forever start-time now track 121 ip sla 121 reachability delay down 20 up 30 ip sla 122 icmp-echo 100.1.2.2 source-interface FastEthernet2/1 vrf R2C1 threshold 3 timeout 2000 frequency 5 ip sla schedule 122 life forever start-time now track 122 ip sla 122 reachability delay down 25 up 35
б) Задаём stub-треки для снятия информации о текущем состоянии SLA
track 911 stub-object default-state down track 912 stub-object default-state down track 921 stub-object default-state down track 922 stub-object default-state down
в) Задаём stub-треки для снятия информации о текущем состоянии Tunnel интерфейсов
track 811 stub-object default-state down track 812 stub-object default-state down track 821 stub-object default-state down track 822 stub-object default-state down
г) Прописываем обработку срабатываний SLA-Track в STUB-Track и старт основного логического блока
event manager applet TRACK111UP event track 111 state up action 100 track set 911 state up action 101 cli command "enable" action 102 cli command "event manager run CO1SLT" event manager applet TRACK111DOWN event track 111 state down action 100 track set 911 state down action 101 cli command "enable" action 102 cli command "event manager run CO1SLT" event manager applet TRACK112UP event track 112 state up action 100 track set 912 state up action 101 cli command "enable" action 102 cli command "event manager run CO1SLT" event manager applet TRACK112DOWN event track 112 state down action 100 track set 912 state down action 101 cli command "enable" action 102 cli command "event manager run CO1SLT" event manager applet TRACK121UP event track 121 state up action 100 track set 921 state up action 101 cli command "enable" action 102 cli command "event manager run CO1SLT" event manager applet TRACK121DOWN event track 121 state down action 100 track set 921 state down action 101 cli command "enable" action 102 cli command "event manager run CO1SLT" event manager applet TRACK122UP event track 122 state up action 100 track set 922 state up action 101 cli command "enable" action 102 cli command "event manager run CO1SLT" event manager applet TRACK122DOWN event track 122 state down action 100 track set 922 state down action 101 cli command "enable" action 102 cli command "event manager run CO1SLT"
д) Создаём основной логический блок (Central Office 1 Service Logic Tunnels)
Срабатывает на изменение STUB-Track'ов принудительно через run
action 110-141 -- считываем данные с STUB-Track'ов из SLA в переменные $_track_state_1ХХ
action 150-181 -- считываем данные с STUB-Track'ов из Tunnel в переменные $_track_state_1ХХ
action 201-215 -- Вывод данных в лог для визуализации
action 301-399 -- Логический блок
event manager applet CO1SLT
event none
action 110 track read 911
action 111 set track_state_911 "$_track_state"
action 120 track read 912
action 121 set track_state_912 "$_track_state"
action 130 track read 921
action 131 set track_state_921 "$_track_state"
action 140 track read 922
action 141 set track_state_922 "$_track_state"
action 150 track read 811
action 151 set track_state_811 "$_track_state"
action 160 track read 812
action 161 set track_state_812 "$_track_state"
action 170 track read 821
action 171 set track_state_821 "$_track_state"
action 180 track read 822
action 181 set track_state_822 "$_track_state"
action 201 syslog msg "======================================================"
action 202 syslog msg "--- Central Office 1 Service Logic Tunnels started ---"
action 203 set eq_up "up"
action 204 set eq_down "down"
action 207 syslog msg "Status track911 is $track_state_911"
action 208 syslog msg "Status track912 is $track_state_912"
action 209 syslog msg "Status track921 is $track_state_921"
action 210 syslog msg "Status track922 is $track_state_922"
action 211 syslog msg "Status track811 is $track_state_811"
action 212 syslog msg "Status track812 is $track_state_812"
action 213 syslog msg "Status track821 is $track_state_821"
action 214 syslog msg "Status track822 is $track_state_822"
action 215 syslog msg "------------------------------------------------------"
action 301 if $track_state_911 eq $eq_up
action 301.0 syslog msg "Logical module CO1SLT: Track911-UP-confirmed"
action 301.1 if $track_state_911 ne $track_state_811
action 301.1.0 syslog msg "Logical module CO1SLT: Track911 ne Track811 confirmed. Tunnel 111 must be UPPED"
action 301.1.11 cli command "enable"
action 301.1.12 cli command "configure terminal"
action 301.1.13 cli command "interface range tunnel 111-112, tunnel 121-122"
action 301.1.14 cli command "shutdown"
action 301.1.15 track set 811 state down
action 301.1.16 track set 812 state down
action 301.1.17 track set 821 state down
action 301.1.18 track set 822 state down
action 301.1.21 cli command "do clear crypto isa"
action 301.1.22 cli command "do clear crypto sa"
action 301.1.23 wait 1
action 301.1.31 cli command "interface tunnel 111"
action 301.1.31a cli command "no ip add"
action 301.1.31b cli command "ip add 192.168.101.101 255.255.255.0"
action 301.1.32 cli command "no shutdown"
action 301.1.41 track set 811 state up
action 301.1.98 syslog msg "Logical module CO1SLT: Operation to UP the Tunnel 111 completed. Track811 --> UP. Exit 301.1.99"
action 301.1.98a syslog msg "======================================================"
action 301.1.99 exit 301.1.99_Normal_Exit
action 301.2 else
action 301.2.1 syslog msg "Logical module CO1SLT: Current optimal Tunnel 111. And he already UP. Exit 301.2.2"
action 301.2.1a syslog msg "======================================================"
action 301.2.2 exit 301.2.2_Normal_Exit
action 301.3 end
action 302 else
action 303 if $track_state_912 eq $eq_up
action 303.0 syslog msg "Logical module CO1SLT: Track912-UP-confirmed"
action 303.1 if $track_state_912 ne $track_state_812
action 303.1.0 syslog msg "Logical module CO1SLT: Track912 ne Track812 confirmed. Tunnel 112 must be UPPED"
action 303.1.11 cli command "enable"
action 303.1.12 cli command "configure terminal"
action 303.1.13 cli command "interface range tunnel 111-112, tunnel 121-122"
action 303.1.14 cli command "shutdown"
action 303.1.15 track set 811 state down
action 303.1.16 track set 812 state down
action 303.1.17 track set 821 state down
action 303.1.18 track set 822 state down
action 303.1.21 cli command "do clear crypto isa"
action 303.1.22 cli command "do clear crypto sa"
action 303.1.23 wait 1
action 303.1.31 cli command "interface tunnel 112"
action 303.1.31a cli command "no ip add"
action 303.1.31b cli command "ip add 192.168.101.101 255.255.255.0"
action 303.1.32 cli command "no shutdown"
action 303.1.41 track set 812 state up
action 303.1.98 syslog msg "Logical module CO1SLT: Operation to UP the Tunnel 112 completed. Track812 --> UP. Exit 303.1.99"
action 303.1.98a syslog msg "======================================================"
action 303.1.99 exit 303.1.99_Normal_Exit
action 303.2 else
action 303.2.1 syslog msg "Logical module CO1SLT: Current optimal Tunnel 112. And he already UP. Exit 303.2.2"
action 303.2.1a syslog msg "======================================================"
action 303.2.2 exit 303.2.2_Normal_Exit
action 303.3 end
action 304 else
action 305 if $track_state_921 eq $eq_up
action 305.0 syslog msg "Logical module CO1SLT: Track921-UP-confirmed"
action 305.1 if $track_state_921 ne $track_state_821
action 305.1.0 syslog msg "Logical module CO1SLT: Track921 ne Track821 confirmed. Tunnel 121 must be UPPED"
action 305.1.11 cli command "enable"
action 305.1.12 cli command "configure terminal"
action 305.1.13 cli command "interface range tunnel 111-112, tunnel 121-122"
action 305.1.14 cli command "shutdown"
action 305.1.15 track set 811 state down
action 305.1.16 track set 812 state down
action 305.1.17 track set 821 state down
action 305.1.18 track set 822 state down
action 305.1.21 cli command "do clear crypto isa"
action 305.1.22 cli command "do clear crypto sa"
action 305.1.23 wait 1
action 305.1.31 cli command "interface tunnel 121"
action 305.1.31a cli command "no ip add"
action 305.1.31b cli command "ip add 192.168.102.101 255.255.255.0"
action 305.1.32 cli command "no shutdown"
action 305.1.41 track set 821 state up
action 305.1.98 syslog msg "Logical module CO1SLT: Operation to UP the Tunnel 121 completed. Track821 --> UP. Exit 305.1.99"
action 305.1.98a syslog msg "======================================================"
action 305.1.99 exit 305.1.99_Normal_Exit
action 305.2 else
action 305.2.1 syslog msg "Logical module CO1SLT: Current optimal Tunnel 121. And he already UP. Exit 305.2.2"
action 305.2.1a syslog msg "======================================================"
action 305.2.2 exit 305.2.2_Normal_Exit
action 305.3 end
action 306 else
action 307 if $track_state_922 eq $eq_up
action 307.0 syslog msg "Logical module CO1SLT: Track922-UP-confirmed"
action 307.1 if $track_state_922 ne $track_state_822
action 307.1.0 syslog msg "Logical module CO1SLT: Track922 ne Track822 confirmed. Tunnel 122 must be UPPED"
action 307.1.11 cli command "enable"
action 307.1.12 cli command "configure terminal"
action 307.1.13 cli command "interface range tunnel 111-112, tunnel 121-122"
action 307.1.14 cli command "shutdown"
action 307.1.15 track set 811 state down
action 307.1.16 track set 812 state down
action 307.1.17 track set 821 state down
action 307.1.18 track set 822 state down
action 307.1.21 cli command "do clear crypto isa"
action 307.1.22 cli command "do clear crypto sa"
action 307.1.23 wait 1
action 307.1.31 cli command "interface tunnel 122"
action 307.1.31a cli command "no ip add"
action 307.1.31b cli command "ip add 192.168.102.101 255.255.255.0"
action 307.1.32 cli command "no shutdown"
action 307.1.41 track set 822 state up
action 307.1.98 syslog msg "Logical module CO1SLT: Operation to UP the Tunnel 122 completed. Track822 --> UP. Exit 307.1.99"
action 307.1.98a syslog msg "======================================================"
action 307.1.99 exit 307.1.99_Normal_Exit
action 307.2 else
action 307.2.1 syslog msg "Logical module CO1SLT: Current optimal Tunnel 122. And he already UP. Exit 307.2.2"
action 307.2.1a syslog msg "======================================================"
action 307.2.2 exit 307.2.2_Normal_Exit
action 307.3 end
action 308 else
action 309.10 syslog msg "Logical module CO1SLT: WARNING ALL PROVIDERS ARE DOWN. Administrator has been notified. Type of communication: SMS."
action 301.10.a syslog msg "======================================================"
action 309.11 cli command "enable"
action 309.12 cli command "configure terminal"
action 309.13 cli command "interface range tunnel 111-112, tunnel 121-122"
action 309.14 cli command "shutdown"
action 309.15 track set 811 state down
action 309.16 track set 812 state down
action 309.17 track set 821 state down
action 309.18 track set 822 state down
action 309.19 cli command "do clear crypto isa"
action 309.20 cli command "do clear crypto sa"
action 396 end
action 397 end
action 398 end
action 399 end
4) И дошлифуем шифрованием
ПоказатьСкрыть
HUB1
а) Создаём две ключницы -- по одной на каждое облако и строго определяем интерфейс использования
б) Создаём политику служебного туннеля ( можно создать и два, если это требует регламент безопасности )
в) Создаём профиль isakmp для создания служебного тоннеля, по одному на каждое облако
г) Задаём трансформу-шифрование основного туннеля
д) Создаём профили ipsec на каждое облако
е) И променяем профили к тоннелям
------------------------------------------- Spoke1
а) Создаём две ключницы -- по одной на каждое облако и строго определяем интерфейс использования
б) Создаём политику служебного туннеля ( можно создать и два, если это требует регламент безопасности )
в) Создаём профиль isakmp для создания служебного тоннеля, по одному на каждый туннель
г) Задаём трансформу-шифрование основного туннеля
д) Создаём профили ipsec на каждый туннель
е) И променяем профили к тоннелям
а) Создаём две ключницы -- по одной на каждое облако и строго определяем интерфейс использования
crypto keyring DMVPN-CLOUD1 local-address fa 2/1 pre-shared-key address 0.0.0.0 0.0.0.0 key cisco123 crypto keyring DMVPN-CLOUD2 local-address fa 1/0 pre-shared-key address 0.0.0.0 0.0.0.0 key cisco123
б) Создаём политику служебного туннеля ( можно создать и два, если это требует регламент безопасности )
crypto isakmp policy 10 encryption 3des authentication pre-share group 2
в) Создаём профиль isakmp для создания служебного тоннеля, по одному на каждое облако
crypto isakmp profile DMVPN-CLOUD1 keyring DMVPN-CLOUD1 match identity address 0.0.0.0 local-address fa 2/1 crypto isakmp profile DMVPN-CLOUD2 keyring DMVPN-CLOUD2 match identity address 0.0.0.0 local-address fa 1/0
г) Задаём трансформу-шифрование основного туннеля
crypto ipsec transform-set ESP-DES-MD5-HMAC esp-des esp-md5-hmac
д) Создаём профили ipsec на каждое облако
crypto ipsec profile DMVPN-CLOUD1 set transform-set ESP-DES-MD5-HMAC set isakmp-profile DMVPN-CLOUD1 crypto ipsec profile DMVPN-CLOUD2 set transform-set ESP-DES-MD5-HMAC set isakmp-profile DMVPN-CLOUD2
е) И променяем профили к тоннелям
interface Tunnel 1 tunnel protection ipsec profile DMVPN-CLOUD1 interface Tunnel 2 tunnel protection ipsec profile DMVPN-CLOUD2
------------------------------------------- Spoke1
а) Создаём две ключницы -- по одной на каждое облако и строго определяем интерфейс использования
crypto keyring D-CLOUD1 vrf R1C1 pre-shared-key address 0.0.0.0 0.0.0.0 key cisco123 crypto keyring D-CLOUD2 vrf R2C1 pre-shared-key address 0.0.0.0 0.0.0.0 key cisco123
б) Создаём политику служебного туннеля ( можно создать и два, если это требует регламент безопасности )
crypto isakmp policy 10 encryption 3des authentication pre-share group 2
в) Создаём профиль isakmp для создания служебного тоннеля, по одному на каждый туннель
crypto isakmp profile D-CLOUD11 vrf R1C1 keyring D-CLOUD1 match identity address 0.0.0.0 R1C1 local-address fa 1/0 crypto isakmp profile D-CLOUD12 vrf R2C1 keyring D-CLOUD2 match identity address 0.0.0.0 R2C1 local-address fa 2/1 crypto isakmp profile D-CLOUD21 vrf R1C1 keyring D-CLOUD1 match identity address 0.0.0.0 R1C1 local-address fa 1/0 crypto isakmp profile D-CLOUD22 vrf R2C1 keyring D-CLOUD2 match identity address 0.0.0.0 R2C1 local-address fa 2/1
г) Задаём трансформу-шифрование основного туннеля
crypto ipsec transform-set ESP-DES-MD5-HMAC esp-des esp-md5-hmac
д) Создаём профили ipsec на каждый туннель
crypto ipsec profile D-CLOUD11 set transform-set ESP-DES-MD5-HMAC set isakmp-profile D-CLOUD11 crypto ipsec profile D-CLOUD12 set transform-set ESP-DES-MD5-HMAC set isakmp-profile D-CLOUD12 crypto ipsec profile D-CLOUD21 set transform-set ESP-DES-MD5-HMAC set isakmp-profile D-CLOUD21 crypto ipsec profile D-CLOUD22 set transform-set ESP-DES-MD5-HMAC set isakmp-profile D-CLOUD22
е) И променяем профили к тоннелям
interface Tunnel 111 tunnel protection ipsec profile D-CLOUD11 interface Tunnel 112 tunnel protection ipsec profile D-CLOUD12 interface Tunnel 121 tunnel protection ipsec profile D-CLOUD21 interface Tunnel 122 tunnel protection ipsec profile D-CLOUD22
5) "Пилите, Шура, пилите! Они золотые!"
ПоказатьСкрыть
В продакшне при внедрении выловлено немало косяков, главная трудность в том что железка имеет свойство:
а) Перезагружаться при потере питания, значит внедрённое решение должно быть саморегулирущимся.
б) Поскольку конфиги меняются и сохраняются в процессе работы, то могут сохраниться и поднятые туннели и прочее атрибуты решения
Значит внедрённое решение должно быть саморегулирущимся из любой точки и из любого состояния
Пункты 1 и 2 в сумме налагают приличное количество ограничений на конструирование. Рабочее решение я подобрал только на 8-мом варианте переписывания, меняя как идеи с концептами, так и общесистемную логику.
Например был выловлен такой косяк на поднятых туннелях при загрузке циски, крайне неприятное сообщение:
% 192.168.101.0 overlaps with Tunnel111 % 192.168.102.0 overlaps with Tunnel121
после чего ip адреса пропадут с опущенных туннелей в избежании Overlaps.
action 30Х.1.31a,b решают эту проблему.
Так же это решение не будет работать, если не решить вопрос маршрутизации на HUB1 потому что, sla 22 будет всегда проседать из-за роутинга, решается простым применнием концептного модуля ip sla (искать по метке).
Кстати ip sla модуль был описан как раз составляющий элемент данного решения.
И конечно в каждом внедрении нужно чётко шлифовать таймеры в зависимости от нагрузки на железку. Словом масса нюансов в каждом конкретном случае будет иметь место быть. Но все они решаемы.
воскресенье, 22 июня 2014 г.
DMVPN HUB1(DualISP) SPOKE1(DualISP) SPOKE2(SingleISP)
Дано:
Блок одной из классических схем организации DMVPN типа HUB-and-SPOKE,
R20 -- HUB с двумя провайдерами
R21 и R22 -- SPOKE маршрутизаторы с двумя и одним провайдерами соответственно
Все линки на провайдеров даны типа default-gateway
R2...R11 -- имитируют интернет, типа OSPF area 0 процесс 77
Задача:
Построить DMVPN, типа mGRE с шифрацией трафика типа IPSec.
Динамической маршрутизацией типа EIGRP.
Свободный обмен данными между хостами xp_http_ftp_cisco, xp_http_ftp_cisco1, xp_http_ftp_cisco2 (здесь проверен icmp, http и ftp трафик)
вторник, 17 июня 2014 г.
DMVPN Basic Example
Дано:
Классическая схема DMVPN -- HUB and SPOKE
R1 -- центральный офис и логический HUB
R3, R4 -- региональные офисы логические SPOKE
R2 -- имитация интернет, с маршрутизацией типа OSPF 77
Loopback интерфейсы прописываются для упрощённой настройки OSPF (RouterID)
Схема упрощена до базового концепта DMVPN типа HUB-SPOKE,
т.е. у филиалов присутствуют белые IP и отсутствует NAT
каждая логическая единица схемы имеет только одного провайдера
вместо BGP используется OSPF ( как вариант можно было бы ещё упростить до default-gateway )
Задача:
Настроить DMVPN типа point-to-multipoint с поддержкой логических mGRE тоннелей с поддержкой шифрования IPSec
Настроить днамическую маршрутизацию между ними объединяя их в одну логическую сеть
Создать эту систему таким образом чтобы добавление нового SPOKE узла требовало настройки только с его стороны
понедельник, 9 июня 2014 г.
вторник, 20 мая 2014 г.
GRE over IPsec
Задача: Необходимо поднять GRE туннель между офисами R5 и R4 и зашифровать его с помощью IPSec (т.н. GRE over IPSec ). Через GRE туннель должна работать маршрутизация типа EIGRP обеспечивая роутинг между локальными сетями офисов через GRE туннель.
Условимся, что EIGRP AS1 у нас имитирует интернет. Вначале настраиваем IP адреса на интерфейсах и EIGRP AS1 маршрутизацию, чтобы приступить к конфигурированию тоннеля.
1) Настраиваем дефолтный маршрут в сторону "провайдера"
R5(config)#ip route 0.0.0.0 0.0.0.0 211.181.24.51
R4(config)#ip route 0.0.0.0 0.0.0.0 211.181.25.112
2) Конфигурируем GRE туннель
-----------------------------
R5(config)#interface Tunnel0
*Mar 1 00:01:47.799: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel0, changed state to down
R5(config-if)#ip address 10.0.100.1 255.255.255.0
R5(config-if)#tunnel source fastEthernet 0/0
R5(config-if)#tunnel destination 211.181.25.221
R5(config-if)#
*Mar 1 00:02:48.707: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel0, changed state to up
R5(config-if)#exit
-----------------------------
R4(config)#int Tunnel0
*Mar 1 00:03:24.595: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel0, changed state to down
R4(config-if)#ip address 10.0.100.2 255.255.255.0
R4(config-if)#tunnel source fastEthernet 0/0
R4(config-if)#tunnel destination 211.181.24.15
R4(config-if)#
*Mar 1 00:04:11.403: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel0, changed state to up
R4(config-if)#exit
-----------------------------
Пингуем и проверяем, что маршрутизация не хромает и нигде не ошиблись в базовой настройке
R4(config)#do ping 10.0.100.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.100.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 20/38/68 ms
R4(config)#
3) Расписываем маршрутизацию EIGRP AS2 на LAN и Туннель
-----------------------------
R5(config)#router eigrp 2
R5(config-router)#no au
R5(config-router)#no auto-summary
R5(config-router)#net
R5(config-router)#network 10.0.100.1 0.0.0.255
R5(config-router)#net
R5(config-router)#network 10.0.1.254 0.0.0.255
R5(config-router)#exit
R5(config)#
*Mar 1 00:20:28.251: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 2: Neighbor 10.0.100.2 (Tunnel0) is up: new adjacency
R5(config)#
-----------------------------
R4(config)#router eigrp 2
R4(config-router)#no au
R4(config-router)#no auto-summary
R4(config-router)#net
R4(config-router)#network 10.0.100.2 0.0.0.255
R4(config-router)#net
R4(config-router)#network
*Mar 1 00:20:18.731: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 2: Neighbor 10.0.100.1 (Tunnel0) is up: new adjacency
R4(config-router)#network 10.0.2.254 0.0.0.255
R4(config-router)#exit
-----------------------------
Проверяем что все настроено правильно и маршрутизация работает
R4(config)#do sh ip ro
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is 211.181.25.112 to network 0.0.0.0
C 211.181.25.0/24 is directly connected, FastEthernet0/0
D 211.181.24.0/24 [90/30720] via 211.181.25.112, 00:20:39, FastEthernet0/0
10.0.0.0/24 is subnetted, 3 subnets
C 10.0.2.0 is directly connected, FastEthernet0/1
D 10.0.1.0 [90/297246976] via 10.0.100.1, 00:00:30, Tunnel0
C 10.0.100.0 is directly connected, Tunnel0
S* 0.0.0.0/0 [1/0] via 211.181.25.112
R4(config)#
4) Сконфигурируем ISAKMP
а) Политики
-----------------------------
R5(config)#crypto isakmp enable
R5(config)#crypto isakmp policy 10
R5(config-isakmp)#authentication pre-share
R5(config-isakmp)#encryption des
R5(config-isakmp)#group 2
R5(config-isakmp)#hash sha
R5(config-isakmp)#lifetime 86400
R5(config-isakmp)#exit
-----------------------------
R4(config)#crypto isakmp enable
R4(config)#crypto isakmp policy 10
R4(config-isakmp)#authentication pre-share
R4(config-isakmp)#encryption des
R4(config-isakmp)#group 2
R4(config-isakmp)#hash sha
R4(config-isakmp)#lifetime 86400
R4(config-isakmp)#exit
б) ключи
-----------------------------
R5(config)#crypto isakmp key 0 cisco111 address 211.181.25.221
-----------------------------
R4(config)#crypto isakmp key 0 cisco111 address 211.181.24.15
-----------------------------
5) Задаём трансформу ( вид шифрования трафика в туннеле )
R5(config)#crypto ipsec transform-set CryptoTransformTunnel esp-aes 128
R5(cfg-crypto-trans)#exit
-----------------------------
R4(config)#crypto ipsec transform-set CryptoTransformTunnel esp-aes 128
R4(cfg-crypto-trans)#exit
6) Задаём ACL (карту совпадения) согласно которому будет шифроваться трафик
-----------------------------
R5(config)#access-list 101 permit gre host 211.181.24.15 host 211.181.25.221
-----------------------------
R4(config)#access-list 101 permit gre host 211.181.25.221 host 211.181.24.15
7) Создаём Crypto-Map и применяем на интерфейс
-----------------------------
R5(config)#crypto map MapOffice 5 ipsec-isakmp
% NOTE: This new crypto map will remain disabled until a peer
and a valid access list have been configured.
R5(config-crypto-map)#match address 101
R5(config-crypto-map)#set peer 211.181.25.221
R5(config-crypto-map)#set transform-set CryptoTransformTunnel
R5(config-crypto-map)#set pfs group1
R5(config-crypto-map)#set security-association lifetime seconds 86400
R5(config-crypto-map)#exit
R5(config)#int fa 0/0
R5(config-if)#crypt
R5(config-if)#crypto map MapOffice
R5(config-if)#
-----------------------------
ISAKMP включился -- настроен потенциально верно
*Mar 1 07:55:24.074: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON
R5(config-if)#
-----------------------------
Регистрация события -- получен не IPSec
*Mar 1 07:55:25.158: %CRYPTO-4-RECVD_PKT_NOT_IPSEC: Rec'd packet not an IPSEC packet.
(ip) vrf/dest_addr= /211.181.24.15, src_addr= 211.181.25.221, prot= 47
R5(config-if)#
-----------------------------
GRE туннель опущен из-за несовместимости IPSec на концах туннеля
*Mar 1 07:55:35.226: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 2: Neighbor 10.0.100.2 (Tunnel0) is down: holding time expired
R5(config-if)#exit
R5(config)#do ping 10.0.100.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.100.2, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
R5(config-if)#
*Mar 1 07:56:29.770: %CRYPTO-4-RECVD_PKT_NOT_IPSEC: Rec'd packet not an IPSEC packet.
(ip) vrf/dest_addr= /211.181.24.15, src_addr= 211.181.25.221, prot= 47
R5(config-if)#
-----------------------------
Теперь настраиваем IPSec с другой стороны
Прогнозируемый результат:
-- установление IPSec туннеля
-- повторное автоматическое поднятие GRE туннеля теперь с IPSec шифрацией трафика
-- повторное установление EIGRP соседства и возобновление маршрутизации
Как и ожидалось туннель GRE опустился как показано выше с момента как был включен IPSec на другой стороне
*Mar 1 07:55:29.374: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 2: Neighbor 10.0.100.1 (Tunnel0) is down: holding time expired
R4(config)#crypto map MapOffice 5 ipsec-isakmp
% NOTE: This new crypto map will remain disabled until a peer
and a valid access list have been configured.
R4(config-crypto-map)#match address 101
R4(config-crypto-map)#set peer 211.181.24.15
R4(config-crypto-map)#set transform-set CryptoTransformTunnel
R4(config-crypto-map)#set pfs group1
R4(config-crypto-map)#set security-association lifetime seconds 86400
R4(config-crypto-map)#exit
R4(config)#int fa 0/0
R4(config-if)#cryp
R4(config-if)#crypto map MapOffice
R4(config-if)#
*Mar 1 08:20:26.289: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON
R4(config-if)#
-----------------------------
Прогнозируемое поднятие туннеля GRE и возобновление соседства
*Mar 1 08:20:27.573: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 2: Neighbor 10.0.100.1 (Tunnel0) is up: new adjacency
R4(config-if)#
-----------------------------
Проверка пинга и прохождения пакетов через туннель
R4#ping 10.0.100.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.100.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 24/68/120 ms
R4#show crypto ipsec sa
interface: FastEthernet0/0
Crypto map tag: MapOffice, local addr 211.181.25.221
protected vrf: (none)
local ident (addr/mask/prot/port): (211.181.25.221/255.255.255.255/47/0)
remote ident (addr/mask/prot/port): (211.181.24.15/255.255.255.255/47/0)
current_peer 211.181.24.15 port 500
PERMIT, flags={origin_is_acl,}
#pkts encaps: 141, #pkts encrypt: 141, #pkts digest: 141
#pkts decaps: 148, #pkts decrypt: 148, #pkts verify: 148
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts compr. failed: 0
#pkts not decompressed: 0, #pkts decompress failed: 0
#send errors 1, #recv errors 0
-----------------------------
Проверка роутинга
R4#sh ip ro
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is 211.181.25.112 to network 0.0.0.0
C 211.181.25.0/24 is directly connected, FastEthernet0/0
D 211.181.24.0/24 [90/30720] via 211.181.25.112, 08:30:31, FastEthernet0/0
10.0.0.0/24 is subnetted, 3 subnets
C 10.0.2.0 is directly connected, FastEthernet0/1
D 10.0.1.0 [90/297246976] via 10.0.100.1, 00:10:13, Tunnel0
C 10.0.100.0 is directly connected, Tunnel0
S* 0.0.0.0/0 [1/0] via 211.181.25.112
R4#
8) Убедиться что трафик идущий через тоннель шифрован
а) Убедиться что данные зашифрованы IPSec
Подключить Wireshark на интерфейс fa0/0 R5 и начать обмен данными между хостами (скачивать файл например). Сразу заметно, что данные только в зашифрованном виде (здесь был пущен банальный пинг по туннелю)
б) Убедиться, что данные идут по GRE туннелю (хотя это очевидно из построенной маршрутизации, проверить лишним не будет)
-----------------------------
Даём пинг с хоста xp_http_ftp_cisco(10.0.1.2) на хост xp_http_ftp_cisco1(10.0.1.2)
admin>ping 10.0.2.2
Обмен пакетами с 10.0.2.2 по 32 байт:
Ответ от 10.0.2.2: число байт=32 время=136мс TTL=126
Ответ от 10.0.2.2: число байт=32 время=145мс TTL=126
Ответ от 10.0.2.2: число байт=32 время=119мс TTL=126
Ответ от 10.0.2.2: число байт=32 время=98мс TTL=126
-----------------------------
Теперь опускаем GRE туннель
R4(config)#int Tunnel 0
R4(config-if)#sh
R4(config-if)#
*Mar 1 08:38:45.365: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 2: Neighbor 10.0.100.1 (Tunnel0) is down: interface down
R4(config-if)#
*Mar 1 08:38:47.181: %LINK-5-CHANGED: Interface Tunnel0, changed state to administratively down
*Mar 1 08:38:48.181: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel0, changed state to down
R4(config-if)#
-----------------------------
И повторяем пинг
admin>ping 10.0.2.2
Обмен пакетами с 10.0.2.2 по 32 байт:
Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.
Настройка и проверка завершены. Поставленная задача достигнута.
суббота, 17 мая 2014 г.
IPSec Error Debug Configuration
Use the debug crypto isakmp command to troubleshoot this issue, as shown in Example 8-56.
Example 8-56. Responder Has No Preshared Key for the Initiator
Osaka#debug crypto isakmp Crypto ISAKMP debugging is on *May 13 16:57:07.283 GMT: ISAKMP (0:2): Input = IKE_MESG_FROM_PEER, IKE_MM_EXCH Old State = IKE_READY New State = IKE_R_MM1 *May 13 16:57:07.283 GMT: ISAKMP (0:2): processing SA payload. message ID = 0 *May 13 16:57:07.283 GMT: ISAKMP (0:2): No pre-shared key with 172.16.5.1! *May 13 16:57:07.283 GMT: ISAKMP (0:2): Checking ISAKMP transform 1 against priority 10 policy *May 13 16:57:07.283 GMT: ISAKMP: encryption DES-CBC *May 13 16:57:07.283 GMT: ISAKMP: hash MD5 *May 13 16:57:07.283 GMT: ISAKMP: default group 1 *May 13 16:57:07.283 GMT: ISAKMP: auth pre-share *May 13 16:57:07.283 GMT: ISAKMP: life type in seconds *May 13 16:57:07.283 GMT: ISAKMP: life duration (VPI) of 0x0 0x1 0x51 0x80 *May 13 16:57:07.283 GMT: ISAKMP (0:2): Preshared authentication offered but does not match policy! *May 13 16:57:07.283 GMT: ISAKMP (0:2): atts are not acceptable. Next payload is 0 *May 13 16:57:07.283 GMT: ISAKMP (0:2): Checking ISAKMP transform 1 against priority 65535 policy *May 13 16:57:07.283 GMT: ISAKMP: encryption DES-CBC *May 13 16:57:07.283 GMT: ISAKMP: hash MD5 *May 13 16:57:07.283 GMT: ISAKMP: default group 1 *May 13 16:57:07.283 GMT: ISAKMP: auth pre-share *May 13 16:57:07.283 GMT: ISAKMP: life type in seconds *May 13 16:57:07.283 GMT: ISAKMP: life duration (VPI) of 0x0 0x1 0x51 0x80 *May 13 16:57:07.283 GMT: ISAKMP (0:2): Hash algorithm offered does not match policy! *May 13 16:57:07.287 GMT: ISAKMP (0:2): atts are not acceptable. Next payload is 0 *May 13 16:57:07.287 GMT: ISAKMP (0:2): no offers accepted! *May 13 16:57:07.287 GMT: ISAKMP (0:2): phase 1 SA not acceptable! *May 13 16:57:07.287 GMT: ISAKMP (0:2): incrementing error counter on sa: construct_fail_ag_init *May 13 16:57:07.287 GMT: ISAKMP (0:2): Input = IKE_MESG_INTERNAL, IKE_PROCESS_MAIN_MODE Old State = IKE_R_MM1 New State = IKE_R_MM1 *May 13 16:57:07.287 GMT: ISAKMP (0:2): Input = IKE_MESG_INTERNAL, IKE_PROCESS_ERROR Old State = IKE_R_MM1 New State = IKE_READY Osaka#In highlighted line 1, the IKE state changes from IKE_READY to IKE_R_MM1. Osaka has received the first message in the main mode exchange from router Tokyo. Note the R in the output here—it indicates that Osaka is the responder.
Osaka then begins to process the SA payload (highlighted line 2), but in highlighted line 3, it reports that it does not have a preshared key for the initiator.
Osaka continues to process the SA payload in the following lines, but in highlighted line 4, the IKE state changes back to IKE_READY, indicating that phase 1 negotiation has failed.
The reason for the failure was, of course, indicated in highlighted line 3. Osaka does not have a preshared key for Tokyo.
Osaka's configuration is then examined using the show running-config command as demonstrated in Example 8-57. Note that only the relevant portion of the output is shown.
Example 8-57. Osaka's Configuration
Osaka#show running-config Building configuration... ! crypto isakmp policy 10 hash md5 authentication pre-share crypto isakmp key cisco address 172.16.4.1 !As you can see, there is only one preshared key configured, and it is configured for peer 172.16.4.1. In fact, there is no such peer—it should be 172.16.5.1 (Tokyo).
The preshared key is then reconfigured, as shown in Example 8-58.
Example 8-58. Reconfiguration of the Preshared Key
Osaka#conf t Enter configuration commands, one per line. End with CNTL/Z. Osaka(config)#no crypto isakmp key cisco address 172.16.4.1 Osaka(config)#crypto isakmp key cisco address 172.16.5.1 Osaka(config)#exit Osaka#The highlighted lines show where the preshared key is reconfigured.
Once the preshared key has been reconfigured, IKE phase 1 negotiation is successful, as shown in Example 8-59.
Example 8-59. IKE Phase 1 Negotiation Succeeds
Osaka#show crypto isakmp sa dst src state conn-id slot 172.16.6.2 172.16.5.1 QM_IDLE 9 0 Osaka#
пятница, 16 мая 2014 г.
IPSec более подробно
Концепция site-to-site VPN и Remote Vpn
Так выглядят 2 основных концепта построения IPSec
2 обобщённые комбинации
Подробное рассмотрение составлящих IPSec
Две разновидности IPSec: AH и ESP. AH не шифрует трафик, потому сразу на помойку, приведено только для общей информации
AH
И, наконец, самое вкусное, ESP
Security Associations
An SA is a basic building block of IPsec. Security associations are maintained within a SA database (SADB), which is established by each device. A VPN has SA entries defining the IPsec encryption parameters as well as SA entries defining the key exchange parameters.
All cryptographic systems, including the Caesar cipher, Vigenere cipher, Enigma machine, to modern encryption algorithms, must deal with key management issues. Diffie-Hellman (DH) is used to create the shared secret key. However, IPsec uses the Internet Key Exchange (IKE) protocol to establish the key exchange process.
Instead of transmitting keys directly across a network, IKE calculates shared keys based on the exchange of a series of data packets. This disables a third party from decrypting the keys even if the third party captured all exchanged data that is used to calculate the keys.
IKE is layered on UDP and uses UDP port 500 to exchange IKE information between the security gateways. UDP port 500 packets must be permitted on any IP interface involved in connecting a security gateway peer.
IKE is defined in RFC 2409. It is a hybrid protocol, combining the Internet Security Association and Key Management Protocol (ISAKMP) and the Oakley and Skeme key exchange methods. ISAKMP defines the message format, the mechanics of a key-exchange protocol, and the negotiation process to build an SA for IPsec. ISAKMP does not define how keys are managed or shared between the two IPsec peers. Oakley and Skeme have five defined key groups. Of these groups, Cisco routers support Group 1 (768-bit key), Group 2 (1024-bit key), and Group 5 (1536-bit key).
IKE combines these protocols to build secure IPsec connections between devices. It establishes SAs that are mutually agreeable to each peer. Each peer must have identical ISAKMP and IPsec parameters to establish an operational and secure VPN. Note that the terms ISAKMP and IKE are commonly used by industry people to refer to IKE.
An alternative to using IKE is to manually configure all parameters required to establish a secure IPsec connection. This process is impractical because it does not scale.
Phase 1 - Two IPsec peers perform the initial negotiation of SAs. The basic purpose of Phase 1 is to negotiate IKE policy sets, authenticate the peers, and set up a secure channel between the peers. It can be implemented in main mode (longer, initial contact) or aggressive mode (after initial contact).
Phase 2 - SAs are negotiated by the IKE process ISAKMP on behalf of IPsec. It can be negotiated in quick mode.
Общая схема выглядит вот так, но ОНА ТУПАЯ
-------------------------------------------------------------------------------------------
Непосредственно конфигурация по делу
Подписаться на:
Сообщения (Atom)

_SPOKE1(DualISP)_SPOKE2_(SingleISP)_topology.jpg)
_SPOKE1(DualISP)_SPOKE2_(SingleISP)_concept_of_decision.jpg)
_SPOKE1(DualISP)_SPOKE2_(SingleISP)_logic_module.jpg)
_SPOKE1(DualISP)_SPOKE2_(SingleISP)_example1.jpg)
















































