CIsco ASA 55xx, IOS 9.13 , Site-to-Site VPN и замечательные правила NAT

Жила себе ASA 5510, на которой крутились Site-to-Site VPN и офис. Между VPN и офисом была настроена маршрутизация. Крутилось все это под прошивкой из 8ой серии.

И решились мы ее перепрошить на 9.13. Перепрошивка прошла успешно, кроме одного нюанса — перестали ходить пинги между Site-to-Site VPN и офисом.

В итоге выяснилось,  что перестали ходить только пинги. В остальном никаких изменений не произошло.

«Работает — и пусть работает, а на тестовом стенде мы разберемся почему» — решили мы.

Собрали стенд из Cisco ASA 5505 и Cisco 881 (в качестве принимающей стороны). Сконфигурили аналогичным образом.

Опуская все извращения — выяснилось, что компания Cisco решила сделать приоритетность выполнения правил НАТ. Зачем — это их дело. На данный момент статические наты должны быть описаны перед динамическими. Все статические, которые описаны ниже динамических, обрабатываться не будут.

В связи с этим мы получили такую веселую штуку, что правила:

nat (inside,outside) source dynamic inside-network interface
nat (inside,outside) source static inside-network inside-network destination static Mount-IntraNET-VPN Mount-IntraNET-VPN no-proxy-arp route-lookup

не будут делать прямое перенаправление трафика, а будут его хитрым образом заворачивать в НАТ.

С другой стороны правила:

nat (inside,outside) source static inside-network inside-network destination static Mount-IntraNET-VPN Mount-IntraNET-VPN no-proxy-arp route-lookup

будут работать корректно.

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

Нерабочий вариант:

nat (IN1,OUT) source static obj-fakeip obj-realip service obj-tcp-source-eq-20 obj-tcp-source-eq-20
nat (IN1,OUT) source dynamic obj-fakeip obj-realip
nat (IN1,OUT) source static obj-fakeip obj-realip service obj-tcp-source-eq-21 obj-tcp-source-eq-21
nat (IN1,OUT) source static obj-fakeip obj-realip service obj-tcp-source-eq-22 obj-tcp-source-eq-2222

Рабочий вариант:

nat (IN1,OUT) source static obj-fakeip obj-realip service obj-tcp-source-eq-20 obj-tcp-source-eq-20
nat (IN1,OUT) source static obj-fakeip obj-realip service obj-tcp-source-eq-21 obj-tcp-source-eq-21
nat (IN1,OUT) source static obj-fakeip obj-realip service obj-tcp-source-eq-22 obj-tcp-source-eq-2222
nat (IN1,OUT) source dynamic obj-fakeip obj-realip
 
comments powered by Disqus