ASA hairpin: выхад у інтэрнэт ці плячо VPN паміж сайтамі?
Пул кліентаў можа ісці ў інтэрнэт або ў сайтавы VPN. Вызначце, якое плячо вам патрэбна, перш чым пісаць NAT, затым праверце маршрут, селектар і шлях адказу.
Два карыстальнікі аддаленага доступу за адным і тым жа ASA могуць адпраўляць трафік праз адзін і той жа знешні інтэрфейс і атрымліваць цалкам рознае абыходжанне. Адзін ідзе на публічны вэб-сайт, таму пакету патрэбна трансляцыя крыніцы і інтэрнэт-маршрут. Другі ідзе на сервер за тунелем паміж сайтамі, які таксама заканчваецца на гэтым інтэрфейсе, таму пакету патрэбна ідэнтычнасць, адпаведны селектар тунеля і зваротны шлях да пула кліентаў. Дазвол на адзін інтэрфейс — гэта перадумова для абодвух і рашэнне ні для аднаго.
Два плячы, адзін інтэрфейс
Вызначце, якое плячо вы будуеце, перш чым уводзіць правіла NAT, бо правілы не ўзаемазамяняльныя. Плячо A — кліент да інтэрнэту: адрас пула ўваходзіць, трансляваны публічны адрас выходзіць, вяртанне праз той жа інтэрфейс. Плячо B — кліент да прыватнага прэфікса на далёкім баку іншага IPsec-партнёра: адрас пула захоўваецца, зноў шыфруецца і дастаўляецца партнёру, які павінен ведаць, як адказаць пулу.
Што абодвум трэба перш за ўсё — гэта дазвол на адзін інтэрфейс. Без яго ASA адмаўляецца перасылаць пакет праз інтэрфейс, на які ён прыйшоў, і збой выглядае як праблема маршрутызацыі, а не як праблема палітыкі:
same-security-traffic permit intra-interface
Гэты адзіны радок дазваляе схему перасылкі, як апісвае даведнік па NAT у ASA для шляхоў праз адзін інтэрфейс. Ён не дадае маршрут кліента, не аўтарызуе рэсурс, не трансліруе адрас і не ўзгадняе селектар IPsec, таму чакайце дадання яшчэ трох ці чатырох рэчаў пасля яго і не чытайце яго прыняцце як прагрэс.
Плячо A: кліент хоча інтэрнэт
Для выхаду ў інтэрнэт адрас пула павінен перастаць быць прыватным, перш чым пакет пакіне прыладу. У звычайным дызайне PAT правіла трансліруе пул у адрас знешняга інтэрфейса, а стан вяртання аднаўляе кліенцкі паток:
object network VPN_POOL
subnet 10.80.0.0 255.255.255.0
nat (outside,outside) after-auto source dynamic VPN_POOL interface route-lookup
Затым пацвердзіце, што кліент сапраўды папрасіў ASA несці гэты трафік. Выключэнне з раздзеленага тунеля адпраўляе публічны пункт прызначэння праз уласнае злучэнне тэлефона, якое зусім не дасягае ASA, і ніякае правіла NAT не выправіць пакет, які ніколі не быў адпраўлены. Параўнайце спіс раздзеленага тунеля групавой палітыкі з пунктам прызначэння, які вы тэстуеце.
Астатняе ў плячы звычайнае: прыдатны маршрут па змаўчанні або канкрэтны маршрут з знешняга інтэрфейса, палітыка доступу, якая дазваляе паток, і DNS, які апрацоўваецца згодна з абранай вамі палітыкай рэзалвера. Дадайце route-lookup тут па той жа прычыне, што і ніжэй, бо інтэрфейсы ўваходу і выхаду аднолькавыя.
Плячо B: кліент хоча прыватны сайт
Гэтае плячо збоіць у большай колькасці месцаў, таму пішыце яго па парадку. Спачатку маршрут кліента: прэфікс прызначэння павінен быць у спісе раздзеленага тунеля, інакш кліент не змесціць яго ў тунель. Па-другое, селектар тунеля: крыпта-ACL паміж сайтамі павінен ахопліваць адрас пула да далёкага прэфікса, а не толькі лакальную LAN да далёкага прэфікса. Па-трэцяе, ідэнтычнасць, каб адрас пула не трансліраваўся ў інтэрнэт-PAT па дарозе.
nat (outside,outside) source static VPN_POOL VPN_POOL
destination static SITE_PREFIX SITE_PREFIX route-lookup
Далёкі бок — гэта частка, якую забываюць тэставаць. Партнёру патрэбен маршрут назад да пула і селектар, які яго ўключае, і яго ўласная палітыка павінна дазваляць адрасы крыніцы, якія ён убачыць. Калі сайт выкарыстоўваецца праз трансляваны выгляд, гэта дапушчальны дызайн, але тады абодва партнёры, абодва селектары і абодва табліцы маршрутаў павінны ўзгадніць трансляваныя адрасы.
Праверце таксама парадак правілаў. Шырокае правіла PAT над правілам ідэнтычнасці трансліруе прыватны абмен яшчэ да таго, як правіла ідэнтычнасці будзе ацэнена, і сімптом — сайтавы тунель без адпаведнага SA, а не памылка NAT.
Тэст, які кажа вам, якое плячо вы пабудавалі
Выкарыстоўвайце ўласную ацэнку шляху ASA замест таго, каб чытаць канфігурацыю і спадзявацца. packet-tracer input outside tcp 10.80.0.25 40000 203.0.113.10 443 detailed паказвае рашэнне NAT, маршрут і вынік ACL для аднаго патоку; паўтарыце з прыватным пунктам прызначэння. Калі фаза NAT перапісвае паток ад прыватнага да прыватнага, вы пабудавалі плячо A для пакета, якому было патрэбна плячо B.
Яшчэ дзве каманды закрываюць прабел. show nat detail друкуе парадак правілаў, якім ішоў packet-tracer, і show crypto ipsec sa паказвае, ці існуе селектар для пары, якую вы чакаеце. Адсутны SA — гэта пытанне канфігурацыі селектара або партнёра, а не тое, што можа выправіць правіла NAT.
Праверце кожнае плячо трафікам, якому яно служыць
Прыміце плячо A звычайным публічным запытам ад кліента, а плячо B — запытам да прыватнага рэсурсу, які сапраўды існуе. Затым паўтарыце кожнае з адхіленым рэсурсам, бо «дазволена» і «дазволена палітыкай доступу» — не аднолькавыя доказы, а ping, які выходзіць з хаба, не правярае ні адзін з кліенцкіх шляхоў.
Трымайце два запісы тэстаў асобна ў заяўцы: адрас крыніцы, пункт прызначэння, правіла NAT, якое супала, і вынік. Калі наступная справаздача скажа «VPN зламаны», гэтая пара за хвіліну скажа вам, якое плячо прасела, і адказ звычайна — маршрут або селектар, а не радок аднаго інтэрфейсу, які ўсе падазраюць першым.