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設為目的端。
Protocol | TCP/UDP | 來源 | 目的 | 影響Airplay |
mDNS | UDP | any 5353 | 224.0.0.251 5353 | 會 |
SSDP | UDP | any | 239.255.255.250 1900 | 無關 |
投放相關 | TCP/UDP | any | any | 會 |
在Aruba Airhead Community有Airplay相關ACL的討論,如果想要開哪些Port的懶人包,可以直接試試。
Client這端,我以Windows 10電腦,安裝iTune,使用免費電臺投放到我的Android手機上。並且創立一個獨立VLAN,使用NAT Inside,避免被外面的設備掃到。

Airplay簡易ACL

ArubaOS8會影響Airplay的設定
- Airgroup功能開啟與否,這項功能會讓控制器代Server發送mDNS,讓其他設備能找到mDNS。如果不開,就是最典型的Airplay環境。這此就以「不開Airgroup」為主。
- Client Role設定,上方有最基本的Role,除了mDNS之外,
- mDNS為multicast,因此Aruba對於multicast的控管都會影響mDNS能不能收到。
1.與2.在看完上述文章之後,都假設已經沒問題了。接下來我們看3.。
在VLAN設定中,需要「不勾選」BCMC optimization。


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

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