นโยบาย IPsec กลืนกินทราฟฟิกภายในของคุณ: วิธีสังเกต
ตัวเลือกที่ครอบคลุมช่วงส่วนตัวทั้งหมดก็ครอบคลุมเครื่องพิมพ์ของคุณด้วย อ่านนโยบายที่ติดตั้งไว้ แล้วจำกัดข้อยกเว้นตรงจุดที่การเชื่อมต่ออยู่
เครื่องพิมพ์บนโต๊ะหยุดตอบสนองทันทีที่อุโมงค์ขึ้น และไม่มีอะไรในการตั้งค่าอุโมงค์กล่าวถึงเครื่องพิมพ์ สิ่งที่มักเกิดขึ้นคือช่วงที่ได้รับการป้องกันถูกเขียนกว้างพอที่จะรวมเครื่องพิมพ์ไว้ด้วย เครื่องจึงพยายามเข้ารหัสทราฟฟิกที่ควรอยู่ในเซกเมนต์ภายใน การอ่านนโยบายที่ติดตั้งไว้จะอธิบายการดักจับนี้ การจำกัดให้แคบลงในจุดที่ถูกต้องจะรักษาทราฟฟิกปลายทางให้ปลอดภัย การไล่จากการร้องขอที่ล้มเหลวไปยังนโยบายที่ตรงกันใช้เวลาไม่กี่นาที
ไล่ตามโฟลว์ก่อนเปลี่ยนตัวเลือก
เริ่มจากการร้องขอที่ล้มเหลวและจดค่าสี่อย่าง: ที่อยู่ต้นทางที่เครื่องใช้ จุดหมายปลายทางที่แน่นอน เส้นทางที่เคอร์เนลเลือก และนโยบายที่ตรงกับคู่นั้น
ข้อเท็จจริงสี่ข้อนี้ตัดสินว่าการดักจับเป็นเจตนาหรืออุบัติเหตุ จุดหมายปลายทางที่อยู่ในตัวเลือกปลายทางได้รับการป้องกันตามการออกแบบ แม้การออกแบบจะผิดก็ตาม จุดหมายปลายทางที่อยู่นอกตัวเลือกนั้นแต่ยังถูกดักจับได้หมายความว่ามีอย่างอื่นตรงกัน และการเปลี่ยนตัวเลือกจะไม่ช่วย ทั้งสองกรณีพบได้บ่อย และคำสั่งเดียวก็แยกความต่างได้
ทำสิ่งนี้ก่อนแก้ไขอะไร เพราะกรณีที่น่าสนใจคือซับเน็ตภายในที่ทับซ้อนกับช่วงส่วนตัวที่การเชื่อมต่อป้องกัน คำนำหน้าที่คุ้นเคยอย่าง 192.168.0.0/16 ปรากฏในหลายเครือข่าย และตัวเลือกที่เขียนสำหรับหนึ่งในนั้นอาจครอบของคุณอย่างเงียบ ๆ
ภายในสามแบบที่ทำงานต่างกัน
จุดหมายที่กำหนดให้โฮสต์นี้ จุดหมายบนลิงก์เดียวกัน และจุดหมายหลังอินเทอร์เฟซอื่นเป็นสามกรณีที่ต่างกัน เคอร์เนลปฏิบัติต่อแต่ละกรณีต่างกันเมื่อตัดสินว่าทราฟฟิกต้องการการป้องกันหรือไม่
ทราฟฟิกที่เกตเวย์สร้างเองก็ไม่เหมือนทราฟฟิกที่ส่งต่อจากไคลเอนต์ นโยบายที่ดูถูกต้องสำหรับทราฟฟิกที่ส่งต่ออาจดักจับเซสชันการจัดการของเกตเวย์เอง และนั่นคือวิธีที่ผู้ดูแลสูญเสียการเข้าถึงขณะซ่อมอุโมงค์
นิสัยที่มีประโยชน์คือการเอ่ยชื่อกรณีออกมาดัง ๆ: แพ็กเก็ตนี้มาจากฉัน ไปยังลิงก์ของฉัน หรือผ่านฉันไป? คำตอบแต่ละข้อชี้ไปยังตำแหน่งที่ต่างกันให้จำกัด การจดกรณีไว้ยังทำให้คนถัดไปไม่ต้องทำงานเดิมซ้ำ
เมื่อช่วงที่ได้รับการป้องกันเป็นพื้นที่ส่วนตัวทั้งหมด ทั้งสามกรณีสามารถตกอยู่ภายในได้พร้อมกัน และอาการจะกลายเป็นเครื่องที่ไม่สามารถเข้าถึงอะไรได้เลยนอกจากจุดสิ้นสุดของอุโมงค์
อ่านนโยบายที่ติดตั้งไว้ ไม่ใช่ไฟล์
ไฟล์กำหนดค่าอธิบายเจตนา เคอร์เนลเก็บนโยบายที่ตรงกันจริง แสดงทั้งสองอย่างและถือความไม่ตรงกันเป็นข้อค้นพบแรก
คำสั่งเหล่านี้แสดงเส้นทางที่เลือกสำหรับจุดหมายและนโยบายที่ติดตั้งในแต่ละทิศทาง:
ip route get 192.168.50.20
ip xfrm policy list
sudo swanctl --list-connsเส้นทางบอกว่าอินเทอร์เฟซใดที่แพ็กเก็ตจะใช้ รายการนโยบายบอกว่าจะมีการใช้เทมเพลตกับแพ็กเก็ตนั้นหรือไม่ และรายการการเชื่อมต่อแสดงว่าดีมอนคิดว่าติดตั้งตัวเลือกใดไว้ หากจุดหมายปรากฏในตัวเลือกปลายทาง คุณพบการดักจับโดยไม่ต้องเดา
จำกัดตัวเลือกให้แคบลงหรือข้ามจุดหมาย
มีการซ่อมแซมที่รองรับสองวิธี และตอบคำถามต่างกัน การจำกัดตัวเลือกให้แคบลงบอกว่าการเชื่อมต่อนี้ป้องกันเพียงช่วงที่เล็กกว่า ซึ่งถูกเมื่อช่วงที่กว้างกว่าเป็นความผิดพลาด การเพิ่มการข้ามบอกว่าจุดหมายเฉพาะนี้ไม่ควรได้รับการป้องกันเลย ซึ่งถูกเมื่อช่วงที่ป้องกันกว้างจริงและมีจุดหมายหนึ่งเป็นข้อยกเว้น
เลือกวิธีแรกเมื่อทำได้ เพราะตัวเลือกที่เล็กกว่านั้นคิดตามได้ง่ายกว่าและมองเห็นได้ในนิยามของการเชื่อมต่อ เลือกวิธีที่สองเมื่อช่วงกว้างเป็นเจตนาและข้อยกเว้นเป็นโฮสต์หรือซับเน็ตเดียวที่คุณเอ่ยชื่อได้
ทั้งสองอยู่ในกำหนดค่าที่เป็นเจ้าของการเชื่อมต่อ กฎเวลารันที่เพิ่มด้วยมือจะหายไปในการเชื่อมต่อครั้งถัดไป และความล้มเหลวจะกลับมาในจังหวะที่ไม่มีใครจำวิธีเลี่ยงได้
ข้อยกเว้นที่ทนต่อการติดตั้งใหม่
หลังการเปลี่ยนแปลง ให้ทำคำขอที่ไม่เป็นอันตรายเดิมซ้ำและดูตัวนับเดิม จุดหมายภายในควรตอบสนอง และจุดหมายปลายทางที่ตั้งใจไว้ควรยังแสดงทราฟฟิกที่เข้ารหัส
การตรวจสอบสองอย่างนี้ยืนยันว่าข้อยกเว้นอยู่รอดและการป้องกันไม่
ip xfrm policy list | grep -c out
ping -c 3 192.168.50.20จากนั้นตัดและเชื่อมต่ออุโมงค์ใหม่โดยเจตนา แล้วทำทั้งสองอย่างซ้ำ ข้อยกเว้นที่ทำงานก่อนการเชื่อมต่อใหม่และล้มเหลวหลังการเชื่อมต่อใหม่ถูกนำไปใช้กับเลเยอร์ผิด และนั่นคือวิธีที่พบบ่อยที่สุดที่ปัญหานี้กลับมา