ArubaOS8 Airplay設定與除錯

Airplay是一種投放功能,類似的還有chomecast以及miracast。

這些功能是如何運作的?

以下把電視等被投放的裝置稱為Server,手機或電腦投放出螢幕的稱為Client。

首先Server需要以UDP向IP位置224.0.0.251的5353埠發佈宣告,這個宣告會帶有自己能支援的服務。可以在Answer項目看到詳細資訊,包含._airplay._tcp.local。

我用Android手機裝AirReceiverLite當做Airplay Server。

接著Client收到Server的mDNS帶有所使用的服務,Client利用mDNS帶有的地址與各類投放所對應使用的Port去找到Server溝通,並將資料傳輸給Server呈現。

收到mDNS是一切的關鍵

mDNS的功能是告訴當地網段中,我設備的名字是什麼,可以直接帶.local,向224.0.0.251去多播,就不用去向DNS Server去問。

Client收到Server的mDNS時,就能知道有哪些裝置可以投放。

因此,我們在除錯時,會有兩大方向,第一個確保Client能收到Server的mDNS,第二個確保投放相關的Port有開放。

mDNS正常收到,Client就能看見投放設備。

投放功能Port正常,Client後續跟Server溝通正常,順利投放。

Client找不到Server是最常見的情形,利用wireshark去看是否有收到Server的mDNS。

這裡附上Apple的FireWall Port建議,可以點進去搜尋Airplay。每種投放功能會使用到的Port不同,因此如果有指定用什麼投放,就記得去查尋。如果有興趣可以用Wireshark去錄來看看。

以下以「Airplay」為例,投放相關的ACL就先設全開,再侷限就要把Server設為目的端。

ProtocolTCP/UDP來源目的影響Airplay
mDNSUDP any 5353224.0.0.251 5353
SSDPUDPany 239.255.255.250 1900無關
投放相關TCP/UDPanyany

Aruba Airhead Community有Airplay相關ACL的討論,如果想要開哪些Port的懶人包,可以直接試試。

Client這端,我以Windows 10電腦,安裝iTune,使用免費電臺投放到我的Android手機上。並且創立一個獨立VLAN,使用NAT Inside,避免被外面的設備掃到。

Client與Server都連上獨立VLAN的SSID,Forwarding mode為Tunnel,Default Role則使用Airplay簡易的ACL。

這樣就是成功做到以Airplay投放

Airplay簡易ACL

ArubaOS8會影響Airplay的設定

  1. Airgroup功能開啟與否,這項功能會讓控制器代Server發送mDNS,讓其他設備能找到mDNS。如果不開,就是最典型的Airplay環境。這此就以「不開Airgroup」為主。
  2. Client Role設定,上方有最基本的Role,除了mDNS之外,
  3. mDNS為multicast,因此Aruba對於multicast的控管都會影響mDNS能不能收到。

1.與2.在看完上述文章之後,都假設已經沒問題了。接下來我們看3.。

在VLAN設定中,需要「不勾選」BCMC optimization。

紅框處勿勾選
勾了就再也收不到mDNS

在Wireless LAN的Profile中,「不勾選」Drop Broadcast and Multicast。

在Wireless LAN的Profile中,「不勾選」Deny inter user traffic。