CISCO ASA 5520

По работе — failover + nat CISCO ASA на gns3(часть 1)

Заказчик ПО выделил нам две cisco asa 5520 и n-ое количество серверов. С данным железом я знаком, но настройку с нуля не приходилось проводить. Поэтому прежде, чем предъявить заказчику требования по организации L2/L3, решил собрать схему на эмуляторе.

Что я хочу попробовать:

failover в схеме active-passive, убиваем одну, вторая должна автоматом подключиться;

monitor interface, failover при падении важных линков;

nat/pat;

ASA в качестве шлюза для сети;

Почесав репу, собрал такую схему(рис .1):

Рис. 1

Рис. 1

 

Не буду описывать настройку GNS3, подключение CISCO ASA к данному эмулятору — все это есть в интернете.

Версия IOS, используемая  в ASA — 8.4, на ASA используется 3 порта.  Для эмуляции серверов использовал linux-microcore-2.10 и мини образ дебиана 6.

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

Адреса интерфейсов, указание зон и маршрутов приведены ниже:

Name Interfaces IP GW ZONE
Microcore eth0 10.0.0.2/24 10.0.0.1/24 private
10.0.0.6/24 private
Microcore_5 eth0 10.0.0.4/24 10.0.0.1/24 private
eth1 10.0.0.5/24 private
10.0.0.7/24 private
ASA1 e0 10.0.0.1/24 172.16.0.254/24 private
e1 192.168.0.1/30 failover
e2 172.16.0.253/24 public
ASA4 e0 10.0.0.3/24 172.16.0.254/24 private
e1 192.168.0.2/30 failover
e2 172.16.0.252/24 public
debian eth1 172.16.0.250 172.16.0.253/24 public
C1 loopback 172.16.0.254/24 no public

Что бы я хотел проверить?  

— хочу пускать сервера в интернет без NAT

— хочу выпускать в интернет через NAT;

— через NAT используя NAT-pool;

— и сделать своеобразный редирект портов.

Ниже, мои «хотелки» сведены в таблицу:

IP NAT,ACL
10.0.0.2/24 Без NAT, tcp/80
10.0.0.6/2410.0.0.5/24 NAT-pool(172.16.0.230-231), icmp only
10.0.0.4/24 NAT(172.16.0.244),icmp, tcp/81
10.0.0.7/24 NAT(172.16.0.240),icmp,tcp/3333-3333,tcp/4440-4444

Теперь перейдем к схеме.

Начнем с файловера.

Запустим наши обе ASA.

Сменим имена обеих ASA и активируем лицензии (так как это всего лишь «эмуль», то ищем любые в сети, к примеру эти):

activation-key 0x4a3ec071 0x0d86fbf6 0x7cb1bc48 0x8b48b8b0 0xf317c0b5

activation-key 0xb23bcf4a 0x1c713b4f 0x7d53bcbc 0xc4f8d09c 0x0e24c6b6

ciscoasa> en
Password:
ciscoasa#
ciscoasa# conf t
ciscoasa(config)#

***************************** NOTICE *****************************

Help to improve the ASA platform by enabling anonymous reporting,
which allows Cisco to securely receive minimal error and health
information from the device. To learn more about this feature,
please visit: http://www.cisco.com/go/smartcall

Would you like to enable anonymous error reporting to help improve
the product? [Y]es, [N]o, [A]sk later: n

In the future, if you would like to enable this feature,
issue the command "call-home reporting anonymous".

Please remember to save your configuration.

ciscoasa(config)# hostname ASA1
ASA1(config)#
ASA1(config)#
ASA1(config)# end
ASA1#
ASA1#
ASA1# activation-key 0x4a3ec071 0x0d86fbf6 0x7cb1bc48 0x8b48b8b0 0xf317c0b5
Validating activation key. This may take a few minutes...
Failed to retrieve permanent activation key.
Failover is different.
   running permanent activation key: Restricted(R)
   new permanent activation key: Unrestricted(UR)
WARNING: The running activation key was not updated with the requested key.
Proceed with update flash activation key? [confirm]
The flash permanent activation key was updated with the requested key,
and will become active after the next reload.
ASA1# activation-key 0xb23bcf4a 0x1c713b4f 0x7d53bcbc 0xc4f8d09c 0x0e24c6b6
Validating activation key. This may take a few minutes...

Ждем, пока наша «железка» посчитает(займет минут 15).

Потом перезагружаем железку:

ASA4# reload
System config has been modified. Save? [Y]es/[N]o:
Cryptochecksum: aa18ef33 fb426d8a 89492393 fe87a8a0

1985 bytes copied in 1.160 secs (1985 bytes/sec)
Proceed with reload? [confirm]

Не люблю, когда логи копятся прямо в консоль, уберу их. Также добавим параметры для логгирования и для удобства увеличим ширину консоли:

ASA1> en
Password:
ASA1# conf t
ASA1(config)# no logging console
ASA1(config)# terminal width 300
ASA1(config)# logging enable
ASA1(config)# logging timestamp
ASA1(config)# logging buffer-size 64000
ASA1(config)# end
ASA1# wr
Building configuration...
Cryptochecksum: fdae39cd cecad80f 959e8cc5 38d6548c

2075 bytes copied in 1.320 secs (2075 bytes/sec)
[OK]
ASA1#

Аналогично на второй ASA.

Настраиваем интерфейсы(ASA1):

ASA1# conf t
ASA1(config)# interface GigabitEthernet0
ASA1(config-if)#  nameif PRIVATE-1
INFO: Security level for "PRIVATE-1" set to 0 by default.
ASA1(config-if)#  security-level 100
ASA1(config-if)#  ip address 10.0.0.1 255.255.255.0 standby 10.0.0.3
ASA1(config-if)# no shut
ASA1(config-if)# exit
ASA1(config)# interface GigabitEthernet2
ASA1(config-if)#  nameif PUBLIC-1
INFO: Security level for "PUBLIC-1" set to 0 by default.
ASA1(config-if)#  security-level 0
ASA1(config-if)#  ip address 172.16.0.253 255.255.255.0 standby 172.16.0.252
ASA1(config-if)# no shut
ASA1(config-if)# exit
ASA1(config)# end
ASA1# wr
Building configuration...
Cryptochecksum: a4bc793d c0f6275a a4915ca3 f40b9e44

2189 bytes copied in 1.590 secs (2189 bytes/sec)
[OK]

ASA1# sh interface ip brief
Interface                  IP-Address      OK? Method Status                Protocol
GigabitEthernet0           10.0.0.1        YES manual up                    up
GigabitEthernet1           unassigned      YES unset  administratively down up
GigabitEthernet2           172.16.0.253    YES manual up                    up
GigabitEthernet3           unassigned      YES unset  administratively down up
ASA1#

Для справки, securety level — уровень безопасности, позволяет «указать» более или менее «безопасный» интерфейс.

NameIf — имя интерфейса, согласитесь, удобнее обращаться к интерфейсам по вполне логичным именам — пусть защищаемая сеть будет за интерфейсом PRIVTATE, весь остальной мир — за интерфейсами PUBLIC.

Повторяем аналогично для второй «железки» (да, да, да, точь-в-точь).

На первой ASA указываем, что она основная, настраиваем интерфейс и поднимаем его:

ASA1# conf t
ASA1(config)# failover lan unit primary
ASA1(config)# failover lan interface FAILOVER GigabitEthernet1
INFO: Non-failover interface config is cleared on GigabitEthernet1 and its sub-interfaces
ASA1(config)# failover interface ip FAILOVER 192.168.0.1 255.255.255.252 standby 192.168.0.2
ASA1(config)# int GigabitEthernet1
ASA1(config-if)# no shu
ASA1(config-if)# end
ASA1#

Включаем failover:

ASA1# conf t
ASA1(config)# fa
ASA1(config)# failover
ASA1(config)# end
ASA1# wr

Теперь на второй ASA, все аналогично, разве что она не Primary, a Secondary:

ASA4# conf t
ASA4(config)# in
ASA4(config)# interface gigabitEthernet 1
ASA4(config-if)# no shut
ASA4(config-if)# exit
ASA4(config)# failover lan unit secondary
ASA4(config)# failover lan interface FAILOVER gigabitEthernet1
INFO: Non-failover interface config is cleared on GigabitEthernet1 and its sub-interfaces
ASA4(config)# failover interface ip FAILOVER 192.168.0.1 255.255.255.252 standby 192.168.0.2
ASA4(config)#

Как только связь между ASA появится, они начнут синхронизировать конфиг и фактически — кластер готов.

При синхронизации ASA сругается на отсутствие пароля:

ASA4# ERROR: Password recovery was not changed, unable to access
the configuration register.

Не критично, пароль поставить довольно просто(хотя у меня работало и без него):

ASA1# conf t
ASA1(config)# failover key cisco
ASA1(config)# end
ASA1# wr

Теперь смотрим, что у нас получилось:

ASA1# sh failover
Failover On
Failover unit Primary
Failover LAN Interface: FAILOVER GigabitEthernet1 (up)
Unit Poll frequency 1 seconds, holdtime 15 seconds
Interface Poll frequency 5 seconds, holdtime 25 seconds
Interface Policy 1
Monitored Interfaces 2 of 60 maximum
Version: Ours 8.4(2), Mate 8.4(2)
Last Failover at: 05:38:56 UTC Nov 26 2013
        This host: Primary - Active
                Active time: 343 (sec)
                  Interface PRIVATE-1 (10.0.0.1): Normal (Monitored)
                  Interface PUBLIC-1 (172.16.0.253): Normal (Monitored)
        Other host: Secondary - Standby Ready
                Active time: 0 (sec)
                  Interface PRIVATE-1 (10.0.0.3): Normal (Monitored)
                  Interface PUBLIC-1 (172.16.0.252): Normal (Monitored)

Stateful Failover Logical Update Statistics
        Link : Unconfigured.

На главной ASA мы видим, что она главная.

ASA1# sh failover
Failover On
Failover unit Secondary
Failover LAN Interface: FAILOVER GigabitEthernet1 (up)
Unit Poll frequency 1 seconds, holdtime 15 seconds
Interface Poll frequency 5 seconds, holdtime 25 seconds
Interface Policy 1
Monitored Interfaces 2 of 60 maximum
Version: Ours 8.4(2), Mate 8.4(2)
Last Failover at: 05:27:25 UTC Nov 26 2013
        This host: Secondary - Standby Ready
                Active time: 0 (sec)
                  Interface PRIVATE-1 (10.0.0.3): Normal (Monitored)
                  Interface PUBLIC-1 (172.16.0.252): Normal (Monitored)
        Other host: Primary - Active
                Active time: 351 (sec)
                  Interface PRIVATE-1 (10.0.0.1): Normal (Monitored)
                  Interface PUBLIC-1 (172.16.0.253): Normal (Monitored)

Stateful Failover Logical Update Statistics
        Link : Unconfigured.

На второй ASA видим, что она неглавная))

Меня не устраивает надпись:

Stateful Failover Logical Update Statistics

Link : Unconfigured.

Я хочу statefull.

Активируем:

ASA1(config)# failover link FAILOVER

И смотрим:

ASA1# sh failover
Failover On
Failover unit Primary
Failover LAN Interface: FAILOVER GigabitEthernet1 (up)
Unit Poll frequency 1 seconds, holdtime 15 seconds
Interface Poll frequency 5 seconds, holdtime 25 seconds
Interface Policy 1
Monitored Interfaces 2 of 60 maximum
Version: Ours 8.4(2), Mate 8.4(2)
Last Failover at: 05:38:56 UTC Nov 26 2013
        This host: Primary - Active
                Active time: 535 (sec)
                  Interface PRIVATE-1 (10.0.0.1): Normal (Monitored)
                  Interface PUBLIC-1 (172.16.0.253): Normal (Monitored)
        Other host: Secondary - Bulk Sync
                Active time: 0 (sec)
                  Interface PRIVATE-1 (10.0.0.3): Normal (Monitored)
                  Interface PUBLIC-1 (172.16.0.252): Normal (Monitored)

Stateful Failover Logical Update Statistics
        Link : FAILOVER GigabitEthernet1 (up)
        Stateful Obj    xmit       xerr       rcv        rerr
        General         5          0          3          0
        sys cmd         3          0          3          0
        up time         0          0          0          0
        RPC services    0          0          0          0
        TCP conn        0          0          0          0
        UDP conn        0          0          0          0
        ARP tbl         0          0          0          0
        Xlate_Timeout   0          0          0          0
        IPv6 ND tbl     0          0          0          0
        VPN IKEv1 SA    0          0          0          0
        VPN IKEv1 P2    0          0          0          0
        VPN IKEv2 SA    0          0          0          0
        VPN IKEv2 P2    0          0          0          0
        VPN CTCP upd    0          0          0          0
        VPN SDI upd     0          0          0          0
        VPN DHCP upd    0          0          0          0
        SIP Session     0          0          0          0
        Route Session   0          0          0          0
        User-Identity   2          0          0          0

        Logical Update Queue Information
                        Cur     Max     Total
        Recv Q:         0       8       3
        Xmit Q:         0       29      38

Собственно, файловер собран. Можно подкрутить время реакции, но это индивидуально.

Проверим, как это работает. Сейчас сохраним конфигурации (заметьте, сохраняя на первой ASA вы автоматически сохраняете на второй)… и вырубим первую(главную) ASA.

ASA1# sh failover
Failover On
Failover unit Secondary
Failover LAN Interface: FAILOVER GigabitEthernet1 (up)
Unit Poll frequency 1 seconds, holdtime 15 seconds
Interface Poll frequency 5 seconds, holdtime 25 seconds
Interface Policy 1
Monitored Interfaces 2 of 60 maximum
Version: Ours 8.4(2), Mate 8.4(2)
Last Failover at: 05:27:25 UTC Nov 26 2013
        This host: Secondary - Standby Ready
                Active time: 0 (sec)
                  Interface PRIVATE-1 (10.0.0.3): Normal (Monitored)
                  Interface PUBLIC-1 (172.16.0.252): Normal (Monitored)
        Other host: Primary - Active
                Active time: 351 (sec)
                  Interface PRIVATE-1 (10.0.0.1): Normal (Monitored)
                  Interface PUBLIC-1 (172.16.0.253): Normal (Monitored)

Stateful Failover Logical Update Statistics
        Link : Unconfigured.

ASA1# Cryptochecksum: 7c45948d 8d159e26 509bb557 5f07c655

2423 bytes copied in 0.940 secs
Cryptochecksum: 7c45948d 8d159e26 509bb557 5f07c655

2423 bytes copied in 0.950 secs

ASA1#
ASA1#
ASA1#
        Switching to Active

ASA1# sh fa
ASA1# sh failover
Failover On
Failover unit Secondary
Failover LAN Interface: FAILOVER GigabitEthernet1 (up)
Unit Poll frequency 1 seconds, holdtime 15 seconds
Interface Poll frequency 5 seconds, holdtime 25 seconds
Interface Policy 1
Monitored Interfaces 2 of 60 maximum
Version: Ours 8.4(2), Mate 8.4(2)
Last Failover at: 05:53:35 UTC Nov 26 2013
        This host: Secondary - Active
                Active time: 5 (sec)
                  Interface PRIVATE-1 (10.0.0.1): Unknown (Waiting)
                  Interface PUBLIC-1 (172.16.0.253): Unknown (Waiting)
        Other host: Primary - Failed
                Active time: 863 (sec)
                  Interface PRIVATE-1 (10.0.0.3): Unknown (Monitored)
                  Interface PUBLIC-1 (172.16.0.252): Unknown (Monitored)

Stateful Failover Logical Update Statistics
        Link : FAILOVER GigabitEthernet1 (up)
        Stateful Obj    xmit       xerr       rcv        rerr
        General         48         0          49         0
        sys cmd         48         0          47         0
        up time         0          0          0          0
        RPC services    0          0          0          0
        TCP conn        0          0          0          0
        UDP conn        0          0          0          0
        ARP tbl         0          0          0          0
        Xlate_Timeout   0          0          0          0
        IPv6 ND tbl     0          0          0          0
        VPN IKEv1 SA    0          0          0          0
        VPN IKEv1 P2    0          0          0          0
        VPN IKEv2 SA    0          0          0          0
        VPN IKEv2 P2    0          0          0          0
        VPN CTCP upd    0          0          0          0
        VPN SDI upd     0          0          0          0
        VPN DHCP upd    0          0          0          0
        SIP Session     0          0          0          0
        Route Session   0          0          0          0
        User-Identity   0          0          2          0

        Logical Update Queue Information
                        Cur     Max     Total
        Recv Q:         0       9       476
        Xmit Q:         0       1       48

Переключение прошло успешно.

Обратите внимание, что при включении первой ASA автоматически основной она не станет.

Для этого задаем команду:

ASA1# sh failover
Failover On
Failover unit Primary
Failover LAN Interface: FAILOVER GigabitEthernet1 (up)
Unit Poll frequency 1 seconds, holdtime 15 seconds
Interface Poll frequency 5 seconds, holdtime 25 seconds
Interface Policy 1
Monitored Interfaces 2 of 60 maximum
Version: Ours 8.4(2), Mate 8.4(2)
Last Failover at: 04:32:02 UTC Nov 27 2013
        This host: Primary - Standby Ready
                Active time: 0 (sec)
                  Interface PRIVATE-1 (10.0.0.3): Normal (Monitored)
                  Interface PUBLIC-1 (172.16.0.252): Normal (Monitored)
        Other host: Secondary - Active
                Active time: 429 (sec)
                  Interface PRIVATE-1 (10.0.0.1): Normal (Monitored)
                  Interface PUBLIC-1 (172.16.0.253): Normal (Monitored)

Stateful Failover Logical Update Statistics
        Link : FAILOVER GigabitEthernet1 (up)
        Stateful Obj    xmit       xerr       rcv        rerr
...

ASA1# failover active

        Switching to Active
ASA1#
ASA1# sh failover
Failover On
Failover unit Primary
Failover LAN Interface: FAILOVER GigabitEthernet1 (up)
Unit Poll frequency 1 seconds, holdtime 15 seconds
Interface Poll frequency 5 seconds, holdtime 25 seconds
Interface Policy 1
Monitored Interfaces 2 of 60 maximum
Version: Ours 8.4(2), Mate 8.4(2)
Last Failover at: 04:36:04 UTC Nov 27 2013
        This host: Primary - Active
                Active time: 5 (sec)
                  Interface PRIVATE-1 (10.0.0.1): Normal (Waiting)
                  Interface PUBLIC-1 (172.16.0.253): Normal (Waiting)
        Other host: Secondary - Standby Ready
                Active time: 494 (sec)
                  Interface PRIVATE-1 (10.0.0.3): Normal (Waiting)
                  Interface PUBLIC-1 (172.16.0.252): Normal (Waiting)

Stateful Failover Logical Update Statistics
        Link : FAILOVER GigabitEthernet1 (up)
        Stateful Obj    xmit       xerr       rcv        rerr
...

К сожалению, функцию мониторинга интерфейса мы проверить не сможем тут: GNS3 не умеет на «горячую» отключать линки от QEMU виртуалок.

Но все же опишу данную «фичу» (хотя сам так и не проверил — банально негде).

Указываем интерфейсы, которые хотим мониторить и указываем условие, (процент или количество) интерфейсов, при падении которых должен произойти файловер.

ASA1(config)# monitor-interface PRIVATE-1
ASA1(config)# monitor-interface PUBLIC-1

ASA1(config)# failover interface-policy ?

configure mode commands/options:
  <1-60>  number of failed interfaces
  <1-100>% percentage of failed interfaces
ASA1(config)# failover interface-policy 1
ASA1(config)#
ASA1(config)#
ASA1(config)# end
ASA1#

Собственно, пока на этом все. Окончание в другой части(http://netwild.ru/asa2/ ) =)