route-gateway ไม่ใช่ redirect-gateway: สิ่งที่เปลี่ยนจริง ๆ
ตัวเลือกนี้ให้เพียงฮอปถัดไปสำหรับเส้นทางที่ OpenVPN ติดตั้ง การลบมันไม่ได้ปิดอุโมงค์เต็มที่ถูกดันมา และการแก้ไขอยู่ที่การเปลี่ยนเส้นทาง
อุโมงค์ของคุณขึ้นมา ซับเน็ตส่วนตัวตอบสนอง และการท่องเว็บปกติยังคงหายเข้าไปใน VPN แม้มีคนลบ บรรทัดเกตเวย์ออกจากโปรไฟล์ การผสมกันนั้นคือลายนิ้วมือของการแก้ไขไดเรกทีฟผิดตัว สิ่งที่ถูกลบไปเคยให้ฮอปถัดไปแก่ไคลเอนต์สำหรับเส้นทางที่มันติดตั้ง สิ่งที่ยังคงดักจับทราฟฟิกมาจากที่อื่นและถูกเซิร์ฟเวอร์ดันมา ความครอบคลุมกับฮอปถัดไปเป็นงานคนละอย่าง และมีเพียงอย่างเดียวที่ตัดสินว่าปลายทางสาธารณะใช้อุโมงค์หรือไม่
บรรทัดที่คุณลบเป็นฮอปถัดไป ไม่ใช่สวิตช์นโยบาย
ทุกเส้นทางที่ไคลเอนต์ติดตั้งต้องมีที่อยู่เกตเวย์ให้ชี้ไป และไดเรกทีฟเกตเวย์คือแหล่งของที่อยู่นั้นเมื่อเส้นทางไม่ได้ระบุเอง ลบมันออกแล้วเส้นทางเหล่านั้นก็ไม่มีที่ให้เกาะ จึงติดตั้งไม่สำเร็จหรือไปจบลงบนเส้นทางที่ไปไม่ถึงไหน ซับเน็ตส่วนตัวคือสิ่งที่เส้นทางแบบนั้นบรรทุกอยู่พอดี
ระหว่างนั้นพฤติกรรมที่รอดชีวิตมีผู้เขียนอีกคน ตัวเลือกเปลี่ยนเส้นทางในบล็อกที่ถูกดัน ซึ่งย้ายทราฟฟิกขาออกปกติเข้าไปในอุโมงค์ตามแฟล็กของมัน การลบเกตเวย์ไม่ได้ปิดหรือทำให้มันอ่อนแอลง ผลลัพธ์คือแย่ที่สุดของทั้งสองสถานะ ทราฟฟิกสาธารณะยังคงถูกดักจับ และปลายทางส่วนตัวที่ทำให้อุโมงค์มีเหตุผลตอนนี้เข้าถึงไม่ได้ นั่นคือเหตุผลที่การแก้ไขครั้งที่สองซึ่งทำด้วยเจตนาเดียวกันก็ไม่เปลี่ยนอะไร
สี่คันโยก สี่งานที่แตกต่าง
ไดเรกทีฟสี่ตัวถูกอ้างถึงสลับกันในบทสนทนานี้ และมีเพียงตัวเดียวที่ควบคุมความครอบคลุม นั่นคือปลายทางใดที่ผ่านอุโมงค์ ตัวที่สองกำหนดฮอปถัดไปที่เส้นทางใช้ ตัวที่สามติดตั้งพรีฟิกซ์เดียว และตัวที่สี่ทิ้งทุกอย่างที่เซิร์ฟเวอร์ดันมา รวมถึงเส้นทางส่วนตัวที่การติดตั้งต้องการ ตารางจัดเรียงตามสิ่งที่ผู้ดูแลพยายามเปลี่ยน ไม่ใช่ตามชื่อ เพราะชื่อคือสิ่งที่ทำให้เกิดความสับสน มองว่าเป็นสี่การตัดสินใจแยกกันและเลือกสิ่งที่คุณต้องการย้อนกลับจริง ๆ
ในทางปฏิบัติทั้งสี่มักมาในบล็อกที่ถูกดันเดียวกัน ทีละบรรทัด ทำให้ดูเหมือนส่วนหนึ่งของการตั้งค่าเดียว มันไม่ใช่ และเอกสารอ้างอิง OpenVPN บันทึกไว้เป็นกลไกที่แตกต่างกันด้วยเหตุผลนั้น การรู้ว่ากำลังย้อนการตัดสินใจใดคืองาน ส่วนการแก้ไขคือหนึ่งบรรทัด
| What you are trying to change | Directive that decides it | What it leaves alone |
|---|---|---|
| Which destinations use the tunnel | redirect-gateway | Per-prefix routes and resolver choice |
| The next hop a pushed route points at | route-gateway | Coverage of public destinations |
| One reachable prefix | route | Every other destination, default path included |
| All pushed routing and DNS at once | route-nopull | Nothing, which is the problem |
กรองบรรทัดที่ถูกดัน เก็บฮอปถัดไป
ถ้าความครอบคลุมที่คุณคัดค้านมาเป็นตัวเลือกที่ถูกดัน คำตอบแคบ ๆ คือเพิกเฉยต่อตัวเลือกนั้นตามชื่อและปล่อยส่วนที่เหลือของบล็อกที่ถูกดันไว้ไม่แตะต้อง เมื่อเขียนเป็นฟิลเตอร์จะดูเหมือนบรรทัดด้านล่าง และที่ของมันคือโปรไฟล์ของไคลเอนต์ที่ได้รับผลกระทบ ไม่ใช่การกำหนดค่าเซิร์ฟเวอร์
pull-filter ignore "redirect-gateway"
ความแคบคือประเด็น เพราะฟิลเตอร์เปรียบเทียบพรีฟิกซ์ข้อความ รูปแบบที่สั้นกว่าจึงตรงกับไดเรกทีฟฮอปถัดไปด้วย ซึ่งลอกข้อมูลที่เส้นทางส่วนตัวพึ่งพาออกไปพอดีและทำผิดซ้ำในชุดใหม่ ฟิลเตอร์ยังทำงานกับตัวเลือกที่ถูกดันเท่านั้น จึงไม่แตะบรรทัดเทียบเท่าที่เขียนในเครื่องหรือที่ผู้จัดการเครือข่ายบังคับไว้เลย หลังจากนั้นให้เชื่อมต่อใหม่ เพราะเซสชันที่เปิดอยู่ไม่ประเมินสิ่งที่เซิร์ฟเวอร์ดันมาอีกครั้ง
อ่านการค้นหา ไม่ใช่ตาราง
หลังจากโหลดโปรไฟล์ใหม่ ถามเคอร์เนลว่าปลายทางสองแห่งจะไปที่ใดจริง ๆ หนึ่งในพรีฟิกซ์ส่วนตัวและหนึ่งบนอินเทอร์เน็ตสาธารณะ การดัมป์ตารางหลักทั้งหมดอ่านยากและอ่านผิดได้ง่ายกว่า เพราะเส้นทางอาจมีอยู่และยังแพ้ให้กับการจับคู่ที่เจาะจงกว่า ในการกำหนดเส้นทางตามนโยบาย กฎ ตาราง และที่อยู่ต้นทางก็เป็นส่วนหนึ่งของการตรวจสอบ
ip route get 10.40.7.25
ip route get 203.0.113.77
ip rule show
ตัวแปร def1 ควรค่าแก่การรู้จัก เพราะมันทำให้รายการค่าเริ่มต้นเก่ายังมองเห็นได้ในขณะที่ค่าเริ่มต้นครึ่งหนึ่งคู่หนึ่งชนะการค้นหา ดังนั้นบรรทัด 0.0.0.0/0 ในเอาต์พุตจึงไม่ได้พิสูจน์อะไรด้วยตัวเอง การค้นหาตอบคำถามที่รายการดูเหมือนตอบเท่านั้น
DNS, IPv6 และเส้นทางส่วนตัวยังต้องทำงาน
การปฏิเสธการเปลี่ยนเส้นทาง IPv4 หนึ่งครั้งไม่ได้บอกอะไรเกี่ยวกับตัวแก้ไข ดังนั้นตัวเลือก DNS ที่ถูกดันอาจส่งคำถามเข้าไปในอุโมงค์ต่อในขณะที่เส้นทางดูถูกต้อง ค่าเริ่มต้น IPv6 อาจทำแบบเดียวกันกับกลุ่มที่อยู่ที่การตรวจสอบ IPv4 ไม่เคยแตะ การตรวจสอบทั้งสองต้องอาศัยการตัดสินใจที่ชัดเจนไม่ใช่การสันนิษฐาน จากนั้นยืนยันว่าบริการส่วนตัวยังตอบสนอง เพราะอุโมงค์แยกที่สูญเสียเส้นทางส่วนตัวไม่ใช่อุโมงค์แยก แต่เป็นอุโมงค์ที่พัง
เครื่องมือที่กว้างกว่าหนึ่งอย่างควรค่าแก่คำเตือน route-nopull ทิ้งทุกเส้นทางที่ถูกดันและทุกตัวเลือก DNS ที่ถูกดัน ซึ่งหยุดอุโมงค์เต็มอย่างแน่นอนและทำลายเส้นทางส่วนตัวที่การติดตั้งพึ่งพาอย่างแน่นอนเช่นกัน ดังนั้นมันจึงเป็นค้อนที่ใหญ่กว่าฟิลเตอร์ชื่อที่เล็งไปที่ตัวเลือกเดียวมาก ตรวจสอบปลายทางส่วนตัว ปลายทางสาธารณะ และตัวแก้ไขหลังการเปลี่ยนแปลงใด ๆ และถือว่าการจับมือที่เสร็จสมบูรณ์เป็นหลักฐานของสิ่งอื่นใดนอกจากตัวการจับมือนั้น