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

สองซอง หนึ่งลิงก์กายภาพ

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

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

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

ติดตามคำขอหนึ่งรายการในการเดินทาง

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

ip route get 203.0.113.7
ip -brief addr show
ip -4 addr show dev wg0

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

จากนั้นดูฮอปแรกจากภายในซอง และเปรียบเทียบกับฮอปแรกจากภายนอก:

traceroute -n -m 3 203.0.113.7
sudo tcpdump -ni wg0 -c 5

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

สามที่อยู่ และเว็บไซต์เห็นเพียงหนึ่งเดียว

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

AddressWhere it appearsWho can see it
Endpoint addressOuter header, the peer you connect toYour access network and the path to it
Inner tunnel addressInside the envelope, on the virtual interfaceThe peer, and anything the peer routes to
Exit addressSource of the packet that reaches the websiteThe website and its upstream

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

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

ซองถูกเปิดที่ไหน และอะไรอยู่รอดจากมัน

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

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

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

ตรวจสอบเส้นทางที่แอปพลิเคชันใช้จริง

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

getent hosts example.com
ip route get "$(getent hosts example.com | awk '{print $1; exit}')"
ss -tnp state established '( dport = :443 )'

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

สถาปัตยกรรมความปลอดภัย RFC 4301 อธิบายเวอร์ชันชั้น IP ของการห่อนี้สำหรับ IPsec และตรรกะชั้นเดียวกันใช้กับ WireGuard และ OpenVPN เมื่อคุณชี้ไปที่แพ็กเก็ตภายในและแพ็กเก็ตภายนอกเป็นวัตถุแยกกันได้ พฤติกรรมส่วนใหญ่ของอุโมงค์ก็ไม่เป็นปริศนาอีกต่อไป และกลายเป็นตารางเส้นทางที่คุณอ่านได้

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