โปรไฟล์ที่มี redirect-gateway def1 bypass-dhcp รวมการแทนที่เส้นทางเริ่มต้น IPv4 เข้ากับข้อยกเว้นแคบ ๆ หนึ่งข้อ ผู้คนอ่านคำสุดท้ายแล้วคาดหวังวิธีแก้ทั่วไปสำหรับการเชื่อมต่อมือถือ จากนั้นใช้เวลาช่วงบ่ายไปกับทฤษฎี DHCP ที่แฟล็กนี้ไม่เคยรองรับ แต่ละส่วนทำสิ่งเดียว และข้อยกเว้นเล็กกว่าชื่อเสียงของมันมาก

แยกแฟล็กออกจากกันก่อนจะโยนความล้มเหลวที่เกิดเฉพาะบนเครือข่ายมือถือให้กับการกำหนดที่อยู่ สองครึ่งของสตริงนั้นไม่เกี่ยวข้องกันเลย

สองแฟล็ก สองงานที่ไม่เกี่ยวกัน

ด้วย def1 ไคลเอนต์เพิ่มเส้นทางเริ่มต้นครึ่งเส้น IPv4 สองเส้นแทนการสลับเส้นทางเริ่มต้นที่มีอยู่แล้ว 0.0.0.0/1 ครอบคลุมครึ่งล่างของพื้นที่ที่อยู่ และ 128.0.0.0/1 ครึ่งบน ดังนั้นเมื่อรวมกันจึงไปถึงทุกปลายทาง ขณะที่แต่ละเส้นยังเฉพาะเจาะจงกว่า 0.0.0.0/0 เส้นทางเริ่มต้นเดิมจึงยังอยู่ในตารางโดยไม่ชนะการค้นหาเหล่านั้น ซึ่งทำให้เกตเวย์เก่ายังเข้าถึงได้สำหรับทุกสิ่งที่ไคลเอนต์กำหนดเส้นทางอย่างชัดเจน นอกจากนี้ยังเหลือเส้นทางเริ่มต้นทับซ้อนกันสองเส้นในตาราง ซึ่งเป็นเหตุให้การทิ้งเส้นทางอาจดูแปลกกว่าที่โปรไฟล์บอกเป็นนัย

bypass-dhcp แยกต่างหาก และไม่แตะเส้นทางเริ่มต้นเลย คู่มือ OpenVPN 2.6 อธิบายว่าเป็นการเพิ่มเส้นทางตรงไปยังเซิร์ฟเวอร์ DHCP ที่ไม่ได้อยู่ในซับเน็ตท้องถิ่น เพื่อให้ทราฟฟิกการเช่าออกนอกอุโมงค์ และระบุว่าพฤติกรรมนี้ถูกนำไปใช้บนไคลเอนต์ Windows และอาจไม่มีในที่อื่น

เหตุผลที่มันมีอยู่เป็นเชิงกลไก เมื่อเส้นทางครึ่งเริ่มต้นจับทราฟฟิกขาออกแล้ว การต่ออายุ DHCP ที่มุ่งไปยังเซิร์ฟเวอร์ในเครือข่ายจริงจะถูกกำหนดเส้นทางเข้าอุโมงค์ เว้นแต่มีบางอย่างปักหมุดที่อยู่นั้นไว้กับอินเทอร์เฟซจริง แฟล็กปักหมุดมัน

ข้อยกเว้นครอบคลุมอะไรจริง ๆ

ตารางตัวอย่างหลังการเชื่อมต่อสำเร็จแสดงรูปร่าง คือเส้นทางครึ่งเริ่มต้นสองเส้นผ่านอุโมงค์ และเส้นทางโฮสต์หนึ่งเส้นสำหรับเซิร์ฟเวอร์ DHCP ผ่านเกตเวย์จริง อ่านเป็นรูปร่าง ไม่ใช่ที่อยู่ของคุณเอง

0.0.0.0/1        via 10.8.0.1      dev tun0
128.0.0.0/1      via 10.8.0.1      dev tun0
192.168.1.1/32   via 192.168.1.254 dev wlan0

บรรทัดที่สามระบุปลายทางเดียว ไม่ใช่การตั้งค่ารีโซลเวอร์ ไม่ใช่การอนุญาตทั่วไปสำหรับเครือข่ายท้องถิ่น และไม่ใช่กฎขาออกบนเซิร์ฟเวอร์ โทรศัพท์บนเครือข่ายมือถืออาจไม่มีเซิร์ฟเวอร์ DHCP ที่ไคลเอนต์ระบุได้ด้วยวิธีนี้ ซึ่งเป็นเหตุให้แฟล็กไม่เปลี่ยนอะไรตรงนั้น

ตรวจสอบว่าไคลเอนต์ติดตั้งอะไรจริง ๆ

แยกแยะระหว่างตัวเลือกที่เขียนในโปรไฟล์ ตัวเลือกที่เซิร์ฟเวอร์เสนอ และเส้นทางที่เจ้าของการเชื่อมต่อใช้จริง ไคลเอนต์ที่ปฏิเสธแฟล็กที่ไม่รองรับอาจเก็บส่วนที่เหลือของการกำหนดค่าไว้ อุโมงค์จึงขึ้นมาและข้อยกเว้นก็หายไปเฉย ๆ อ่านบันทึกของไคลเอนต์เองและตารางเส้นทางที่ได้ แทนการสมมติว่าบรรทัดในไฟล์มีผลแล้ว สามอย่างนี้เป็นจริงพร้อมกันได้ และมีเพียงอย่างสุดท้ายที่เปลี่ยนว่าแพ็กเก็ตไปที่ไหนจริง ๆ

ทำให้เส้นทางไปยังปลายทาง VPN ใช้งานได้ในเวลาเดียวกัน ข้อยกเว้นปลายทางนั้นเป็นข้อกำหนดที่ต่างจากข้อยกเว้น DHCP และหากไม่มี อุโมงค์อาจจับการขนส่งที่ค้ำมันไว้

สำหรับปลายทางของแอปพลิเคชัน ให้ตรวจสอบการค้นหาที่มีผลในบริบทที่มันล้มเหลว เส้นทางท้องถิ่นที่เฉพาะเจาะจงกว่า การกำหนดเส้นทางตามนโยบาย และการยกเว้นรายแอปพลิเคชันล้วนเปลี่ยนคำตอบ ดังนั้นการมีเส้นทางครึ่งเริ่มต้นสองเส้นจึงไม่ใช่รายการของทุกโฟลว์

ส่วนที่เหลือของเส้นทางไม่ได้อยู่ในแฟล็กนี้

เซิร์ฟเวอร์ยังต้องได้รับอนุญาตให้ส่งต่อทราฟฟิกอินเทอร์เน็ตของไคลเอนต์ และมีการจัดทางออกที่ส่งกลับได้ ไม่มีเส้นทางฝั่งไคลเอนต์ใดสร้างการส่งต่อหรือการแปลต้นทางที่ขาดหายบนเซิร์ฟเวอร์ และไม่มีแฟล็กใดแทนที่เส้นทางกลับที่ใช้งานได้

การแก้ชื่อและ IPv6 ต่างต้องมีนโยบายของตัวเอง การแทนที่ IPv4 ไม่ได้ชี้รีโซลเวอร์ไปยังเซิร์ฟเวอร์ฝั่งอุโมงค์ และไม่ได้สร้างความครอบคลุม IPv6 และไคลเอนต์ที่เปลี่ยนเส้นทางเฉพาะ v4 ก็ปล่อยเส้นทาง v6 ไว้ไม่แตะต้อง

เปรียบเทียบคำขอที่ไม่เป็นอันตรายซึ่งได้รับอนุมัติหนึ่งรายการบนเส้นทางเข้าถึงที่ใช้งานได้และที่ล้มเหลว โดยตรึงโปรไฟล์และปลายทางไว้ บันทึกว่าความแตกต่างอยู่ที่การแก้ชื่อ การตั้งอุโมงค์ การเลือกเส้นทาง หรือทราฟฟิกที่ถูกส่งต่อ และเก็บคำตอบไว้กับโปรไฟล์ บันทึกนั้นคือสิ่งที่กันไม่ให้คนถัดไปโทษ DHCP สำหรับปัญหาที่มันไปไม่ถึง

บทความที่เกี่ยวข้อง