URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID6
Нить номер: 910
[ Назад ]

Исходное сообщение
"ASR1002 - баг с Dynamic NAT + route-map ?"

Отправлено Velos , 08-Авг-13 02:11 
Доброго времени суток всем гуру.
Прошу помочь разобраться в вопросе - баг это или я чего-то не учёл/не понял/не знаю...

Дано два ASR1002:
Cisco IOS Software, IOS-XE Software (PPC_LINUX_IOSD-ADVENTERPRISEK9-M), Version 15.3(2)S1, RELEASE SOFTWARE (fc1)
IOS XE Version: 03.09.01.S
System image file is "bootflash:/asr1000rp1-adventerprisek9.03.09.01.S.153-2.S1.bin"

ASR-ы внутренними интерфейсами объеденены в HSRP.

К ним приходят два провайдера на внешние интерфейсы, за внутренним - локальная сеть:
Po1.101 - внутр. сеть (192.168.0.0/16 и 10.0.0.0/8). 10.255.255.0/24 - пул под VPN-пользователей, 10.10.10.2 - хост, который должен торчать наружу.
Po2.2 - ISP1 (1.1.1.0/27, GW: 1.1.1.30)
Po2.3 - ISP2 (2.2.2.0/29, GW: 2.2.2.6)

На ASR-е крутится Dynamic NAT (overload на интерфейсах), static nat (внешний сервис), RA-VPN и ZBFW.

BGP, AS и PI-адресов нет.

В данный момент всё держится на одном провайдере, второй должен быть подключен, как резервный.

Конфиг:


...
!
interface Port-channel1.101
description INSIDE
encapsulation dot1Q 101
ip address 10.0.0.2 255.255.255.248
no ip redirects
ip nat inside
zone-member security INSIDE
standby version 2
standby 1 ip 10.0.0.1
standby 1 priority 110
standby 1 preempt
standby 1 name INSIDE
standby 1 track 1 decrement 30
standby 1 track 2 decrement 20
standby 1 track 3 decrement 20
standby 1 track 4 decrement 40
standby 1 track 5 decrement 30
!
...
!
interface Port-channel2.2
description ISP1
encapsulation dot1Q 2
ip address 1.1.1.1 255.255.255.224
no ip redirects
ip nat outside
zone-member security OUTSIDE
crypto map MYMAP
!
interface Port-channel2.3
description ISP2
encapsulation dot1Q 3
ip address 2.2.2.2 255.255.255.248
no ip redirects
ip nat outside
zone-member security OUTSIDE
crypto map MYMAP
!
...
!
ip route 0.0.0.0 0.0.0.0 1.1.1.30 track 2
ip route 10.255.255.0 255.255.255.0 Port-channel2.2 track 2
ip route 0.0.0.0 0.0.0.0 2.2.2.6 250
ip route 10.0.0.0 255.0.0.0 10.0.0.6
ip route 10.255.255.0 255.255.255.0 Port-channel2.3 250
ip route 192.168.0.0 255.255.0.0 10.0.0.6
!
...
!
route-map ISP1 permit 10
description ISP1
match ip address NAT
match interface Port-channel2.2
!
route-map ISP2 permit 10
description ISP2
match ip address NAT
match interface Port-channel2.3
!
route-map EXT_via_ISP1 permit 10
match ip address EXT_ROUTE_MAP
match interface Port-channel2.2
!
route-map EXT_via_ISP2 permit 10
match ip address EXT_ROUTE_MAP
match interface Port-channel2.3
!
...
!
ip access-list extended NAT
deny   ip host 10.10.10.2 any
deny   ip 192.168.0.0 0.0.255.255 10.255.255.0 0.0.0.255
deny   ip 10.0.1.0 0.0.0.255 10.255.255.0 0.0.0.255
deny   ip 10.10.10.0 0.0.0.255 10.255.255.0 0.0.0.255
deny   ip 10.1.0.0 0.0.0.255 10.255.255.0 0.0.0.255
permit ip 192.168.0.0 0.0.255.255 any
permit ip 10.0.0.0 0.255.255.255 any
!
ip access-list extended EXT_ROUTE_MAP
permit ip host 10.10.10.2 any

!
ip nat inside source route-map ISP2 interface Port-channel2.3 overload


ip nat inside source route-map ISP1 interface Port-channel2.2 overload
ip nat inside source static 10.10.10.2 1.1.1.2 route-map EXT_via_ISP1 redundancy INSIDE
ip nat inside source static 10.10.10.2 2.2.2.3 route-map EXT_via_ISP2 redundancy INSIDE

В общем при таком конфиге получается странная штука с натом: статическая трансляция работает, а в динамической (overload) проходит только icmp!!! Ни одно TCP/UDP соединение в таблице трансляции не появляется... Ошибок в логе нет...
Соответсвенно, если строчку
ip nat inside source route-map ISP1 interface Port-channel2.2 overload
вернуть обратно на
ip nat inside source list NAT interface Port-channel2.2 overload
динамический нат начинает работать нормально (после clear ip nat trans *)...

И вот вопрос - шо эта..? Баг или фича?
Если фича - расскажите тайное знание, что нужно сделать...
Просто не хотелось бы правила ната вешать на EMM...
ЗЫ: уже третий раз при работе с данным девайсом натыкаюсь на непонятное поведение NAT-а...


Содержание

Сообщения в этом обсуждении
"NAT"
Отправлено QRSa , 08-Авг-13 21:10 
Добрый день.

Как человек не сильно знакомый с ASR, но сочувствующий...
В общем, когда используется route-map, то создается "fully extended" translation entry, если ACL - simple translation entry.

Может в этом дело + ZBFW (что у Вас там)?
Есть возможность посмотреть debug ip nat?


"NAT"
Отправлено Velos , 08-Авг-13 21:47 
> Добрый день.
> Как человек не сильно знакомый с ASR, но сочувствующий...
> В общем, когда используется route-map, то создается "fully extended" translation entry,
> если ACL - simple translation entry.
> Может в этом дело + ZBFW (что у Вас там)?
> Есть возможность посмотреть debug ip nat?

http://www.cisco.com/en/US/tech/tk648/tk361/technologies_tec...

Если речь идёт про статическую трансляцию через ACL - согласен, разница есть.
В случае, если идёт про overload через ACL - разницы с route-map-ом с т.з. NAT нет. В роутмапе просто доп. параметры указываются, необходимые для "активации" правила...


Route Maps

When NAT uses a route map to decide to create a translation entry, it will always create a "fully extended" translation entry. This translation entry will contain both the inside and outside (local and global) address entries and any TCP or UDP port information.
...
Access Lists (with overload)

When NAT uses an access list, and overload has also been specified, NAT will create a "fully extended" translation entry. (See  Note1). The operation is similar to the route-map case except that route-map has some additional features. See Note 2 for more details.
...
Note 2

The advantage of using route-maps is that under the match command you can have more options other than source IP address. For example, under the route-map, match interface or match ip next-hop can be specified. By using route-maps, you can specify the IP address as well as the interface or the next-hop address to which the packet is to be forwarded. Therefore, route-maps with NAT are used in a scenario where the subscriber is multi-homing to different ISPs.

На самом деле я сегодня (а точнее только что) грохнул все настройки ната на standby-шасси и ввёл их заново...
Потом перевёл standby-шасси в active и... оно заработало. Чётко и без нареканий. Когда активен route по трэку - всё транслируется в ISP1. Трэк умирает - всё переезжает на ISP2...

Повтороил процедуру на втором (который был active до перевода и собственно где я эту "фичу" обнаружил).
После того как удалил все правила трансляции и ввёл первое правило заново, выхлоп лога меня "обрадовал" вот этим:


Aug  8 2013 20:35:44 MSK: %IOSXE_OIR-6-OFFLINECARD: Card (fp) offline in slot F0
Aug  8 2013 20:36:21 MSK: %CPPHA-3-FAULT: F0: cpp_ha:  CPP:0.0 desc:CPP Client process failed: FMAN-FP det:HA class:CLIENT_SW sev:FATAL id:1 cppstate:RUNNING res:UNKNOWN flags:0x0 cdmflags:0x0
Aug  8 2013 20:36:21 MSK: %IOSXE-6-PLATFORM: F0: cpp_ha: Shutting down CPP MDM while client(s) still connected
Aug  8 2013 20:36:21 MSK: %PMAN-3-PROCHOLDDOWN: F0: pman.sh:  The process cpp_ha_top_level_server has been helddown (rc 69)
Aug  8 2013 20:36:21 MSK: %PMAN-3-PROCHOLDDOWN: F0: pman.sh:  The process fman_fp_image has been helddown (rc 139)
Aug  8 2013 20:36:21 MSK: %PMAN-0-PROCFAILCRIT: F0: pvp.sh:  A critical process fman_fp_image has failed (rc 139)
Aug  8 2013 20:36:48 MSK: %HSRP-5-STATECHANGE: Port-channel1.101 Grp 1 state Standby -> Active
Aug  8 2013 20:36:54 MSK: %TRACKING-5-STATE: 2 ip sla 1 reachability Up->Down
Aug  8 2013 20:36:54 MSK: %TRACKING-5-STATE: 3 ip sla 2 reachability Up->Down
Aug  8 16:36:54.571: %HA_EM-6-LOG: ISP1_DOWN: ISP1 IS DOWN!
Aug  8 2013 20:37:37 MSK: %IOSXE_OIR-6-ONLINECARD: Card (fp) online in slot F0
ASR1002(config)#
Aug  8 2013 20:38:11 MSK: %CPPHA-7-START: F0: cpp_ha:  CPP 0 preparing image /tmp/sw/fp/0/0/fp/mount/usr/cpp/bin/qfp-ucode-esp10
Aug  8 2013 20:38:11 MSK: %CPPHA-7-START: F0: cpp_ha:  CPP 0 startup init image /tmp/sw/fp/0/0/fp/mount/usr/cpp/bin/qfp-ucode-esp10
ASR1002(config)#
Aug  8 2013 20:38:17 MSK: %CPPHA-7-START: F0: cpp_ha:  CPP 0 running init image /tmp/sw/fp/0/0/fp/mount/usr/cpp/bin/qfp-ucode-esp10
Aug  8 2013 20:38:17 MSK: %CPPHA-7-READY: F0: cpp_ha:  CPP 0 loading and initialization complete
ASR1002(config)#
Aug  8 2013 20:38:18 MSK: %IOSXE-6-PLATFORM: F0: cpp_cp: Process CPP_PFILTER_EA_EVENT__API_CALL__REGISTER
ASR1002(config)#
Aug  8 2013 20:38:20 MSK: %HSRP-5-STATECHANGE: Port-channel1.101 Grp 1 state Active -> Speak
ASR1002(config)#
Aug  8 2013 20:38:29 MSK: %TRACKING-5-STATE: 2 ip sla 1 reachability Down->Up
Aug  8 2013 20:38:29 MSK: %TRACKING-5-STATE: 3 ip sla 2 reachability Down->Up
ASR1002(config)#
Aug  8 16:38:29.875: %HA_EM-6-LOG: ISP1_UP: ISP1 IS UP!
ASR1002(config)#
Aug  8 2013 20:38:31 MSK: %HSRP-5-STATECHANGE: Port-channel1.101 Grp 1 state Speak -> Standby


И я был бы рад списать все проблеммы на хардварные проблеммы одного шасси, но!
Вчера ситуация, когда идёт трансляция на icmp, а на остальное не идёт - была на ОБОИХ шасси...

Вообще уже много нашёл в интернетах жалоб на кривую работу NAT на данной серии...
Возможно (в силу отсутсвия на данный момент другого оборудования) слишком много хотим от ASR (NAT+FW+VPN+2ISP)...
Но в моём понимании этот "комбайн" должен всё это пережёвывать и не давиться...