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

ปลายทางคือที่อยู่เครือข่าย มาสก์อธิบายคำนำหน้า

networksetup -setadditionalroutes รับสามค่า คือปลายทาง มาสก์ซับเน็ต และเกตเวย์ การเรียกที่ส่งซับเน็ตภายในหนึ่งรายการผ่านอุโมงค์มีลักษณะดังนี้:

sudo networksetup -setadditionalroutes "VPN (L2TP)" 192.168.1.0 255.255.255.0 10.2.0.0

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

เหตุผลคือคณิตศาสตร์ ไม่ใช่นโยบาย ที่อยู่โฮสต์ที่จับคู่กับมาสก์ /24 ไม่ได้อธิบาย 192.168.1.0/24 แต่ธิบายสิ่งที่ตารางเส้นทางเก็บไว้อย่างมีประโยชน์ไม่ได้ ดังนั้นรายการจึงถูกปฏิเสธหรือถูกละเลย และอุโมงค์ก็รับส่งได้น้อยกว่าที่ตั้งใจ

เมื่อต้องการโฮสต์เดียวพอดี ให้ใช้ที่อยู่โฮสต์กับมาสก์ 255.255.255.255 คู่ผสมคือจุดที่ผิดพลาด ไม่ใช่การใช้ที่อยู่โฮสต์โดยตัวมันเอง /32 ที่สร้างจากที่อยู่เดียวเป็นเส้นทางที่ถูกต้อง /24 ที่สร้างจากที่อยู่เดียวเป็นความผิดพลาด

การเรียกแทนที่รายการ และชื่อเป็นแบบตรงตัว

สองพฤติกรรมทำให้คนประหลาดใจในการลองครั้งแรก คำสั่งตั้งค่ารายการเส้นทางเพิ่มเติมทั้งหมดแทนที่จะต่อท้าย ดังนั้นการเรียกที่เพิ่มคำนำหน้าหนึ่งรายการจะลบรายการอื่นที่มีอยู่ก่อนอย่างเงียบ ๆ สร้างทั้งชุดในการเรียกครั้งเดียว

ชื่อบริการก็ไม่ใช่ป้ายที่คุณตั้งขึ้น อ่านจากเครื่องมือและคัดลอกให้ตรง รวมถึงคำต่อท้ายชนิด:

networksetup -listallnetworkservices

ชื่อที่ต่างกันหนึ่งอักขระไม่ได้ให้ข้อผิดพลาดที่คุ้มค่าอ่านหรือเส้นทางใด ๆ เทคนิคที่ถูกต้องตรงนี้คือคัดลอกและวาง ไม่ใช่พิมพ์ใหม่จากความจำ

เมื่อโปรไฟล์อ้างสิทธิ์เส้นทางเริ่มต้น

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

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

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

อุโมงค์ PPP ต้องใช้ฮุกแทนคีย์

สำหรับอุโมงค์ที่ใช้ PPP นั้น defaultroute คือคีย์โปรไฟล์ที่สร้างเส้นทางเริ่มต้น ถอดออกแล้วไคลเอนต์จะเลิกอ้างสิทธิ์ทุกปลายทาง จากนั้นจึงเพิ่มเส้นทางหลังอินเทอร์เฟซปรากฏ โดยทั่วไปจาก /etc/ppp/ip-up:

#!/bin/sh
/sbin/route add -net 192.168.1.0 -interface ppp0

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

ตรวจสอบการแยกด้วยคำขอสามรายการ

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

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

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

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