■ 河南 郭建偉
編者按:對(duì)于DNS域名服務(wù)來(lái)說(shuō),大家都比較熟悉,DNS其實(shí)基于單播的UDP協(xié)議,使用的端口號(hào)是53,其主要功能是對(duì)域名進(jìn)行解析,幫助用戶獲取實(shí)際的IP。DNS主要針對(duì)靜態(tài)IP發(fā)揮作用,很適用于傳統(tǒng)網(wǎng)絡(luò)。但是在有些情況下,網(wǎng)絡(luò)設(shè)備的IP是由DHCP服務(wù)器動(dòng)態(tài)分配的,當(dāng)移動(dòng)設(shè)備接入物聯(lián)網(wǎng)絡(luò)后,其中的程序就會(huì)要發(fā)送廣播或者組播的方式,來(lái)探測(cè)網(wǎng)絡(luò)中相關(guān)設(shè)備的域名和IP信息,這就需要使用到mDNS技術(shù)。
mDNS(Multicast DNS,即多播DNS)可以在沒(méi)有傳統(tǒng)DNS服務(wù)器的情況下,使用組播的方法,讓網(wǎng)絡(luò)中的設(shè)備之間可以相互發(fā)現(xiàn)和發(fā)送數(shù)據(jù),其使用的端口為UDP 5353。mDNS其實(shí)本基于單播的DNS服務(wù)的作用幾乎相同,其遵從DNS協(xié)議,使用現(xiàn)有的DNS信息結(jié)構(gòu)和資源記錄類型。mDNS可以在IP和主機(jī)名之間雙向解析,更重要的是,利用mDNS技術(shù),可以發(fā)現(xiàn)網(wǎng)絡(luò)中目標(biāo)設(shè)備提供了哪些服務(wù)
mDNS使用的是D類的地址進(jìn)行組播,具體的地址范圍從222.0.0.0到239.255.255.255,通常使用的組播地址為224.0.0.254。
mDNS是不能跨越網(wǎng)段的,只能工作在局域網(wǎng)內(nèi)部,設(shè)備名稱必須以“.local”結(jié)尾,當(dāng)開(kāi)啟了mDNS服務(wù)后,當(dāng)設(shè)備接入網(wǎng)絡(luò)后,會(huì)自動(dòng)向局域網(wǎng)中的所有主機(jī)組播一個(gè)消息,告知自己的名稱和IP地址。其他使用了mDNS的主機(jī)也會(huì)進(jìn)行應(yīng)答,告知自己的域名和IP。
當(dāng)需要使用目標(biāo)主機(jī)提供的服務(wù)時(shí),可以通過(guò)mDNS查詢對(duì)應(yīng)主機(jī)域名的IP,目標(biāo)設(shè)備收到報(bào)文后會(huì)以組播方式進(jìn)行應(yīng)答,告知自身提供的服務(wù)類型。在彼此應(yīng)答過(guò)程中,其他的主機(jī)也會(huì)據(jù)此進(jìn)行記錄,更新自身的DNS緩存信息。
對(duì)于某些企業(yè)來(lái)說(shuō),會(huì)基于mDNS進(jìn)行來(lái)發(fā),例如蘋(píng)果公司就在mDNS協(xié)議的基礎(chǔ)上開(kāi)發(fā)了名為Bonjour的私有協(xié)議,在mDNS協(xié)議的基礎(chǔ)上進(jìn)行了相應(yīng)的擴(kuò)展,可以在局域網(wǎng)中發(fā)現(xiàn)對(duì)應(yīng)的蘋(píng)果設(shè)備。
使用Bonjour協(xié)議,設(shè)備之間可以自動(dòng)組播各自的服務(wù)信息,并監(jiān)聽(tīng)其他蘋(píng)果設(shè)備的服務(wù)器信息,可以更加智能化的在局域網(wǎng)中發(fā)現(xiàn)所需的系統(tǒng)和服務(wù)。
當(dāng)一個(gè)蘋(píng)果設(shè)備接入網(wǎng)絡(luò)后,會(huì)向全網(wǎng)通告自己的設(shè)備信息(例如域名,IP地址,在特定端口開(kāi)放的服務(wù),認(rèn)證方式等),當(dāng)某設(shè)備需要使用某種服務(wù)時(shí),會(huì)向全網(wǎng)發(fā)起查詢,來(lái)探測(cè)是否存在自己所需的服務(wù),并要求相關(guān)設(shè)備反饋其主機(jī)名和IP,以及服務(wù)類型和端口號(hào)等信息。
Bonjour支持的常用的應(yīng)用包括AirPlay(提供視頻服務(wù)),iPhoto(圖片服務(wù)),Safari(瀏覽服務(wù)),iTunes(音頻服務(wù))等。
例如,對(duì)于Bonjour查詢來(lái)說(shuō),在數(shù)據(jù)包會(huì)使用諸如“_raop._tcp.local”,“airp lay.tcp.local”之類的特定字符串,在通告數(shù)據(jù)包中顯示諸如“_roap”的協(xié)議類型和與之對(duì)應(yīng)的端口號(hào),以及主機(jī)名和IP等信息。
了解目標(biāo)設(shè)備的開(kāi)放的端口后,發(fā)起者就會(huì)和該端口建立TCP連接,來(lái)進(jìn)行Apple私有的非標(biāo)準(zhǔn)的RTSP協(xié)商,這有些類似于HTTP協(xié)商,并在協(xié)商的端口上進(jìn)行進(jìn)行數(shù)據(jù)的傳輸。
如果網(wǎng)絡(luò)中存在諸如思科控制設(shè)備(例如無(wú)線控制器等)的話,那么情況就會(huì)發(fā)生變化??刂破鲿?huì)監(jiān)聽(tīng)網(wǎng)絡(luò)中所有mDNS的通告信息,并將其全部收集下來(lái)。這樣,當(dāng)iPhone等設(shè)備發(fā)起查詢時(shí),實(shí)際上是由控制器進(jìn)行回應(yīng)的。
在控制器的協(xié)調(diào)下,可以有效解決Bonjour協(xié)議無(wú)法跨網(wǎng)段的問(wèn)題。正常情況下,Bonjour協(xié)議只能運(yùn)作在一個(gè)VLAN的直連網(wǎng)絡(luò)中,因?yàn)榻M播是無(wú)法跨網(wǎng)的。
在控制器的幫助下,會(huì)將不同VLAN中的信息(例如目標(biāo)設(shè)備的IP等)推送給客戶。有了這些信息,客戶就可以順利訪問(wèn)其他VLAN中的設(shè)備提供的的服務(wù)了。更重要的是,控制器還可以根據(jù)實(shí)際情況,對(duì)客戶訪問(wèn)進(jìn)行有效控制。當(dāng)多個(gè)設(shè)備分別提供不同的服務(wù)時(shí),控制器可以使用授權(quán)的方法決定哪些服務(wù)可以提供給客戶使用,哪些服務(wù)是禁止提供給客戶的。這樣,大大提高了操作的安全性和靈活性。
這里就以實(shí)際的例子,來(lái)說(shuō)明如何對(duì)客戶進(jìn)行授權(quán)管理,使其只能發(fā)現(xiàn)和使用指定設(shè)備上的特定服務(wù)。例如在網(wǎng)絡(luò)中存在AP,WLC無(wú)線控制器,ISE等思科設(shè)備,對(duì)某個(gè)VLAN(例如VLAN 100)進(jìn)行管控,在該VLAN中存在名為“SSID1”和“SSID2”的兩個(gè)熱點(diǎn),分別連接智能電視和Apple平板設(shè)備。登錄到WLC控制器,在其管理界面工具欄上點(diǎn)擊“SECURITY”項(xiàng),在左側(cè)點(diǎn)擊“AAA”→“RADIUS”→“Authen tication”項(xiàng),在右側(cè)點(diǎn)擊“N ew…”按鈕,在打開(kāi)窗口中的“Server IP Address(Ipv4/Ipv6)”欄中輸入ISE設(shè)備的管理口IP,在“Shared Secret”欄輸入其管理密碼。
在“Support for CoA”列表中選擇“Enable”項(xiàng),激活CoA授權(quán)改變功能。這是為了適應(yīng)ISE自動(dòng)識(shí)別機(jī)制,當(dāng)新設(shè)備接入后,可能剛開(kāi)始并無(wú)有效識(shí)別,而將其分配到隔離網(wǎng)絡(luò)中。因?yàn)楹妥詣?dòng)識(shí)別關(guān)聯(lián)的掃描操作可能較慢,這樣當(dāng)稍后將其識(shí)別后,ISE判斷其滿足入網(wǎng)條件后,會(huì)要求其重新認(rèn)證,并發(fā)送COA信息修改授權(quán),允許其正常接入網(wǎng)絡(luò)。點(diǎn)擊“Apply”按鈕保存配置。在左側(cè)點(diǎn)擊“RADIUS”→“Accounting”項(xiàng),在右側(cè)輸入ISE的管理端口IP和管理密碼,激活審計(jì)功能。
在工具欄上點(diǎn)擊“WLANs”項(xiàng),在列表中選擇“Create New”項(xiàng),點(diǎn)擊“Go”按鈕,在“Type”列表中選擇“WLAN”項(xiàng),輸入其名稱和SSID號(hào)(例如“SSID1”),點(diǎn)擊“Apply”按鈕,在其屬性窗口中的“General”面板中的“Status”欄中 選擇“Enabled”項(xiàng)將其激活,在“Security”面板中的“Layer 2”標(biāo)簽中的“l(fā)ayer 2 Security”列表中選擇“WPA+WPA2”箱,激活該認(rèn)證功能。在“Authentication Key Management”欄中選擇“PSK”項(xiàng),在“PSK Format”欄中輸入預(yù)共享密鑰。
點(diǎn)擊“Apply”按鈕,創(chuàng)建該WLAN項(xiàng)目。同理,創(chuàng)建另一個(gè)WLAN項(xiàng)目,對(duì)應(yīng)的SSID名稱為“SSID2”,在其屬性窗口中的“Security”面板中的“AAA Server”標(biāo)簽中的“Server1”欄中輸入ISE設(shè)備的管理口IP。在“Advanced”面板中 的“Allow AAA Override”欄中 選 擇“Enabled”項(xiàng),激活3A認(rèn)證服務(wù)。在“DHCP Addr.Assignment”欄中選擇“Required”項(xiàng),激活DHCP地址自動(dòng)分配功能。在“NAC State”列表中選擇“ISE NAC”項(xiàng),點(diǎn)擊“Apply”按鈕,保存保存配置信息。
登錄到ISE的管理界面,點(diǎn)擊工具欄中的“Administration”→“Netwo rk Devices”項(xiàng)。
在左側(cè)選擇“Network Devices”項(xiàng)。
在右側(cè)點(diǎn)擊“Generate PAC”按鈕,在打開(kāi)界面中點(diǎn)擊“Add”按鈕,輸入設(shè)備的名稱(例如“Dev1”)。
這里針對(duì)的是無(wú)線控制器,在“IP Address”輸入其管理端口的IP地址。
在“RADIUS Authenticat ion Settings”面板中的“*Shared Secret”欄中輸入WLC設(shè)備的管理員密碼。點(diǎn)擊“Submit”按鈕提交操作。
點(diǎn)擊工具欄上的“Administr
ation”→“Indentities”項(xiàng),點(diǎn)擊“Add”按鈕,分別創(chuàng)建名 為“guanli”和“User1”的用戶。
圖1 激活組播功能
在智能電視上搜索到名為“SSID”的熱點(diǎn),輸入對(duì)應(yīng)的密鑰加入進(jìn)來(lái)。在Apple平板設(shè)備上搜索到名為“SSID2”的熱點(diǎn),在認(rèn)證窗口中輸入預(yù)設(shè)的賬戶(例如“guanli”)和密碼鍵入進(jìn)來(lái)。在默認(rèn)情況下,平板是無(wú)法發(fā)現(xiàn)智能電視以及其中的諸如AirPlay等服務(wù)的。在WLC控制器管理界面工具欄上點(diǎn)擊“CONTROLLER”項(xiàng),在左側(cè)選擇“Multicast”項(xiàng),在右側(cè)選擇“Enable Global Multicast Mode”,“Enable MLD Snooping”和“Enable IGMP Snooping”項(xiàng),激活組播功能(如圖1)。在左側(cè)選擇“General”項(xiàng),在右側(cè)的“Broadcast Forwarding”列表中選擇“Enabled”項(xiàng),啟用廣播發(fā)送功能。
在“AP Multicast Mode”列表中選擇“Multicast”項(xiàng),選擇AP組播模式,并輸入合適的組播地址(例如“239.1.1.1”)。 在“DNS Server IP”欄中輸入合適的DNS服務(wù)器地址,點(diǎn)擊“Apply”按鈕保存配置信息。在左側(cè)左側(cè)選擇“mDNS”→“Gereral”項(xiàng),在右側(cè)選擇“mDNS Global Snooping”項(xiàng),激活嗅探功能,可以讓設(shè)備探測(cè)到網(wǎng)絡(luò)中存在哪些服務(wù)。并且在發(fā)送請(qǐng)求時(shí),控制器會(huì)對(duì)其進(jìn)行回應(yīng)。在“Server Name”欄中可以選擇所需的服務(wù),包括AirTunes,Airplay,Googlecast,HP Photosmart Print,HomeSharing,Printer-IPP,Printer-LPD等。點(diǎn)擊左側(cè)的“mDNS”-“Domain Names”項(xiàng),可以發(fā)現(xiàn)已經(jīng)顯示電視設(shè)備。之后蘋(píng)果平板上忽略網(wǎng)絡(luò)并重新連接,就可以發(fā)現(xiàn)該設(shè)備了。
在左側(cè)點(diǎn)擊“mDNS”→“Profiles”項(xiàng),在右側(cè)顯示名為“defaultmdns-profile”的默認(rèn)配置項(xiàng)目。為了便于使用,這里創(chuàng)建自定義的配置文件。點(diǎn)擊“New…”按鈕,輸入自定義項(xiàng)目名稱(例如“Custprofile1”)項(xiàng),在其屬性窗口(如圖2)中的“Service Name”列表中只選擇所需的服務(wù)(例如“Airplay”等),點(diǎn)擊“Add”按鈕將其添加進(jìn)來(lái)。按照同樣的方法,可以添加多個(gè)服務(wù)。同理,可以創(chuàng)建其他的配置項(xiàng)目(例如“Custprofile2”),為其指定所需的服務(wù)。
圖2 mDNS授權(quán)管理窗口
為了實(shí)現(xiàn)授權(quán)管理,需要在ISE管理界面工具欄上點(diǎn)擊“Policy”→“Results”項(xiàng)。
在左側(cè)點(diǎn)擊“Authorization”→“Au thorization Profiles”項(xiàng),在右側(cè)點(diǎn)擊“Add”按鈕。
在打開(kāi)界面中輸入授權(quán)項(xiàng)目的名稱(例如“Auth1”),在“Advanced Attribtes Settings”面板中的第一行中的第二列中輸入“mDNS-pr ofile-name=Custprofile”,在第二行的第二列中輸入“role= Custprofile1”,授權(quán)了mDNS的配置文件為上述“Custprofile1”項(xiàng)目。
對(duì)應(yīng)的,點(diǎn)擊ISE管理界面中的“Policy”→“Authorizatio n”項(xiàng),創(chuàng)建對(duì)應(yīng)的認(rèn)證策略(例如名稱為“Auguanli”),將上述“Auth1”授權(quán)項(xiàng)目和“guanli”賬戶綁定起來(lái)。同理,可以創(chuàng)建其他的授權(quán)項(xiàng)目(例如“Auth2”),使其指向“Custprofile2”,同 時(shí)創(chuàng)建名為“Auyonghu”的認(rèn)證項(xiàng)目,將“Auth2”授權(quán)項(xiàng)目和“user1”賬戶綁定起來(lái)。在WLC的管理界面工具欄上點(diǎn)擊“MONITOR”項(xiàng),在左側(cè)點(diǎn)擊“Clients”項(xiàng),在右側(cè)點(diǎn)擊上述平板設(shè)備,在其屬性窗口中的“General”面板中的“mDNS Profile Name”欄中顯示名為“Custprofile1”的授權(quán)項(xiàng)目。
經(jīng)過(guò)上述操作,是能夠發(fā)現(xiàn)網(wǎng)絡(luò)的相關(guān)設(shè)備以及其提供的服務(wù)的。在有些情況下,出于安全性的考慮,希望對(duì)其進(jìn)行更加深入的控制,例如只能讓客戶使用指定的服務(wù)。就需要使用控制策略加以實(shí)現(xiàn)。在左側(cè)點(diǎn)擊“mDNS”→“Policies”項(xiàng),在右側(cè)選擇“mdns Plocy”項(xiàng),激活控制策略功能。雖然WLC設(shè)備提供了默認(rèn)的Policy策略,但是其無(wú)法滿足我們的實(shí)際需求。
在左側(cè)點(diǎn)擊“mDNS”→“mDNS Policies”項(xiàng),在右側(cè)點(diǎn)擊“Add Group”按鈕,輸入新的Policy策略的名稱(例 如“Policy1”),在其屬性窗口中的“MAC ADDRES”欄中輸入目標(biāo)設(shè)備(例如智能電視)的MAC地址,輸入其設(shè)備名稱,點(diǎn)擊“Add”按鈕將其添加到列表中。在“LOCATION TYPE”列表中可以選擇“AP Group”,“AP Name”,“AP Location”等項(xiàng),來(lái)設(shè)置該設(shè)備所屬AP組/AP名稱以及AP的位置等信息。
在“Role name”欄 中輸入合適的授權(quán)項(xiàng)目(例如“Custprofile1”),這需要和在ISE中的授權(quán)配置信息一致。點(diǎn)擊“Apply”按鈕,保存策略信息。這樣,在規(guī)定的授權(quán)條件下,當(dāng)存在多臺(tái)網(wǎng)絡(luò)時(shí),設(shè)備客戶就只能發(fā)現(xiàn)和訪問(wèn)指定的設(shè)備。
注意:在協(xié)議級(jí)別可以使用mDNS Profile進(jìn)行控制,在設(shè)備級(jí)別可以使用mDNS Policy進(jìn)行控制。