пятница, 12 декабря 2014 г.

ASA Site-to-Site IPsec dual-ISP redundancy

Есть два офиса. В одном (главном) два аплика, в другом - один. В офисах стоят ASA 5505. Между ними IPSec Site-toSite tunnel. При падении основного канала нужно, чтобы туннель автоматически поднимался через резервный.


Схема в GNS3

На sw1 не обращайте внимания, он выведен в реальную сеть для управления фаерволами. Трафик идет через маршрутизаторы.



Для реализации этой схемы необходимо на основной асе с двумя провайдерами сделать одну tunnel-group и две одинаковые крипто-карты с разными названиями, чтобы приклеить их к разными интерфейсам провайдеров. Резервирование маршрута "по-умолчанию" реализовано с помощью track и ip sla. Reverse-route вставлять не надо т.к. в случае падения канала и переключения VPN на другой линк будут два равнозначных маршрута, но приоритетным будет первый в случае, если не упадет интерфейс первого провайдера. Это может произойти в случает если шнур провайдера приходит в коммутатор,  а из него уже в асу.


access-list CRYPTO_ACL_00 extended permit ip object-group Obj-Grp_inside object-group Obj-Grp_remote
crypto ipsec ikev1 transform-set 3DES_SHA esp-3des esp-sha-hmac

crypto map CRYPTO_MAP_00 10 match address CRYPTO_ACL_00
crypto map CRYPTO_MAP_00 10 set peer 10.7.2.2
crypto map CRYPTO_MAP_00 10 set ikev1 transform-set 3DES_SHA
crypto map CRYPTO_MAP_00 10 set reverse-route
crypto map CRYPTO_MAP_00 interface outside15
crypto ikev1 enable outside15

crypto map CRYPTO_MAP_01 10 match address CRYPTO_ACL_00
crypto map CRYPTO_MAP_01 10 set peer 10.7.2.2
crypto map CRYPTO_MAP_01 10 set ikev1 transform-set 3DES_SHA
crypto map CRYPTO_MAP_01 interface outside16
crypto ikev1 enable outside16

!
crypto ikev1 policy 10
 authentication pre-share
 encryption 3des
 hash sha
 group 2
 lifetime 86400
!
tunnel-group 10.7.2.2 type ipsec-l2l
tunnel-group 10.7.2.2 ipsec-attributes
 ikev1 pre-shared-key cisco
!          
nat (inside,outside15) source static Obj-Grp_inside Obj-Grp_inside destination static Obj-Grp_remote Obj-Grp_remote route-lookup

На асе в резервном офисе нужно создать две tunnel-group. В крипто-карте нужно прописать в строке peer адреса двух isp первого офиса.

access-list CRYPTO_ACL_00 extended permit ip object-group Obj-Grp_inside object-group Obj-Grp_remote
crypto ipsec ikev1 transform-set 3DES_SHA esp-3des esp-sha-hmac

crypto map CRYPTO_MAP_00 10 match address CRYPTO_ACL_00
crypto map CRYPTO_MAP_00 10 set peer 10.1.5.1 10.1.6.1
crypto map CRYPTO_MAP_00 10 set ikev1 transform-set 3DES_SHA
crypto map CRYPTO_MAP_00 interface outside
crypto ikev1 enable outside
crypto ikev1 policy 10
 authentication pre-share
 encryption 3des
 hash sha
 group 2
 lifetime 86400
!
tunnel-group 10.1.5.1 type ipsec-l2l
tunnel-group 10.1.5.1 ipsec-attributes
 ikev1 pre-shared-key cisco
!
tunnel-group 10.1.6.1 type ipsec-l2l
tunnel-group 10.1.6.1 ipsec-attributes
 ikev1 pre-shared-key cisco
!
nat (inside,outside) source static Obj-Grp_inside Obj-Grp_inside destination static Obj-Grp_remote Obj-Grp_remote no-proxy-arp route-lookup

Конфиги с двух устройств схемы gns:

ASA1:
ASA Version 8.4(2)
!
hostname ciscoasa
enable password 8Ry2YjIyt7RRXU24 encrypted
passwd 2KFQnbNIdI.2KYOU encrypted
names
!
interface GigabitEthernet0
 nameif inside
 security-level 100
 ip address 10.3.1.1 255.255.255.0
!
interface GigabitEthernet1
 nameif outside15
 security-level 0
 ip address 10.1.5.1 255.255.255.0
!
interface GigabitEthernet2
 nameif outside16
 security-level 0
 ip address 10.1.6.1 255.255.255.0
!
interface GigabitEthernet3
 no nameif  
 no security-level
 no ip address
!
interface GigabitEthernet3.3
 vlan 3
 nameif mgmt
 security-level 0
 ip address 192.168.247.246 255.255.252.0
!
interface GigabitEthernet4
 shutdown
 no nameif
 no security-level
 no ip address
!
interface GigabitEthernet5
 shutdown
 no nameif
 no security-level
 no ip address
!
ftp mode passive
object network Obj_inside_net
 subnet 10.3.1.0 255.255.255.0
object network Obj_inside_net_lo0
 host 3.3.3.3
object network Obj_remote_net
 subnet 10.2.4.0 255.255.255.0
object network Obj_remote_net_lo0
 host 4.4.4.4
object-group network Obj-Grp_inside
 network-object object Obj_inside_net
 network-object object Obj_inside_net_lo0
object-group network Obj-Grp_remote
 network-object object Obj_remote_net
 network-object object Obj_remote_net_lo0
access-list CRYPTO_ACL_00 extended permit ip object-group Obj-Grp_inside object-group Obj-Grp_remote
pager lines 24
mtu inside 1500
mtu outside15 1500
mtu outside16 1500
mtu mgmt 1500
no failover
icmp unreachable rate-limit 1 burst-size 1
asdm image disk0:/asdm-647.bin
no asdm history enable
arp timeout 14400
nat (inside,outside15) source static Obj-Grp_inside Obj-Grp_inside destination static Obj-Grp_remote Obj-Grp_remote no-proxy-arp route-lookup
nat (inside,outside16) source static Obj-Grp_inside Obj-Grp_inside destination static Obj-Grp_remote Obj-Grp_remote no-proxy-arp route-lookup
!
nat (inside,outside15) after-auto source dynamic Obj-Grp_inside interface
nat (inside,outside16) after-auto source dynamic Obj-Grp_inside interface
route outside15 0.0.0.0 0.0.0.0 10.1.5.5 100 track 5
route outside16 0.0.0.0 0.0.0.0 10.1.6.6 200 track 6
route inside 3.3.3.3 255.255.255.255 10.3.1.3 1
route mgmt 192.168.253.0 255.255.255.0 192.168.244.6 1
timeout xlate 3:00:00
timeout conn 1:00:00 half-closed 0:10:00 udp 0:02:00 icmp 0:00:02
timeout sunrpc 0:10:00 h323 0:05:00 h225 1:00:00 mgcp 0:05:00 mgcp-pat 0:05:00
timeout sip 0:30:00 sip_media 0:02:00 sip-invite 0:03:00 sip-disconnect 0:02:00
timeout sip-provisional-media 0:02:00 uauth 0:05:00 absolute
timeout tcp-proxy-reassembly 0:01:00
timeout floating-conn 0:00:00
dynamic-access-policy-record DfltAccessPolicy
user-identity default-domain LOCAL
http server enable
http 0.0.0.0 0.0.0.0 mgmt
no snmp-server location
no snmp-server contact
snmp-server enable traps snmp authentication linkup linkdown coldstart warmstart
sla monitor 5
 type echo protocol ipIcmpEcho 10.1.5.5 interface outside15
 num-packets 3
 threshold 9000
 frequency 15
sla monitor schedule 5 life forever start-time now
sla monitor 6
 type echo protocol ipIcmpEcho 10.1.6.6 interface outside16
 num-packets 3
 threshold 9000
 frequency 15
sla monitor schedule 6 life forever start-time now
crypto ipsec ikev1 transform-set 3DES_SHA esp-3des esp-sha-hmac
crypto map CRYPTO_MAP_00 10 match address CRYPTO_ACL_00
crypto map CRYPTO_MAP_00 10 set peer 10.7.2.2
crypto map CRYPTO_MAP_00 10 set ikev1 transform-set 3DES_SHA
crypto map CRYPTO_MAP_00 interface outside15
crypto map CRYPTO_MAP_01 10 match address CRYPTO_ACL_00
crypto map CRYPTO_MAP_01 10 set peer 10.7.2.2
crypto map CRYPTO_MAP_01 10 set ikev1 transform-set 3DES_SHA
crypto map CRYPTO_MAP_01 interface outside16
crypto ikev1 enable outside15
crypto ikev1 enable outside16
crypto ikev1 policy 10
 authentication pre-share
 encryption 3des
 hash sha
 group 2
 lifetime 86400
!
track 5 rtr 5 reachability
!
track 6 rtr 6 reachability
telnet timeout 5
ssh timeout 5
console timeout 0
threat-detection basic-threat
threat-detection statistics access-list
no threat-detection statistics tcp-intercept
webvpn
 anyconnect-essentials
tunnel-group 10.7.2.2 type ipsec-l2l
tunnel-group 10.7.2.2 ipsec-attributes
 ikev1 pre-shared-key *****
!
class-map inspection_default
 match default-inspection-traffic
!
!
policy-map type inspect dns preset_dns_map
 parameters
  message-length maximum client auto
  message-length maximum 512
policy-map global_policy
 class inspection_default
  inspect dns preset_dns_map
  inspect ftp
  inspect h323 h225
  inspect h323 ras
  inspect ip-options
  inspect netbios
  inspect rsh
  inspect rtsp
  inspect skinny
  inspect esmtp
  inspect sqlnet
  inspect sunrpc
  inspect tftp
  inspect sip
  inspect xdmcp
  inspect icmp
!
service-policy global_policy global
prompt hostname context
no call-home reporting anonymous
call-home
 profile CiscoTAC-1
  no active
  destination address http https://tools.cisco.com/its/service/oddce/services/DDCEService
  destination address email callhome@cisco.com
  destination transport-method http
  subscribe-to-alert-group diagnostic
  subscribe-to-alert-group environment
  subscribe-to-alert-group inventory periodic monthly
  subscribe-to-alert-group configuration periodic monthly
  subscribe-to-alert-group telemetry periodic daily
crashinfo save disable
Cryptochecksum:e487324ac478a73937ffaa264eab9bd4
: end


ASA2:
ASA Version 8.4(2)
!
hostname ciscoasa
enable password 8Ry2YjIyt7RRXU24 encrypted
passwd 2KFQnbNIdI.2KYOU encrypted
names
!
interface GigabitEthernet0
 nameif inside
 security-level 100
 ip address 10.2.4.2 255.255.255.0
!
interface GigabitEthernet1
 nameif outside
 security-level 0
 ip address 10.7.2.2 255.255.255.0
!
interface GigabitEthernet2
 no nameif
 no security-level
 no ip address
!
interface GigabitEthernet3
 no nameif  
 no security-level
 no ip address
!
interface GigabitEthernet3.3
 vlan 3
 nameif mgmt
 security-level 0
 ip address 192.168.247.247 255.255.252.0
!
interface GigabitEthernet4
 shutdown
 no nameif
 no security-level
 no ip address
!
interface GigabitEthernet5
 shutdown
 no nameif
 no security-level
 no ip address
!
ftp mode passive
object network Obj_inside_net
 subnet 10.2.4.0 255.255.255.0
object network Obj_inside_net_lo0
 host 4.4.4.4
object network Obj_remote_net
 subnet 10.3.1.0 255.255.255.0
object network Obj_remote_net_lo0
 host 3.3.3.3
object-group network Obj-Grp_inside
 network-object object Obj_inside_net
 network-object object Obj_inside_net_lo0
object-group network Obj-Grp_remote
 network-object object Obj_remote_net
 network-object object Obj_remote_net_lo0
access-list CRYPTO_ACL_00 extended permit ip object-group Obj-Grp_inside object-group Obj-Grp_remote
pager lines 24
mtu inside 1500
mtu outside 1500
mtu mgmt 1500
no failover
icmp unreachable rate-limit 1 burst-size 1
asdm image disk0:/asdm-647.bin
no asdm history enable
arp timeout 14400
nat (inside,outside) source static Obj-Grp_inside Obj-Grp_inside destination static Obj-Grp_remote Obj-Grp_remote no-proxy-arp route-lookup
!          
nat (inside,outside) after-auto source dynamic Obj-Grp_inside interface
route outside 0.0.0.0 0.0.0.0 10.7.2.7 1
route inside 4.4.4.4 255.255.255.255 10.2.4.4 1
route mgmt 192.168.253.0 255.255.255.0 192.168.244.6 1
timeout xlate 3:00:00
timeout conn 1:00:00 half-closed 0:10:00 udp 0:02:00 icmp 0:00:02
timeout sunrpc 0:10:00 h323 0:05:00 h225 1:00:00 mgcp 0:05:00 mgcp-pat 0:05:00
timeout sip 0:30:00 sip_media 0:02:00 sip-invite 0:03:00 sip-disconnect 0:02:00
timeout sip-provisional-media 0:02:00 uauth 0:05:00 absolute
timeout tcp-proxy-reassembly 0:01:00
timeout floating-conn 0:00:00
dynamic-access-policy-record DfltAccessPolicy
user-identity default-domain LOCAL
http server enable
http 0.0.0.0 0.0.0.0 mgmt
no snmp-server location
no snmp-server contact
snmp-server enable traps snmp authentication linkup linkdown coldstart warmstart
crypto ipsec ikev1 transform-set 3DES_SHA esp-3des esp-sha-hmac
crypto map CRYPTO_MAP_00 10 match address CRYPTO_ACL_00
crypto map CRYPTO_MAP_00 10 set peer 10.1.5.1 10.1.6.1
crypto map CRYPTO_MAP_00 10 set ikev1 transform-set 3DES_SHA
crypto map CRYPTO_MAP_00 10 set reverse-route
crypto map CRYPTO_MAP_00 interface outside
crypto ikev1 enable outside
crypto ikev1 policy 10
 authentication pre-share
 encryption 3des
 hash sha
 group 2
 lifetime 86400
telnet timeout 5
ssh timeout 5
console timeout 0
threat-detection basic-threat
threat-detection statistics access-list
no threat-detection statistics tcp-intercept
webvpn
tunnel-group 10.1.5.1 type ipsec-l2l
tunnel-group 10.1.5.1 ipsec-attributes
 ikev1 pre-shared-key *****
tunnel-group 10.1.6.1 type ipsec-l2l
tunnel-group 10.1.6.1 ipsec-attributes
 ikev1 pre-shared-key *****
!
class-map inspection_default
 match default-inspection-traffic
!          
!
policy-map type inspect dns preset_dns_map
 parameters
  message-length maximum client auto
  message-length maximum 512
policy-map global_policy
 class inspection_default
  inspect dns preset_dns_map
  inspect ftp
  inspect h323 h225
  inspect h323 ras
  inspect ip-options
  inspect netbios
  inspect rsh
  inspect rtsp
  inspect skinny
  inspect esmtp
  inspect sqlnet
  inspect sunrpc
  inspect tftp
  inspect sip
  inspect xdmcp
  inspect icmp
!          
service-policy global_policy global
prompt hostname context
no call-home reporting anonymous
call-home
 profile CiscoTAC-1
  no active
  destination address http https://tools.cisco.com/its/service/oddce/services/DDCEService
  destination address email callhome@cisco.com
  destination transport-method http
  subscribe-to-alert-group diagnostic
  subscribe-to-alert-group environment
  subscribe-to-alert-group inventory periodic monthly
  subscribe-to-alert-group configuration periodic monthly
  subscribe-to-alert-group telemetry periodic daily
crashinfo save disable
Cryptochecksum:2911a78ee976d4c4074548f0e8bc0986
: end

4 комментария:

  1. Добрый день!

    Спасибо за статью.
    Можете подсказать как реализовать следующую схему?
    Есть 2 офиса. В одном 2 провайдера, во втором один, плюс ко всему отдельная оптика между офисами для поднятия туннеля.
    Оптический линк необходимо сделать приоритетным для site-to-site VPN.
    Другими словами когда всё хорошо и есть оптика то трафик между офисами должен идти и шифроваться именно по ней, но в случае проблем весь трафик уходит через активного провайдера.
    Когда же оптика возвращается необходимо чтобы трафик между офисами снова бежал по оптике. Маршрутизация внутренних сетей реализована через track и ip sla.
    Дело в том что если оптика исчезает и VPN поднимается через внешнюю сеть, то при восстановлении связи по оптике VPN не переподключается и трафик так и бежит через внешних провайдеров.
    Буду очень благодарен за помощь.

    ОтветитьУдалить
  2. Добрый день!
    А обязательно использовать две одинаковые крипто-карты с разными названиями, чтобы приклеить их к разными интерфейсам провайдеров?
    ASA позволяет одну крипто-карту привязать к разным интерфейсам. Или так работать не будет?

    ОтветитьУдалить