ASA VPN hairpin: กำหนดเส้นทางสองทันเนลผ่านอินเทอร์เฟซเดียว
ทราฟฟิกของผู้ใช้ระยะไกลสามารถออกจากอินเทอร์เฟซ ASA เดียวกับที่เข้ามาได้ แต่การอนุญาต hairpin ขอบเขตของทันเนล NAT และ ACL เป็นการตัดสินใจสี่อย่างที่แยกจากกัน
ผู้ใช้ระยะไกลเชื่อมต่อกับ ASA ขอโฮสต์ที่อยู่หลังสาขา และ ASA ส่งคำขอนั้นออกไปทางอินเทอร์เฟซเดียวกับที่ผู้ใช้เข้ามา ไม่มีสิ่งใดในนั้นที่ต้องใช้พอร์ตกายภาพที่สอง สิ่งที่ต้องใช้คือการตัดสินใจอิสระสี่อย่างซึ่งคนมักหลอมรวมเป็นหนึ่งเดียว: การอนุญาตให้ทำ hairpin ทันเนลที่ปกป้องแอดเดรสที่ถูกต้อง นโยบาย NAT ที่รักษาแหล่งที่มาซึ่งคุณสัญญาไว้ และนโยบายการเข้าถึงที่ให้สิทธิ์แก่บริการ
หนึ่งแพ็กเก็ต สองทันเนล
ติดตามโฟลว์แล้วลำดับการทำงานจะไม่เป็นปริศนาอีกต่อไป แพ็กเก็ตมาถึงภายในทันเนลการเข้าถึงระยะไกล ถูกถอดรหัส และกลายเป็นแพ็กเก็ต IP ธรรมดาที่มีแหล่งที่มาจากพูลไคลเอนต์ จากนั้น ASA จะกำหนดเส้นทางให้ จับคู่กับ crypto ACL แบบไซต์ถึงไซต์ เข้ารหัสอีกครั้ง และส่งออกทางอินเทอร์เฟซภายนอกไปยังสาขา
แอดเดรสด้านล่างเป็นเพียงตัวอย่าง แต่รูปร่างนั้นสำคัญ: แหล่งที่มาคือพูล ไม่ใช่ LAN ภายในของ ASA
remote client 10.77.0.20
-> remote-access tunnel, terminated on ASA outside
-> decrypted, routed, matched against site-to-site policy
-> site-to-site tunnel, sent from ASA outside
-> branch host 10.60.20.10มีสองสิ่งตามมา ไคลเอนต์ต้องการเส้นทางสำหรับพรีฟิกซ์ของสาขาผ่านการเชื่อมต่อการเข้าถึงระยะไกลของตน ซึ่งหมายความว่า split-tunnel หรือรายการเส้นทางที่ส่งไปต้องมีเส้นทางนั้น และสาขาต้องรู้วิธีส่งทราฟฟิกกลับไปยัง 10.77.0.20 หรือแอดเดรสที่การออกแบบ NAT ของคุณแทนที่ไว้
การอนุญาต hairpin เป็นแบบทั่วทั้งระบบ
คำสั่งที่คนมักเอื้อมถึงคือ same-security-traffic permit intra-interface คำสั่งนี้ยอมให้ทราฟฟิกเข้าและออกทางอินเทอร์เฟซเดียวกัน ซึ่งเป็นสิ่งที่เส้นทางนี้ต้องการพอดี มันยังเป็นการตั้งค่าทั่วทั้งระบบด้วย: การเปิดใช้จะเปลี่ยนพฤติกรรมของโฟลว์อื่นที่บังเอิญผ่านอินเทอร์เฟซเดียวกันสองครั้ง
นี่คือเหตุผลว่าทำไมมันจึงอยู่ในบันทึกการเปลี่ยนแปลงมากกว่าในเซสชันดีบัก ถามว่ายังมีอะไรบนอุปกรณ์ที่อาจใช้เส้นทางผ่านอินเทอร์เฟซเดียวกันได้อีกในตอนนี้ และมีสิ่งใดที่ควรทำหรือไม่ บนขอบที่พลุกพล่านซึ่งมีเครือข่ายแขกหรือทันเนลพันธมิตรที่ทับซ้อนกัน คำตอบไม่ใช่ไม่โดยอัตโนมัติ เขียนเหตุผลไว้ข้างการตั้งค่า เพราะวิศวกรคนต่อไปจะพบคำสั่ง ไม่ใช่บทสนทนา
ขอบเขตการป้องกันและ NAT แยกจากกัน
ทันเนลแบบไซต์ถึงไซต์ปกป้องสิ่งที่ crypto ACL ของมันเลือก หาก ACL นั้นระบุซับเน็ตภายในของ ASA เป็นแหล่งที่มา พูลการเข้าถึงระยะไกลจะไม่ได้รับการป้องกัน และแพ็กเก็ตจะถูกทิ้งหรือถูกส่งแบบเปิดเผย ขึ้นอยู่กับพฤติกรรมของแพลตฟอร์มต่อทราฟฟิกที่ไม่ตรงกัน เพิ่มพูลเข้าในโฟลว์ที่ได้รับการป้องกันเมื่อการออกแบบรักษาแอดเดรสของพูลไว้
จากนั้น NAT จะตัดสินว่าแอดเดรสของพูลจะอยู่รอดหรือไม่ Identity NAT รักษามันไว้ และสาขาจะเห็น 10.77.0.20 เป็นแหล่งที่มา การแปลเปลี่ยนสัญญา: สาขาส่งทราฟฟิกกลับไปยังแอดเดรสที่แปลแล้ว และนโยบายของมันเองต้องยอมรับสิ่งนั้น ลำดับของกฎเป็นตัวกำหนดว่า crypto ACL ตรงกันก่อนหรือหลังการแปล ดังนั้นอ่านโฟลว์ที่เกิดขึ้นจริงแทนที่จะสันนิษฐานว่าอันไหนชนะ
อย่าลบกฎ PAT ทั่วไปของอินเทอร์เน็ตเพื่อให้กรณีผ่านทางกรณีเดียวทำงานได้ การยกเว้นแบบเจาะจงหรือกฎ identity ที่ตั้งใจนั้นอธิบายและย้อนกลับได้ง่ายกว่ารูโหว่ในนโยบายขาออก
การเข้ารหัสไม่ใช่การอนุญาต
ทันเนลที่ทำงานได้พิสูจน์เพียงว่าสองฝ่ายเห็นตรงกันเรื่องคีย์และตัวเลือก ไม่ได้บอกอะไรว่าผู้ใช้รายนี้จะเข้าถึงบริการนั้นได้หรือไม่ ตัวกรอง VPN หรือนโยบายกลุ่มที่ผูกกับการเชื่อมต่อการเข้าถึงระยะไกลยังต้องอนุญาตปลายทางและพอร์ตของสาขา และ ACL ของอินเทอร์เฟซบนเส้นทางภายนอกยังคงใช้บังคับ
ทดสอบคำตอบทั้งสองทิศทาง การเชื่อมต่อที่สำเร็จในขณะที่บริการข้างเคียงควรล้มเหลวให้ข้อมูลมากกว่า ping ที่สำเร็จครั้งเดียว เพราะแสดงว่านโยบายเลือกสรร ไม่ได้เปิดโล่งทั้งหมด หากการทดสอบที่ควรถูกปฏิเสธกลับสำเร็จ ความผิดไม่ได้อยู่ที่ทันเนล แต่อยู่ที่นโยบาย เก็บผลลัพธ์ทั้งสองไว้ในบันทึกการเปลี่ยนแปลงเพื่อให้คนถัดไปรู้ว่าพฤติกรรมใดคือสิ่งที่ตั้งใจ
hairpin หรืออินเทอร์เฟซที่สอง
การผ่านทางแบบ hairpin ทำให้การออกแบบกระชับและมีต้นทุนเป็นการตั้งค่าทั่วทั้งระบบหนึ่งรายการ อินเทอร์เฟซแยก หรือทันเนลแบบอิงเส้นทางที่มีอินเทอร์เฟซเสมือนของตัวเอง จะแยกเส้นทางผ่านทางออกและให้แนวนโยบายรายอินเทอร์เฟซแก่คุณ โดยแลกกับงานด้านแอดเดรสและ crypto map หรือโปรไฟล์อีกชุดหนึ่ง ไม่มีอันไหนถูกต้องกว่า พวกมันล้มเหลวต่างกัน
การออกแบบแบบอิงเส้นทางเป็นการจัดวางที่แตกต่าง ไม่ใช่ช่องทำเครื่องหมายในการกำหนดค่าเดียวกัน หากคุณเปลี่ยนไปใช้แบบนั้น การอภิปรายเรื่อง crypto ACL แบบอิงนโยบายข้างต้นจะเลิกใช้บังคับ และตารางเส้นทางจะเริ่มทำงานเลือกสรร
ตรวจสอบจากไคลเอนต์จริง
การตรวจสอบที่เริ่มจาก ASA มีแอดเดรสต้นทางต่างออกไปและจะไม่ผ่านเส้นทางจากพูลไปยังสาขา ใช้ packet-tracer เพื่อตรวจสอบห้าองค์ประกอบ แล้วเปิดการเชื่อมต่อจริงจากไคลเอนต์ระยะไกลจริง เพราะตัวติดตามเพียงจำลองและไม่ได้แทนที่การกำหนดเส้นทางและนโยบายของไคลเอนต์เอง
หลังการเปลี่ยนแปลงที่วางแผนไว้ ให้เชื่อมต่อกับบริการที่ควรทำงาน จากนั้นกับบริการที่ควรถูกปฏิเสธ แล้วยืนยันเส้นทางกลับของสาขา ตัวอย่าง NAT hairpin ของ VPN จาก Cisco เก็บการอนุญาต intra-interface NAT และ ACL ให้แยกจากกันอย่างมองเห็นได้ และนั่นคือแบบจำลองทางความคิดที่ควรค่าแก่การลอกเลียน