เมื่อ VPN ทำงานบนเราเตอร์ STUN รีพลายเปิดเผยอะไร
ที่อยู่ทันเนลของเราเตอร์ไม่ใช่ที่อยู่ภายในของเบราว์เซอร์ ติดตามว่าแต่ละคำขอถูกส่งเส้นทางและแปลอย่างไรก่อนอ่านสิ่งที่ตัวสะท้อนรายงาน
เมื่อทันเนลอยู่บนเราเตอร์ เครื่องที่เรียกเบราว์เซอร์ไม่มีอินเทอร์เฟซทันเนลเลย ถามเครื่องนั้นว่ามีที่อยู่ภายในอะไรบ้าง จะได้ที่อยู่ LAN แบบส่วนตัวกับลูปแบ็ก ไม่มีอะไรที่คล้ายที่อยู่ VPN กระนั้นเซิร์ฟเวอร์ STUN ที่อยู่อีกฟากก็ยังรายงานสิ่งที่มีความหมายเกี่ยวกับเส้นทางได้ และสิ่งที่มันรายงานก็ขึ้นอยู่กับว่าคำขอนั้นถูกส่งเส้นทางและแปลอย่างไรโดยสิ้นเชิง
นี่คือส่วนที่ควรชะลอความเร็ว คำว่า “เบราว์เซอร์ไม่ได้เป็นเจ้าของที่อยู่ VPN” ตอบคำถามเรื่องอินเทอร์เฟซ ขณะที่ที่อยู่ที่สะท้อนกลับเป็นคำตอบเรื่องเส้นทางที่ผ่านการแปล การเอาสองอย่างนี้มาปนกันทำให้เกิดข้อสรุปที่มั่นใจเกินหลักฐาน
สองอุปกรณ์ สองชุดอินเทอร์เฟซ
ในการตั้งค่าที่ใช้เราเตอร์ ทันเนลสิ้นสุดที่เราเตอร์ และไคลเอนต์ LAN ส่งทราฟฟิกปกติไปยังเกตเวย์เริ่มต้นของตน รายการอินเทอร์เฟซของไคลเอนต์ยังสั้น คือที่อยู่ส่วนตัวหนึ่ง ที่อยู่อีกอันสำหรับอีกระบบเครือข่าย และลูปแบ็ก ความเสี่ยงไม่ใช่ว่าหนึ่งในนั้นบังเอิญเป็นที่อยู่ทันเนล แต่คือคำขอออกไปตามเส้นทางที่คุณไม่ได้เลือก
ถามไคลเอนต์ว่า ปลายทางหนึ่งจะใช้เส้นทางใด แทนที่จะถามว่ามีอินเทอร์เฟซอะไรบ้าง คำตอบจะระบุเกตเวย์และที่อยู่ต้นทางที่เคอร์เนลจะใช้ ซึ่งให้ข้อมูลมากกว่ารายการที่อยู่ใด ๆ
ip route get 198.51.100.20
ip -6 route get 2001:db8::20
wg show wg0 allowed-ips
ช่วงที่อยู่สำหรับเอกสารเป็นปลายทางทดสอบที่ดีเพราะไม่เคยแปลงเป็นบริการจริง เปรียบเทียบสิ่งที่ไคลเอนต์บอกกับสิ่งที่เราเตอร์บอก และถือความไม่ตรงกันใด ๆ เป็นหลักฐานว่าการส่งเส้นทางตามนโยบาย กฎทันเนลแบบแบ่ง หรือเส้นทางเริ่มต้นเส้นที่สองกำลังทำสิ่งที่คุณไม่ได้คาดไว้
สิ่งที่รีพลายแบบ Binding บอกได้
RFC 8489 กำหนดคำขอและรีพลายแบบ Binding ซึ่งเซิร์ฟเวอร์รายงานที่อยู่ต้นทางของการขนส่งที่มันสังเกตเห็นสำหรับคำขอนั้น นี่คือข้อความเกี่ยวกับห้าองค์ประกอบหนึ่งชุด ณ ขณะหนึ่ง ไม่ใช่การสำมะโนอินเทอร์เฟซของไคลเอนต์ ดังนั้นทุกสิ่งที่น่าสนใจจึงเกิดขึ้นระหว่างไคลเอนต์กับจุดสังเกต
ช่องว่างนั้นถูกเติมด้วยการส่งเส้นทางและการแปล เราเตอร์ที่ทำ NAT ต้นทางกับทราฟฟิกขาออกจะแทนที่ต้นทางแบบส่วนตัวของไคลเอนต์ด้วยที่อยู่ของตัวเองบนอินเทอร์เฟซขาออก ถ้าอินเทอร์เฟซนั้นคือทันเนล ตัวสะท้อนจะเห็นที่อยู่ทันเนล ถ้าแพ็กเก็ตถูกกันออกจากทันเนล ตัวสะท้อนจะเห็นสิ่งที่การแปล WAN สร้างขึ้น ไคลเอนต์เดิม ตัวสะท้อนเดิม คำตอบต่างกัน
สามกรณีที่ดูคล้ายกันแต่ไม่เหมือน
ความแตกต่างที่มีประโยชน์ไม่ใช่สาธารณะกับส่วนตัว แต่คือจุดบังคับใช้นโยบายใดที่จัดการแพ็กเก็ต ไล่ดูกรณีเหล่านี้โดยเปิดตารางของเราเตอร์เอง เพราะเบราว์เซอร์ตัวเดียวสามารถสร้างทั้งสามกรณีได้ขึ้นอยู่กับกฎที่คุณลืมไปแล้วว่าตัวเองเขียนไว้
| Where the request leaves | What rewrites the source | What the reflector reports |
|---|---|---|
| Tunnel interface on the router | Router NAT towards the tunnel address | The tunnel address as seen on that path |
| WAN interface, excluded by policy | Ordinary WAN translation | The public WAN address |
| Private reflector reached through the tunnel route | Router NAT towards the tunnel address | An internal identifier valid only inside that path |
มีเพียงกรณีที่สองเท่านั้นที่ละเมิดข้อกำหนดว่าทราฟฟิกบางอย่างต้องไม่ไหลออกตรง ๆ และมีเพียงกรณีแรกกับกรณีที่สามที่เปิดเผยตัวระบุจากฝั่งทันเนล ไม่มีแถวใดในสามแถวนี้เป็นการอ้างอิงพฤติกรรมของผู้ให้บริการรายใดรายหนึ่ง การเข้าถึงตัวสะท้อนส่วนตัวได้หรือไม่นั้นขึ้นอยู่กับการส่งเส้นทาง ที่อยู่ IP ที่ได้รับอนุญาตของอีกฝ่าย และนโยบายไฟร์วอลล์ที่ปลายทั้งสองข้าง
การมีบัญชีกับผู้ให้บริการรายเดียวกันไม่ได้ยืนยันสิ่งใดในเหล่านี้ ควรจำไว้ด้วยว่าคำขอที่ถูกส่งเส้นทางอาจคงต้นทาง LAN ของไคลเอนต์ไว้ถ้าไม่มีอะไรแปลมัน ดังนั้นต้องติดตามฟิลด์ต้นทางแทนที่จะเดาจากแผนภาพโครงสร้างเครือข่าย
การรวบรวมไม่ใช่การเลือก
WebRTC รวบรวมที่อยู่ผู้สมัครเพื่อลองใช้ และผู้สมัครที่ปรากฏในรายการวินิจฉัยอาจไม่เคยขนส่งมีเดียเลย การอ่านรายการนั้นว่า “นี่คือสิ่งที่อีกฝ่ายเรียนรู้” เป็นการประเมินหลักฐานสูงเกินจริง คู่ที่ถูกเลือกคือคู่ที่ขนส่งเซสชันจริง และมันอยู่ในฟิลด์อื่น
ตัวตรวจสอบทางออกแบบ HTTPS ตอบคำถามอีกข้อ คือที่อยู่ต้นทางที่เว็บเซิร์ฟเวอร์เห็นสำหรับคำขอนั้น เป็นการตรวจสอบไขว้ที่มีประโยชน์เพราะใช้โปรโตคอลต่างกันและบ่อยครั้งใช้ปลายทางต่างจากตัวสะท้อน UDP และความไม่ตรงกันระหว่างสองวิธีมักชี้ไปที่กฎการส่งเส้นทางมากกว่าบั๊ก
ตัดสินนโยบาย แล้วจึงอ่านคำตอบ
เขียนเจตนาก่อนทดสอบ ทราฟฟิกใดต้องใช้ทันเนล ตัวใดออกได้ตรง ๆ ตระกูลที่อยู่ใดอยู่ในขอบเขต และควรเกิดอะไรขึ้นเมื่อทันเนลล่ม หากไม่มีเส้นพื้นฐานนั้น ทุกการสังเกตจะกำกวม เพราะคุณแยกไม่ออกระหว่างการรั่วไหลกับเส้นทางที่คุณอนุญาตโดยเจตนา
จากนั้นถามทีละคำถาม ปลายทางนี้ใช้เส้นทางใด ตัวสะท้อนนี้รายงานที่อยู่ใด เซสชันเลือกคู่ผู้สมัครใด เก็บคำตอบไว้ข้างนโยบายและลงวันที่ เพราะการอัปเดตเฟิร์มแวร์อาจเปลี่ยนพฤติกรรมเริ่มต้นในแบบที่ทำให้ข้อสรุปของปีที่แล้วเป็นโมฆะอย่างเงียบ ๆ
เราเตอร์ยังคงเป็นจุดบังคับใช้นโยบายที่แข็งแรง เพราะมันเห็นทราฟฟิกที่ไคลเอนต์หลบเลี่ยงไม่ได้หากไม่กำหนดค่าไคลเอนต์เองใหม่ แต่นี่ไม่ใช่คำสัญญาว่าทุกฟิลด์ในทุกโปรโตคอลแอปพลิเคชันจะไม่เปิดเผยสิ่งใด และไม่ใช่สิ่งทดแทนการจดบันทึกเส้นทางที่คุณเลือกอนุญาต