สปลิตทันเนลไม่ได้ยกเว้นโฮสต์สาธารณะจากกฎ NAT ของ ASA
เส้นทาง split-include ดึงโฮสต์สาธารณะเข้าไปในทันเนล ซึ่ง ASA ต้องทำ hairpin และแปลต้นทาง หากข้ามขั้นตอนใดขั้นตอนหนึ่ง การไหลจะล้ม
สปลิตทันเนลมักถูกอธิบายว่าเป็นวิธีเก็บทราฟฟิกองค์กรไว้ในทันเนลและส่วนที่เหลือของอินเทอร์เน็ตไว้นอกไฟร์วอลล์ ครึ่งทั้งสองของคำอธิบายนั้นผิดในแบบเดียวกัน สปลิตทันเนลเป็นการตัดสินใจเรื่องเส้นทางที่ไคลเอนต์ทำ และการตัดสินใจเรื่องเส้นทางไม่ได้บอกอะไรเกี่ยวกับสิ่งที่เกิดขึ้นกับแพ็กเก็ตหลังจากมันไปถึง headend
บริการพาร์ทเนอร์เพียงบริการเดียวบนที่อยู่สาธารณะ ที่ยืนกรานจะเห็นที่อยู่สำนักงานใหญ่ของคุณ ก็เพียงพอที่จะทำให้เรื่องนี้พัง
ความเชื่อผิด: สปลิตทันเนลนำไฟร์วอลล์ออกจากเส้นทาง
ความเชื่อคือปลายทางใดก็ตามที่อยู่นอกช่วงส่วนตัวจะอยู่บนการเชื่อมต่ออินเทอร์เน็ตในเครื่อง ไฟร์วอลล์จึงไม่เคยเห็นและไม่ต้องมีกฎสำหรับมัน สิ่งนี้เป็นจริงเพียงตราบเท่าที่ปลายทางไม่อยู่ในรายการทันเนล ทันทีที่ผู้ดูแลเพิ่มโฮสต์สาธารณะลงใน ACL split-include ไคลเอนต์จะส่งทราฟฟิกนั้นเข้าไปในทันเนล และ ASA ต้องกำหนดเส้นทาง กรอง และแปลมันเหมือนการไหลที่ถอดรหัสแล้วอื่น ๆ บนไคลเอนต์ไม่มีอะไรเปลี่ยนนอกจากรายการปลายทาง
ไคลเอนต์ไม่ได้กลายเป็นเราเตอร์ มันทำตามนโยบายที่คุณให้
เส้นทาง split-include ทำอะไรจริง ๆ
ในการตั้งค่าการเข้าถึงระยะไกลของ Cisco ASA นโยบายกลุ่มมี split-tunnel-policy tunnelspecified และ split-tunnel-network-list ที่ระบุ ACL มาตรฐาน ทุกบรรทัด permit ใน ACL นั้นคือปลายทางที่ไคลเอนต์ควรส่งเข้าไปในทันเนล และทุกอย่างอื่นยังคงใช้เส้นทางค่าเริ่มต้นในเครื่อง
การเพิ่มโฮสต์หนึ่งตัวคือบรรทัดเดียว และเป็นส่วนเดียวของการเปลี่ยนแปลงที่ไคลเอนต์มองเห็นได้: access-list RA-SPLIT standard permit host 203.0.113.20
เชื่อมต่อไคลเอนต์ใหม่หลังจากนั้น นโยบายถูกแลกเปลี่ยนตอนเชื่อมต่อ เซสชันที่สร้างไว้แล้วจึงเก็บรายการเก่าและทำให้การเปลี่ยนแปลงดูเหมือนไม่ได้ทำอะไร
แพ็กเก็ตเข้ามาและออกไปบนอินเทอร์เฟซเดียวกัน
ตอนนี้ติดตามการไหลหลังการถอดรหัส แพ็กเก็ตเข้ามาทางอินเทอร์เฟซภายนอกผ่านทันเนล VPN ปลายทางเป็นที่อยู่สาธารณะ และตารางเส้นทางส่งมันกลับออกไปทางอินเทอร์เฟซภายนอกเดียวกันสู่อินเทอร์เน็ต ทราฟฟิกที่เข้าและออกอินเทอร์เฟซเดียวจะถูกทิ้งเว้นแต่ ASA ได้รับอนุญาต และนั่นคือสิ่งที่ same-security-traffic permit intra-interface ทำ หากไม่มีสิ่งนี้ การเชื่อมต่อจะล้มเหลวในลักษณะที่ดูเหมือนปัญหาเส้นทางแต่ไม่ใช่
การตั้งค่านั้นเป็นแบบทั่วโลก มันอนุญาต hairpinning สำหรับทุกการไหลที่ต้องการ ไม่ใช่เฉพาะโฮสต์พาร์ทเนอร์นี้ ดังนั้นจึงเป็นของการเปลี่ยนแปลงที่ตรวจทานแล้ว ไม่ใช่การทดสอบเร็ว
ทำไม PAT ที่จำกัดปลายทางจึงไม่ใช่ทางเลือก
ที่อยู่ต้นทางในแพ็กเก็ตที่ถอดรหัสยังคงเป็นที่อยู่ VPN ของไคลเอนต์ โดยปกติมาจากพูลเช่น 10.77.0.0/24 ที่อยู่นั้นไม่มีเส้นทางบนอินเทอร์เน็ตสาธารณะ พาร์ทเนอร์จึงไม่ตอบเลยหรือตอบไปที่ที่ไม่มีอะไร
การแปลแก้ไขต้นทางและปล่อยปลายทางไว้ไม่แตะต้อง เนื่องจากออบเจ็กต์ถูกกำหนดไว้ที่อื่นแล้ว กฎแบบกำหนดเองที่จำกัดเฉพาะปลายทางนี้จึงมีรูปแบบดังนี้:
same-security-traffic permit intra-interface
object network RA_POOL
subnet 10.77.0.0 255.255.255.0
object network PARTNER_HOST
host 203.0.113.20
nat (outside,outside) source dynamic RA_POOL interface destination static PARTNER_HOST PARTNER_HOSTส่วน destination static สำคัญ หากละไว้ กฎจะกลายเป็นการแปลแบบกว้างที่อาจตรงกับทราฟฟิกมากกว่าที่ตั้งใจไว้มาก และกฎ identity แบบกว้างที่อยู่ก่อนหน้าในลำดับอาจเอาชนะกฎนี้ได้ทั้งหมด ตรวจสอบ show nat detail และลำดับส่วนก่อนสันนิษฐานว่ากฎของคุณคือกฎที่ตรงกัน
PAT บนอินเทอร์เฟซยังหมายความว่าพาร์ทเนอร์เห็นที่อยู่อินเทอร์เฟซของ ASA ซึ่งอาจถูกแปลซ้ำอีกชั้นต้นน้ำ หากสัญญาระบุที่อยู่ ให้ยืนยันตั้งแต่ต้นจนจบไม่ใช่แค่หนึ่งฮอป
พิสูจน์ด้วยปลายทางทดสอบที่ถูกต้อง
ใช้โฮสต์พาร์ทเนอร์เอง ไม่ใช่หน้า what-is-my-ip ทั่วไป หน้านั้นอยู่นอกรายการ split แทบแน่นอน จึงรายงานที่อยู่อินเทอร์เน็ตในเครื่องของคุณและไม่บอกอะไรเกี่ยวกับเส้นทางนี้ เปิดการเชื่อมต่อใหม่ไปยังบริการพาร์ทเนอร์และถามว่าพวกเขาสังเกตเห็นต้นทางใด หรือรัน packet-tracer input outside tcp 10.77.0.10 12345 203.0.113.20 443 detailed แล้วอ่านขั้นตอน NAT และเส้นทางทีละบรรทัด traceroute จากไคลเอนต์เป็นการตรวจสอบที่อ่อนกว่า เพราะแสดงเส้นทางที่เกิดขึ้นแล้ว ไม่ใช่นโยบายที่เลือกมัน
จากนั้นตรวจสอบว่าอะไรไม่ควรเปลี่ยน เว็บไซต์ธรรมดาต้องยังออกผ่านการเชื่อมต่อในเครื่อง และทรัพยากรส่วนตัวในรายการทันเนลต้องยังเข้าถึงได้ การเปลี่ยนแปลงที่ซ่อมพาร์ทเนอร์และทำให้หนึ่งในสองอย่างนั้นพังคือบั๊กอีกตัว
เวอร์ชันที่ใช้งานได้ของการออกแบบนี้สั้น: โฮสต์หนึ่งตัวใน ACL split การอนุญาต hairpin และกฎ PAT หนึ่งข้อที่จำกัดปลายทาง ส่วนที่เหลือในเรื่องนี้คือตำนาน