VPN กับรีเลย์ TURN: อะไรกันแน่ที่รับส่งสาย WebRTC?
อุโมงค์เปลี่ยนเส้นทางที่ ICE มองเห็น แต่ไม่เคยจัดสรรรีเลย์และไม่ได้ให้การส่งสัญญาณ เปรียบเทียบสิ่งที่ทางออก VPN และเซิร์ฟเวอร์ TURN ให้
หน้าเว็บโหลดผ่าน VPN ได้ แต่สายไม่เคยเชื่อมต่อ: ความล้มเหลวสองแบบที่อยู่ในแถบที่อยู่เดียวกัน อุโมงค์เปลี่ยนเส้นทางที่เบราว์เซอร์ใช้ แต่ไม่ได้กลายเป็นบริการส่งสัญญาณ ไม่ได้เป็นเซิร์ฟเวอร์ STUN หรือรีเลย์ และไม่ได้ตัดสินว่า ICE จะเลือกคู่ผู้สมัครใด การแยกงานของแต่ละองค์ประกอบออกจากกันคือสิ่งที่เปลี่ยนคำว่า “WebRTC ถูกบล็อก” ที่คลุมเครือให้เป็นความผิดพลาดที่ระบุได้
สี่งานที่อุโมงค์แตะต้องเพียงหนึ่งเดียว
แอปพลิเคชันแลกเปลี่ยนข้อมูลเซสชันผ่านกลไกส่งสัญญาณใดกลไกหนึ่ง นั่นคืองานแรก ICE รวบรวมที่อยู่ผู้สมัครและทดสอบคู่จนกว่าจะมีคู่ที่ใช้งานได้ นั่นคืองานที่สอง STUN ให้ฝ่ายตรงข้ามรู้ว่าทราฟฟิกของตนมองจากภายนอกเป็นอย่างไร และ TURN จัดสรรรีเลย์สำหรับกรณีที่ไม่มีเส้นทางตรง บทบาททั้งสี่นี้แตกต่างกัน และ VPN ส่งผลต่อที่อยู่และการกรองที่ทั้งสี่พบ ไม่ได้ให้บริการใดในนั้น
นั่นคือเหตุผลที่การเข้าสู่ระบบสำเร็จไม่ได้บอกอะไรเกี่ยวกับเส้นทางสื่อ การส่งสัญญาณมักวิ่งบน HTTPS เดียวกับที่หน้าเว็บใช้อยู่แล้วที่พอร์ต 443 ขณะที่สื่ออาจเดินทางผ่าน UDP ไปยังปลายทางที่ต่างกันโดยสิ้นเชิง
การกำหนดที่อยู่แบบส่วนตัวทำให้ความสับสนแย่ลง ที่อยู่ของอุโมงค์จะมีประโยชน์ต่อฝ่ายตรงข้ามก็ต่อเมื่อฝ่ายนั้นมีเส้นทางที่ตั้งใจไว้กลับมาที่อยู่นั้น การเป็นที่อยู่ส่วนตัวไม่ใช่หลักฐานของการเข้าถึงซึ่งกันและกัน และเบราว์เซอร์ก็ไม่ได้ถือเช่นนั้นเมื่อตัดผู้สมัครที่ไม่สามารถตรวจสอบได้ ผู้สมัครที่ดูเหมือนอยู่ในเครื่องคุณอาจตรวจสอบไม่ได้จากอีกฝ่าย ควรตัดช่องว่างนั้นออกก่อนสรุปว่าอุโมงค์กำลังทิ้งสื่อ
เปรียบเทียบทางออก VPN กับรีเลย์ TURN
ทั้งสองส่งต่อแพ็กเก็ต จึงมักถูกเข้าใจผิดว่าเหมือนกัน และตารางเปรียบเทียบด้านบนควรอ่านทีละคอลัมน์ ไม่ใช่ในฐานะรายการคุณสมบัติ การจัดสรรรีเลย์เป็นออบเจ็กต์ต่อหนึ่งเซสชันที่สร้างขึ้นด้วยคำขอที่ผ่านการพิสูจน์ตัวตน ส่วนอุโมงค์คือเส้นทาง ฝ่ายหนึ่งมีข้อมูลรับรองที่หมดอายุ อีกฝ่ายมีที่อยู่ของฝ่ายตรงข้ามที่เข้าถึงได้หรือไม่ได้
| Component | What it contributes | What it needs to work | What it cannot do |
|---|---|---|---|
| VPN exit | Changes the observed mapping and the route packets take | A working tunnel and a policy that permits the media transport | Allocate a relay or supply signaling |
| STUN server | Reports the mapped address a peer appears to use | Reachability from the client, on its configured transport | Carry media when a direct path fails |
| TURN server | Relays media through an authenticated allocation | Valid credentials, an allowed transport and sufficient capacity | Fix a missing ICE policy or an unauthorized client |
| Signaling channel | Carries offers, answers and candidate lists | Both peers reaching the same application endpoint | Establish connectivity by itself |
หมายเลขพอร์ตทำให้ความแตกต่างเป็นรูปธรรม TURN ฟังที่พอร์ต 3478 สำหรับ UDP และ TCP และที่พอร์ต 5349 สำหรับ TLS ตามค่าเริ่มต้น และเครือข่ายที่อนุญาต 443 แต่ทิ้งพอร์ตเหล่านั้นจะทำให้สายที่ผ่านรีเลย์ล้มเหลว ขณะที่การท่องเว็บยังดำเนินต่อไปตามปกติ การเปลี่ยนพอร์ตของ VPN ไม่ได้กำหนดค่าใด ๆ เหล่านั้น เพราะพอร์ตที่สำคัญเป็นของบริการรีเลย์ ไม่ใช่ของอุโมงค์
อ่านผลวินิจฉัย แล้วทดสอบสาย
เบราว์เซอร์แสดงข้อมูลที่จำเป็นโดยไม่ต้องดักแพ็กเก็ต เปิดหน้าวินิจฉัย WebRTC ของเบราว์เซอร์คุณ ทำสาย แล้วอ่านคู่ผู้สมัครที่ถูกเลือกแทนรายการที่รวบรวมไว้: เลือกประเภทผู้สมัครภายในและระยะไกลใด ผ่านการขนส่งและตระกูลที่อยู่ใด และเส้นทางเป็นแบบตรงหรือผ่านรีเลย์
มีสองการอ่านที่ควรรู้ไว้ล่วงหน้า หากคู่ที่เลือกเป็นโฮสต์ถึงโฮสต์บนที่อยู่ส่วนตัว สื่อจะอยู่บนเส้นทางที่คุณให้เหตุผลได้ หากเป็นรีเลย์ถึงรีเลย์ สายจะใช้ความจุของรีเลย์และขึ้นกับความพร้อมของบริการนั้น ความล้มเหลวที่หยุดที่ “กำลังตรวจสอบ” โดยไม่มีคู่ที่เลือก หมายความว่ารวบรวมผู้สมัครแล้วแต่ไม่มีตัวใดผ่านการตรวจสอบการเชื่อมต่อ
จากนั้นเปรียบเทียบปลายทั้งสองเดียวกันในสายเดียวกันโดยเปลี่ยนเพียงเงื่อนไขที่ได้รับอนุมัติหนึ่งข้อ และยอมรับผลจากสื่อหรือข้อมูลสองทาง ไม่ใช่จากตัวบ่งชี้ “เชื่อมต่อแล้ว” การรวบรวมผู้สมัครสำเร็จในหลายกรณีที่ไม่เคยส่งเฟรมเสียงแม้แต่เฟรมเดียว ทำสายซ้ำอีกด้านของการเปลี่ยนแปลงและเก็บภาพวินิจฉัยทั้งสองไว้ เพราะการเปรียบเทียบสองรอบให้ข้อมูลมากกว่าการอ่านเพียงรอบเดียว ปลายเดียวกัน โคเดกเดียวกัน ตัวแปรที่เปลี่ยนหนึ่งตัว
แอปพลิเคชันที่ตั้งนโยบายการขนส่ง ICE เป็น relay โดยเจตนาจะขอเฉพาะผู้สมัครแบบรีเลย์เท่านั้น การตั้งค่านั้นไม่ได้สร้างรีเลย์และไม่ได้ซ่อมข้อมูลรับรองที่ขาดหาย แต่ทำให้ข้อกำหนดชัดเจน ซึ่งมีประโยชน์เมื่อมีคนโทษ VPN สำหรับนโยบายที่เว็บไซต์เลือกเอง
รักษาข้อกล่าวอ้างเรื่องความเป็นส่วนตัวให้แคบเท่าหลักฐาน
การเปิดเผยผู้สมัครขึ้นกับนโยบายของเบราว์เซอร์และแอปพลิเคชัน ไม่ใช่สถานะของอุโมงค์เพียงอย่างเดียว และข้อกำหนดการเชื่อมต่อระหว่างเพื่อนของ W3C ถือว่าการจัดการ IP เป็นเรื่องของตัวเอง ดังนั้น VPN ที่เชื่อมต่ออยู่จึงเป็นพื้นฐานที่อ่อนสำหรับการสัญญาว่าสายจะเปิดเผยเพียงที่อยู่เดียวที่เลือกไว้ สองฝ่ายหลังอุโมงค์เดียวกันยังอาจเลือกเส้นทางที่ไม่เคยออกจากโฮสต์เลย ซึ่งเป็นทั้งการปรับปรุงความเป็นส่วนตัวและข้อจำกัดของการเชื่อมต่อในเวลาเดียวกัน
สิ่งที่คุณระบุได้อย่างแม่นยำนั้นแคบกว่าและมีประโยชน์กว่า: คู่ผู้สมัครใดถูกเลือก การขนส่งใดพามัน และเส้นทางนั้นยังอยู่ในอุโมงค์หรือไม่ บันทึกข้อเท็จจริงสามข้อนี้ไว้สำหรับสายที่ใช้งานได้และสายที่ล้มเหลว และความแตกต่างมักระบุองค์ประกอบที่ต้องแก้ไข
เมื่อการเชื่อมต่อทำงานแล้ว ให้แยกประสิทธิภาพออกจากการเข้าถึง การสูญหาย ความหน่วง คิว และ MTU ล้วนอยู่ปลายน้ำของคู่ผู้สมัครที่ถูกต้อง และการถือว่าสายที่สะดุดเป็นการล้มเหลวของการเชื่อมต่อจะส่งคุณกลับไปยังรายการผู้สมัครโดยไม่มีเหตุผล