ทำไมการแคสต์ถึงหยุดทำงานหลังเปิด VPN บนเราเตอร์
การค้นหาอุปกรณ์ทำงานบนมัลติแคสต์ภายในลิงก์ ส่วนทีวีดึงสื่อด้วยตัวเอง ค่าเริ่มต้นของนโยบายอาจดักคำขอใน LAN แล้วส่งเข้าอุโมงค์
การแคสต์ทำงานได้ก่อนเปิด VPN บนเราเตอร์ และล้มเหลวทันทีหลังเปิด ขณะที่การท่องเว็บปกติบนโทรศัพท์ยังใช้ได้ ข้อเท็จจริงทั้งสองไม่ขัดกัน เพราะการแคสต์ไม่ใช่การเชื่อมต่อเดียว โทรศัพท์ค้นหาและควบคุมตัวรับผ่านเครือข่ายท้องถิ่น แล้วตัวรับจึงดึงสื่อผ่านการเชื่อมต่อของตัวเอง
สองเส้นทางที่ล้มเหลวต่างกัน
เส้นทางควบคุมเป็นแบบท้องถิ่น โทรศัพท์หาตัวรับโดยถามเครือข่ายท้องถิ่น แล้วเปิดการเชื่อมต่อควบคุมไปยังที่อยู่ที่ได้รู้มา ถ้าตัวรับไม่ปรากฏในรายการเลย ขั้นตอนการค้นหาก็ล้มเหลวก่อนจะมีการขอสื่อใด ๆ
เส้นทางสื่อไม่จำเป็นต้องเป็นแบบท้องถิ่น ตัวรับจำนวนมากดึงสตรีมด้วยตัวเอง ผ่านการเชื่อมต่อและข้อมูลรับรองของตัวเอง ดังนั้นเส้นทางของโทรศัพท์ไม่ได้บอกเส้นทางของตัวรับ โทรศัพท์ที่ดูเหมือนใช้อุโมงค์หนึ่งไม่ได้บอกอะไรเลยว่าทราฟฟิกของทีวีไปที่ไหน
การแยกกันนี้เองที่ทำให้อาการล้มเหลวดูแปลก อุโมงค์เปลี่ยนตารางเส้นทางของโทรศัพท์แต่ไม่ได้เปลี่ยนของทีวี อาการที่เกิดกับฝั่งหนึ่งของคู่จึงต้องตามรอยที่ฝั่งนั้น การตามรอยอุปกรณ์ผิดตัวคือสาเหตุปกติที่การแก้ไขดูเหมือนไม่เกิดผล
ทำไมการค้นหาจึงพังก่อน
การค้นหามักอาศัยมัลติแคสต์ภายในลิงก์ mDNS ส่งไปที่ 224.0.0.251 บนพอร์ต UDP 5353 และ SSDP ส่งไปที่ 239.255.255.250 บนพอร์ต UDP 1900 ทั้งสองถูกจำกัดขอบเขตไว้ที่ลิงก์เดียวโดยการออกแบบ จึงเป็นเหตุให้เราเตอร์ไม่ส่งต่อข้ามเซกเมนต์หากไม่มีตัวทวนสัญญาณหรือพร็อกซีช่วย VPN แบบกำหนดเส้นทางไม่ขยายกลุ่มมัลติแคสต์ และเส้นทางตามนโยบายไม่สามารถทำให้กลุ่มที่ไม่เคยออกจากลิงก์ไปปรากฏบนอีกลิงก์ได้
ดังนั้นความล้มเหลวแรกไม่เกี่ยวกับการเข้ารหัสเลย มัลติแคสต์ของโทรศัพท์ออกจากอินเทอร์เฟซที่ส่งไป ตัวรับอยู่ในเซกเมนต์ที่ไม่เคยเห็นมัน และรายการอุปกรณ์กลับมาเปล่า รายการว่างไม่ใช่หลักฐานว่าทีวีสูญเสียการเข้าถึงอินเทอร์เน็ต
การแยกไคลเอนต์ให้อาการเหมือนกันโดยไม่ต้องมี VPN เลย เครือข่ายสำหรับแขกและการแยกไคลเอนต์ของจุดเชื่อมต่อตั้งใจหยุดอุปกรณ์ไม่ให้คุยกัน และการเปิด VPN บนเราเตอร์ทับบนเซกเมนต์ที่แยกไว้ก็ไม่เปลี่ยนอะไรในเรื่องนี้ ตรวจการตั้งค่าการแยกก่อนตรวจอุโมงค์ นั่นเป็นคำตอบที่ถูกกว่าและพบบ่อยกว่า
การจัดวางเซกเมนต์เป็นอีกครึ่งหนึ่ง เราเตอร์ตัวที่สอง โหนดเมชในโหมดอื่น หรือเซกเมนต์แบบมีสายที่อยู่หลัง NAT อีกชั้น ล้วนวางตัวรับไว้ในที่ที่ทราฟฟิกการค้นหาของโทรศัพท์ไปไม่ถึง
ทำไมค่าเริ่มต้นของนโยบายจึงกลืนคำขอใน LAN ได้
เราเตอร์ที่กำหนดเส้นทางทราฟฟิกทั้งหมดเข้าอุโมงค์จะติดตั้งเส้นทางเริ่มต้นบนอินเทอร์เฟซอุโมงค์ หากไม่ได้ยกเว้นคำนำหน้า LAN ออกจากนโยบายนั้น แพ็กเก็ตที่ส่งถึงอุปกรณ์ห่างออกไปสองเมตรจะตรงกับเส้นทางเริ่มต้น และเราเตอร์จะส่งคำขอควบคุมเข้าอุโมงค์แทนที่จะส่งไปที่สวิตช์
| Stage | What carries it | How a router VPN interferes |
|---|---|---|
| Discovery | Link-local multicast on a single segment | Not extended across segments, and not repaired by a route |
| Control connection | Unicast to the receiver address on the LAN | A policy default can capture the LAN destination and tunnel it |
| Media fetch | The receiver's own connection | Unaffected by the phone's route, but affected by the TV's own policy |
| Account authorization | Tokens held by the application | Can fail for reasons unrelated to any route |
ลำดับกฎเป็นตัวกำหนดผลลัพธ์ การกำหนดเส้นทางตามนโยบายประเมินกฎตามลำดับความสำคัญ ข้อยกเว้นสำหรับคำนำหน้า LAN จึงต้องมาก่อนกฎที่เลือกตารางอุโมงค์ การเพิ่มข้อยกเว้นหลังกฎอุโมงค์ไม่มีผล ซึ่งเป็นเหตุให้การตั้งค่าที่ดูถูกต้องยังส่งทราฟฟิก LAN ออกไปยังทางออกระยะไกลได้
การแก้ไขแคบ: อนุญาตปลายทางท้องถิ่นเฉพาะที่การแคสต์ต้องใช้ และปล่อยการแยกที่เหลือไว้ตามเดิม การถอดการแยกไคลเอนต์เป็นขั้นแรกแก้ไขอาการได้แต่ทิ้งการควบคุมที่เครือข่ายถูกออกแบบมาให้มี
การตรวจดูอย่างเร็วบนโทรศัพท์บอกได้ว่าคุณเจอความล้มเหลวแบบไหน ถ้าเส้นทางไปยังตัวรับชี้ไปที่อุโมงค์ ปัญหาคือนโยบาย ถ้าชี้ไปที่ LAN และการค้นหายังล้มเหลว ปัญหาคือมัลติแคสต์หรือการแยก และการเปลี่ยนเส้นทางจะไม่ช่วย
ip route get 192.168.1.50
ip rule show
avahi-browse -rt _googlecast._tcpทดสอบขั้นตอนที่เปลี่ยน ไม่ใช่ประเทศ
การสังเกตที่บันทึกไว้ชนะการทดลองซ้ำ ๆ บันทึกว่าตัวรับปรากฏในรายการอุปกรณ์หรือไม่ คำขอควบคุมไปถึงหรือไม่ และการเล่นเริ่มขึ้นเมื่อเลือกสตรีมหรือไม่ แต่ละคำตอบตัดขั้นตอนหนึ่งออกจากข้อสงสัย
จากนั้นทดสอบแต่ละขั้นตอนโดยตรงแทนการสลับตำแหน่งทางออก การเปลี่ยนประเทศของ VPN ทดสอบเส้นทางสื่อและไม่แตะขั้นตอนการค้นหาและการควบคุม จึงอาจดูเหมือนช่วยได้โดยบังเอิญโดยไม่สอนอะไรเลย
ฝั่งตัวรับ ตรวจเส้นทางของมันเองและสถานะบัญชีของมันเอง ทีวีที่ดึงสื่อผ่านทางออกต่างจากโทรศัพท์เป็นการออกแบบปกติ และความล้มเหลวตรงนั้นเป็นคำถามเกี่ยวกับนโยบายเครือข่ายของตัวรับ ไม่ใช่เกี่ยวกับอุโมงค์ของโทรศัพท์
จดผลลัพธ์เป็นประโยคเดียวว่าขั้นตอนใดพังและอะไรเปลี่ยนมัน ประโยคนั้นมีค่ามากกว่าการสลับประเทศทั้งสัปดาห์ และยังคงอยู่ผ่านการอัปเดตเฟิร์มแวร์ครั้งถัดไป
การแคสต์เป็นกรณีทดสอบที่ดีสำหรับกฎทั่วไปเกี่ยวกับอุโมงค์ เมื่อเพิ่มอุโมงค์เข้าในเครือข่าย คำถามแรกคือ ปลายทางใดที่ไม่ควรเข้าไปในอุโมงค์ตั้งแต่แรกคำถามที่สองคือ นโยบายยอมรับปลายทางใดในนั้นไปโดยเงียบ ๆ