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

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

ตัวเลขนั้นแข่งกับอะไรจริง ๆ

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

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

Check in this orderQuestionWhere you read it
1. Policy and tableWhich routing table does this traffic use?ip rule, client profile
2. Prefix lengthWhich matching route is most specific?route print, ip route
3. MetricWhich of the equally specific routes is preferred?route print, ip route
4. Interface stateIs the chosen next hop reachable?adapter status, link state

ลินุกซ์เลือกตารางก่อนเมตริก

บนลินุกซ์ เคอร์เนลจะถามฐานข้อมูลนโยบายก่อน ip rule แสดงรายการกฎและตารางที่กฎเหล่านั้นเลือก และ ip route get 203.0.113.10 รายงานตาราง เส้นทาง และแอดเดรสต้นทางที่เคอร์เนลจะใช้จริงสำหรับปลายทางนั้น เมตริกภายในตาราง 100 ไม่เคยแข่งกับเส้นทางในตารางหลัก เพราะกฎเลือกตารางก่อนที่จะมีการเปรียบเทียบเมตริกใด ๆ

ด้วยเหตุนี้เส้นทางอาจดูถูกต้องใน ip route show table all แต่ยังไม่พาทราฟฟิกไป อ่านกฎที่ตรงกัน แล้วอ่านตารางที่กฎเลือก แล้วจึงเปรียบเทียบเส้นทางภายในตารางนั้น ถ้าเลือกตารางผิด การแก้เมตริกในอีกตารางก็ไม่ช่วย

วินโดวส์รวมเมตริกสองตัว

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

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

เก็บปลายทางของอุโมงค์ไว้ด้านนอกอุโมงค์

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

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

ตรวจสอบทั้งสองตระกูลแอดเดรสและบริบทของแอป

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

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

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