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

อ่านตารางเส้นทางก่อน

ก่อนจะเปลี่ยนอะไร ให้บันทึกตาราง IPv4 ด้วย route print -4 และเก็บผลลัพธ์ไว้ เชื่อมต่อใหม่ บันทึกอีกครั้ง และเปรียบเทียบบรรทัด 0.0.0.0 เส้นทางเริ่มต้นที่ใช้งานอยู่ระบุอินเทอร์เฟซ และถ้าอินเทอร์เฟซนั้นคือทันเนล การพิมพ์และการท่องเว็บในเครื่องจะถูกส่งไปสำนักงานก่อน

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

ลบเส้นทางเริ่มต้นออก มีสามวิธี

บนโปรไฟล์ Windows ที่มีมาให้ การควบคุมคือช่องทำเครื่องหมาย เปิดคุณสมบัติของการเชื่อมต่อ แล้ว IPv4 จากนั้นขั้นสูง และยกเลิก Use default gateway on remote network แอปการตั้งค่ารุ่นใหม่ซ่อนไดอะล็อกเดิมไว้ลึกลงไปอีกชั้น จากพรอมต์ที่ยกสิทธิ์แล้ว การเปลี่ยนแปลงเดียวกันคือ cmdlet หนึ่งตัว:

Set-VpnConnection -Name "Corp" -SplitTunneling $true

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

เพิ่มกลับเฉพาะส่วนที่เป็นของงาน

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

Add-VpnConnectionRoute -ConnectionName "Corp" -DestinationPrefix 172.20.0.0/16

วิธีเก่ายังใช้ได้และยังอยู่ในเช็กลิสต์ทุกฉบับ: route -p add 172.20.0.0 mask 255.255.0.0 172.20.0.1 if 14 พร้อมดัชนีอินเทอร์เฟซและที่อยู่เกตเวย์ของทันเนลเอง มันคงอยู่ข้ามการรีบูต ซึ่งเป็นทั้งจุดประสงค์และอันตราย เพราะดัชนีอาจเป็นของอย่างอื่นในการบูตครั้งถัดไป

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

เมื่อเซิร์ฟเวอร์ตัดสินใจแทนคุณ

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

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

การทับซ้อนเป็นปัญหาอีกแบบ

ถ้า LAN ที่บ้านและ LAN ที่สำนักงานใช้คำนำหน้าเดียวกันเช่น 192.168.0.0/24 ก็ไม่มีเส้นทางใดแยกทั้งสองได้ แพ็กเก็ตทุกตัวในช่วงนั้นมีผลการค้นหาเดียว และทางแก้คือเปลี่ยนเลขฝั่งหนึ่งหรือเข้าถึงสำนักงานผ่านที่อยู่ที่แปลมาจากพูล การเพิ่มเส้นทางที่เฉพาะเจาะจงขึ้นเพียงแต่ย้ายว่าครึ่งไหนของเครือข่ายจะพัง

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

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