ASA hairpin: интернэт рүү гарах уу, эсвэл сайт хоорондын VPN хөл үү?
Клиентийн пул интернэт рүү эсвэл сайтын VPN руу гарч болно. NAT бичихээс өмнө аль хөл хэрэгтэйг шийдэж, дараа нь маршрут, селектор, хариу замыг шалгана уу.
Нэг ASA-ийн ард байгаа хоёр алсын хандалтын хэрэглэгч ижил гадаад интерфейсээс трафик илгээж, огт өөр хандлага авч болно. Нэг нь нийтийн вэбсайт руу явж байгаа тул пакетэд эх сурвалжийн хөрвүүлэлт болон интернэт маршрут хэрэгтэй. Нөгөө нь мөн тэр интерфейс дээр төгсдөг сайт хоорондын туннелийн цаана байгаа сервер рүү явж байгаа тул пакетэд таних тэмдэг, тохирох туннелийн селектор, клиентийн пул руу буцах зам хэрэгтэй. Ижил интерфейсийн зөвшөөрөл нь хоёуланд нь урьдчилсан нөхцөл бөгөөд аль нэгэнд нь шийдэл биш.
Хоёр хөл, нэг интерфейс
NAT дүрэм бичихээс өмнө аль хөл барьж байгаагаа шийдээрэй, учир нь дүрмүүд хоорондоо солилцох боломжгүй. А хөл нь клиентээс интернэт рүү: пулын хаяг орж, хөрвүүлсэн нийтийн хаяг гарч, ижил интерфейсээр буцаж ирнэ. Б хөл нь клиентээс өөр IPsec түншийн эсрэг талд байгаа хувийн префикс рүү: пулын хаяг хадгалагдаж, дахин шифрлэгдэж, пулд хэрхэн хариулахыг мэдэх ёстой түнш рүү хүргэгдэнэ.
Хоёуланд нь хамгийн түрүүнд хэрэгтэй зүйл бол ижил интерфейсийн зөвшөөрөл юм. Үүнгүйгээр ASA пакетыг ирсэн интерфейсээс нь цааш дамжуулахаас татгалзаж, алдаа нь бодлогын бус маршрутын асуудал мэт харагдана:
same-security-traffic permit intra-interface
Тэр нэг мөр дамжуулалтын зохион байгуулалтыг зөвшөөрдөг бөгөөд үүнийг ASA NAT лавлагаа ижил интерфейсийн замд зориулж тайлбарладаг. Энэ нь клиентийн маршрут нэмэхгүй, нөөцийг зөвшөөрөхгүй, хаяг хөрвүүлэхгүй, IPsec селекторын талаар хэлэлцэхгүй тул үүний дараа дахин гурав эсвэл дөрвөн зүйл нэмнэ гэж бодож, үүнийг хүлээн зөвшөөрснийг ахиц гэж битгий уншаарай.
А хөл: клиент интернэт хүсч байна
Интернэт рүү гарахын тулд пулын хаяг пакет төхөөрөмжөөс гарахаас өмнө хувийн байхаа болих ёстой. Энгийн 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 доорхтой ижил шалтгаанаар нэмээрэй, учир нь орох, гарах интерфейс ижил байна.
Б хөл: клиент хувийн сайт хүсч байна
Энэ хөл илүү олон газарт бүтэлгүйтдэг тул дарааллаар нь бичээрэй. Эхлээд клиентийн маршрут: очих префикс хуваасан туннелийн жагсаалтад байх ёстой, эс бөгөөс клиент үүнийг туннелд хийхгүй. Хоёрдугаарт туннелийн селектор: сайт хоорондын крипто ACL нь пулын хаягаас алсын префикс хүртэл хамрах ёстой, зөвхөн локал LAN-аас алсын префикс хүртэл биш. Гуравдугаарт таних тэмдэг, пулын хаяг замд интернэт PAT руу хөрвөгдөхгүйн тулд.
nat (outside,outside) source static VPN_POOL VPN_POOL
destination static SITE_PREFIX SITE_PREFIX route-lookup
Алсын тал бол хүмүүс туршихаа мартдаг хэсэг. Түнш пул руу буцах маршрут болон түүнийг хамарсан селектор хэрэгтэй бөгөөд түүний өөрийн бодлого нь түүний харах эх хаягуудыг зөвшөөрөх ёстой. Хэрэв сайтыг оронд нь хөрвүүлсэн харагдацаар ашиглаж байгаа бол энэ нь хүчинтэй загвар боловч тэгвэл хоёр түнш, хоёр селектор, хоёр маршрутын хүснэгт хөрвүүлсэн хаягууд дээр санал нийлэх ёстой.
Дүрмүүдийн дарааллыг ч шалгаарай. Таних тэмдгийн дүрмийн дээрх өргөн PAT дүрэм нь таних тэмдгийн дүрэм үнэлэгдэхээс өмнө хувийн солилцоог хөрвүүлчихдэг бөгөөд шинж тэмдэг нь NAT алдаа биш, тохирох SA-гүй сайтын туннель юм.
Аль хөл барьсныг танд хэлэх туршилт
Тохиргоог уншиж найдсанаас ASA-ийн өөрийн замын үнэлгээг ашиглаарай. packet-tracer input outside tcp 10.80.0.25 40000 203.0.113.10 443 detailed нэг урсгалын NAT шийдвэр, маршрут, ACL-ийн үр дүнг харуулна; хувийн очих газартай давтаарай. Хэрэв NAT үе шат хувийн-хувийн урсгалыг дахин бичвэл та Б хөл хэрэгтэй байсан пакетэд А хөл барьсан байна.
Дахин хоёр команд завсрыг хаана. show nat detail packet-tracer-ийн дагасан дүрмийн дарааллыг хэвлэдэг ба show crypto ipsec sa таны хүлээж буй хосын селектор байгаа эсэхийг харуулна. Алга болсон SA нь селектор эсвэл түншийн тохиргооны асуудал бөгөөд NAT дүрэм засаж чадах зүйл биш.
Хөл бүрийг түүний үйлчилдэг трафикаар баталгаажуулаарай
А хөлийг клиентийн энгийн нийтийн хүсэлтээр, Б хөлийг үнэхээр оршин байгаа хувийн нөөц рүү хүсэлтээр хүлээн авна уу. Дараа нь тус бүрийг татгалзсан нөөцтэй давтаарай, учир нь „зөвшөөрөгдсөн“ ба „хандалтын бодлогоор баталсан“ нь ижил нотолгоо биш бөгөөд төвөөс гарсан ping нь клиентийн замын аль нэгийг ч дасгалжуулахгүй.
Тикет дээр хоёр туршилтын бичлэгийг тусад нь хадгалаарай: эх хаяг, очих газар, тохирсон NAT дүрэм, үр дүн. Дараагийн тайлан „VPN эвдэрсэн“ гэж хэлэхэд тэр хос нэг минутын дотор аль хөл ухарсныг хэлж өгнө, хариулт нь ихэвчлэн маршрут эсвэл селектор байдаг, бүгд хамгийн түрүүнд сэжиглэдэг ижил интерфейсийн мөр биш.