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

สองเส้นทางที่ล้มเหลวต่างกัน

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

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

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

ทำไมการค้นหาจึงพังก่อน

การค้นหามักอาศัยมัลติแคสต์ภายในลิงก์ mDNS ส่งไปที่ 224.0.0.251 บนพอร์ต UDP 5353 และ SSDP ส่งไปที่ 239.255.255.250 บนพอร์ต UDP 1900 ทั้งสองถูกจำกัดขอบเขตไว้ที่ลิงก์เดียวโดยการออกแบบ จึงเป็นเหตุให้เราเตอร์ไม่ส่งต่อข้ามเซกเมนต์หากไม่มีตัวทวนสัญญาณหรือพร็อกซีช่วย VPN แบบกำหนดเส้นทางไม่ขยายกลุ่มมัลติแคสต์ และเส้นทางตามนโยบายไม่สามารถทำให้กลุ่มที่ไม่เคยออกจากลิงก์ไปปรากฏบนอีกลิงก์ได้

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

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

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

ทำไมค่าเริ่มต้นของนโยบายจึงกลืนคำขอใน LAN ได้

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

StageWhat carries itHow a router VPN interferes
DiscoveryLink-local multicast on a single segmentNot extended across segments, and not repaired by a route
Control connectionUnicast to the receiver address on the LANA policy default can capture the LAN destination and tunnel it
Media fetchThe receiver's own connectionUnaffected by the phone's route, but affected by the TV's own policy
Account authorizationTokens held by the applicationCan 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 ทดสอบเส้นทางสื่อและไม่แตะขั้นตอนการค้นหาและการควบคุม จึงอาจดูเหมือนช่วยได้โดยบังเอิญโดยไม่สอนอะไรเลย

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

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

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

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