金夢(mèng)然
(國家信息中心 北京市 100045)
IPv6 可以同時(shí)定義無狀態(tài)和有狀態(tài)的地址自動(dòng)配置機(jī)制,進(jìn)而有效實(shí)現(xiàn)實(shí)際的分配和管理。其中,有狀態(tài)地址自動(dòng)配置是使用DHVPv6 的協(xié)議來有效實(shí)現(xiàn)相關(guān)節(jié)點(diǎn)動(dòng)態(tài)的IPv6 的地址和相關(guān)參數(shù)的分配;而無狀態(tài)的地址自動(dòng)配置是利用鄰居發(fā)現(xiàn)協(xié)議來有效實(shí)現(xiàn)的,也就是其中的相關(guān)節(jié)點(diǎn)利用接收并存儲(chǔ)于本地鏈路上的路由器所發(fā)出的路由器通告內(nèi)容,充分結(jié)合本地接口的相關(guān)表示來生成一個(gè)全局式的單播公用地址。無狀態(tài)地址自動(dòng)配置是不需要利用節(jié)點(diǎn)手工配置相關(guān)地址和參數(shù)的,也可以讓節(jié)點(diǎn)獲取相關(guān)地址,進(jìn)而實(shí)現(xiàn)真正意義上的即插即用。當(dāng)某一個(gè)站點(diǎn)的網(wǎng)絡(luò)前綴發(fā)生變化的時(shí)候,只需要在實(shí)際發(fā)送RA 相關(guān)消息的路由器上進(jìn)行地址前綴信息的重新編制,就可以重新定制通告的前綴,節(jié)點(diǎn)就可以方便進(jìn)行重新編制來完成切換,且并不會(huì)對(duì)網(wǎng)絡(luò)的連接出現(xiàn)影響。
IPv6 節(jié)點(diǎn)在無狀態(tài)自動(dòng)配置上重新定義了IPv6 節(jié)點(diǎn)在實(shí)際使用相關(guān)節(jié)點(diǎn)的可用信息和相關(guān)路由器所分發(fā)出的信息配置每個(gè)實(shí)際應(yīng)用范圍地址的必要過程,其在實(shí)際配置中,除了要使用路由器以外,是不需要任何的人為干預(yù)的,也并不需要任何一種類型的服務(wù)器。其在實(shí)際配置過程中會(huì)涉及三個(gè)部分的機(jī)制,即為路由器發(fā)現(xiàn)、重復(fù)性的地址檢測和前綴的地址新編。路由器的發(fā)現(xiàn)可以讓相關(guān)節(jié)點(diǎn)在實(shí)際獲取的鏈路上的相關(guān)前綴和路由器所發(fā)出的信息;重復(fù)地址檢測則保證了其實(shí)際配置的每一個(gè)IPv6 地址在鏈路上的唯一性;前綴重新編址則會(huì)在上述兩個(gè)機(jī)制的基礎(chǔ)上,進(jìn)行通告前綴的重新編制,進(jìn)而完成網(wǎng)絡(luò)前綴的自由切換。如圖1所示。
實(shí)際的配置過程主要是以鏈路本地地址的自動(dòng)生成來時(shí)的,并在過程中啟用了IPv6 協(xié)議棧的節(jié)點(diǎn),根據(jù)鏈路本地前綴FE80::/64 和EUI-64 格式的接口標(biāo)識(shí)符號(hào),從而生成一個(gè)臨時(shí)性的鏈路本地的地址;其次,使用重復(fù)地址檢測來有效檢驗(yàn)此臨時(shí)鏈路在本地地址中的唯一性,在實(shí)際檢測過程中發(fā)出的臨時(shí)節(jié)點(diǎn)請(qǐng)求內(nèi)容的實(shí)際目標(biāo)地址字段的數(shù)值為臨時(shí)性的鏈路本地的地址;如果在實(shí)際接收中收到鄰節(jié)點(diǎn)的相關(guān)響應(yīng)請(qǐng)求內(nèi)容的時(shí)候。也說明了本地的鏈路上也有另一個(gè)節(jié)點(diǎn)在同時(shí)使用該臨時(shí)性的鏈路本地地址,此時(shí)地址將會(huì)自動(dòng)的停止為其停止進(jìn)行配置,如果出現(xiàn)此種情況,就需要使用人為的方式為其進(jìn)行手動(dòng)的配置;如果沒有收到鄰節(jié)點(diǎn)的響應(yīng)請(qǐng)求和公告內(nèi)容,此時(shí)的臨時(shí)性的鏈路的本地地址就看做其是唯一且有效的,接口的地址為鏈路本地的地址。
圖1:IPv6 節(jié)點(diǎn)無狀態(tài)自動(dòng)配置方式
圖2:地址狀態(tài)與生存周期之間的關(guān)系
節(jié)點(diǎn)接著會(huì)以鏈路自身的地址為基本地址向全部的路由器目的地址發(fā)送路由器的請(qǐng)求內(nèi)容(RS)。在路由器的偽周期性的地址發(fā)送路由器公告(RA)內(nèi)容的同時(shí),節(jié)點(diǎn)也會(huì)發(fā)送路由器的請(qǐng)求內(nèi)容,并請(qǐng)求路由器能夠立即發(fā)送路由器公告內(nèi)容進(jìn)行積極的響應(yīng),而不是等待一個(gè)偽周期所發(fā)出的路由器公告內(nèi)容。在默認(rèn)的情況之下,節(jié)點(diǎn)最多可以發(fā)送3 個(gè)路由器的請(qǐng)求內(nèi)容。如果沒有接收到有路由器所發(fā)出的公告內(nèi)容,節(jié)點(diǎn)就會(huì)使用原有的狀態(tài)地址自動(dòng)的和其他的參數(shù)進(jìn)行配置;如果接收到了相關(guān)路由器所發(fā)出的請(qǐng)求內(nèi)容,節(jié)點(diǎn)會(huì)根據(jù)實(shí)際內(nèi)容類設(shè)置限制、可以到達(dá)的實(shí)際時(shí)間、重發(fā)定時(shí)器和MTU 等參數(shù)的數(shù)值。對(duì)于每一個(gè)接收到RA 中的前綴信息選項(xiàng),如果在相關(guān)鏈路上的實(shí)際標(biāo)志是1,節(jié)點(diǎn)就會(huì)將內(nèi)容中的前綴添加到實(shí)際的前綴列表中去;如果自治配置的標(biāo)志是1,則會(huì)使用前綴和符合其接口的標(biāo)識(shí)符生成的一個(gè)臨時(shí)性的地址。接下來,所使用的重復(fù)地址檢測在唯一性方面的具體情況。如果臨時(shí)性的地址是正在使用中的狀態(tài),就不會(huì)使用這一臨時(shí)性的地址來初始化接口;如果臨時(shí)性的地址并沒有被使用,則會(huì)根據(jù)實(shí)際情況來選擇這一臨時(shí)性的地址來初始化接口,實(shí)際也包括了根據(jù)請(qǐng)求內(nèi)容中的前綴信息選項(xiàng)的有效性和優(yōu)先的生存期字段的數(shù)值來設(shè)置相關(guān)地址的有效生存時(shí)間和優(yōu)先的生存時(shí)間。如果路由器的公告內(nèi)容中的實(shí)際管理地址配置標(biāo)志位是1 的話,就會(huì)使用有狀態(tài)的地址自動(dòng)配置相關(guān)協(xié)議,進(jìn)而獲取其他的地址;如果路由器的公共內(nèi)容中有其他有狀態(tài)的配置標(biāo)志位且為1 的話,就會(huì)使用有狀態(tài)的地址自動(dòng)配置協(xié)議來獲取除了地址以外的其他參數(shù)和配置。
節(jié)點(diǎn)的無狀態(tài)地址自動(dòng)配置完成以后,在現(xiàn)階段的鏈路接口上就會(huì)存在一個(gè)鏈路本地范圍的鏈路本地地址和1 個(gè)全庫范圍之內(nèi)的公用IPv6 地址。自動(dòng)配置的IPv6 全局地址有一個(gè)實(shí)際的生存周期,在這個(gè)生存周期中,這一地址會(huì)根據(jù)優(yōu)先時(shí)間和有效時(shí)間中間的關(guān)系,會(huì)劃分為臨時(shí)性的、優(yōu)先性的、反對(duì)性的無效性4 種狀態(tài),如圖2所示。
其中臨時(shí)性狀態(tài)表示此時(shí)主機(jī)所獲得的地址正在被重復(fù)性的檢測;優(yōu)先狀態(tài)則表示通過重復(fù)性檢測出唯一性,該節(jié)點(diǎn)可以有效使用該地址所發(fā)送的和所接收到的內(nèi)容;在反對(duì)的狀態(tài)之下,相關(guān)協(xié)議則不建議使用這一地址去進(jìn)行通信,但原有的通信還是可以繼續(xù)使用這一反對(duì)狀態(tài)的地址的;無效狀態(tài)的節(jié)點(diǎn)是不可以再進(jìn)行相關(guān)內(nèi)容的接收和發(fā)送的。自動(dòng)進(jìn)行配置的全局公用的IPv6 地址的缺省有效期為30 天左右,實(shí)際優(yōu)先的生存時(shí)間為7 天左右。
無狀態(tài)地址的自動(dòng)配置所產(chǎn)生的全局IPv6 地址的64 為接口標(biāo)識(shí)符是由EUI-64 這一格式產(chǎn)生的,而EUI-64 接口標(biāo)識(shí)符則是由節(jié)點(diǎn)MAC 地址進(jìn)行一對(duì)一的映射而得來的,不論相關(guān)路由器的所發(fā)出的內(nèi)容前綴是什么樣的,64 為接口的實(shí)際標(biāo)識(shí)符都是一樣的。也正是因?yàn)檫@樣,類似的地址一定會(huì)是全局性的且唯一性的,這樣的現(xiàn)象也被叫做全局應(yīng)用范圍的公用地址。對(duì)于其地址管理方面來講,利用IPv6 的相關(guān)數(shù)據(jù)包的原地址可以推斷出這部分的節(jié)點(diǎn)MAC 地址,前提是只要該節(jié)點(diǎn)MAC 地址是經(jīng)過注冊(cè)的,就可以從該IPv6數(shù)據(jù)包的原地址對(duì)應(yīng)到MAC 的實(shí)際注冊(cè)用戶。處于對(duì)IPv6 原地址安全性能的思考,IEEE 也制定了一個(gè)IPv6 無狀態(tài)地址自動(dòng)配置的私密性擴(kuò)展的特性,啟用這一屬性的IPv6 節(jié)點(diǎn)會(huì)通過無狀態(tài)地址自動(dòng)的配置從而獲得地址的接口標(biāo)識(shí)符。由多個(gè)通告的前綴將會(huì)產(chǎn)生多個(gè)有著同樣隨機(jī)接口標(biāo)識(shí)符的地址,這樣的地址也被叫做全局臨時(shí)地址。由節(jié)點(diǎn)所發(fā)起的向外部通信也會(huì)首選全局臨時(shí)性的地址作為原地址建立也一個(gè)有效的連接。臨時(shí)地址也同樣有著4 個(gè)地址的生存狀態(tài)和2 個(gè)生存周期,不同的是,其優(yōu)先生存期和實(shí)際的有效生存期全部小于全局公用的IPv6 地址。全局的臨時(shí)性的IPv6 地址的缺省有效生存期為7 天左右,優(yōu)先生存期限為1 天。
利用重復(fù)檢測之后的全局臨時(shí)性的地址會(huì)首先進(jìn)入到有效的狀態(tài)中,實(shí)際可以使用的地址會(huì)在發(fā)送和接收IPv6 的數(shù)據(jù)包。在經(jīng)過了1 天的優(yōu)先生存期之后,節(jié)點(diǎn)將會(huì)從重新產(chǎn)生一個(gè)全新的隨機(jī)數(shù)值作為已有的前綴的全新的接口標(biāo)識(shí)符,而原有的全局臨時(shí)的地址則會(huì)就進(jìn)入一個(gè)反對(duì)的狀態(tài)中,全新的全局性的臨時(shí)地址在經(jīng)過了一天的優(yōu)先生存期之后,節(jié)點(diǎn)將會(huì)再產(chǎn)生一個(gè)全新的隨機(jī)的數(shù)值,并將其作為也一個(gè)已有的前綴新接口標(biāo)識(shí)符,新的全局性的臨時(shí)地址則又會(huì)進(jìn)入也一個(gè)反對(duì)的狀態(tài)中共。由于此時(shí)處于反對(duì)狀態(tài)的全局性的臨時(shí)性的地址在達(dá)到有效的生存期之后才會(huì)從節(jié)點(diǎn)之中刪除。所以,隨著時(shí)間的變化,會(huì)出現(xiàn)節(jié)點(diǎn)因?yàn)槭褂昧硕鄠€(gè)有著不同隨機(jī)接口標(biāo)識(shí)符的IPv6 地址來接收和發(fā)送相關(guān)內(nèi)容。
啟用了IPv6 無狀態(tài)地址自動(dòng)配置的私密性和擴(kuò)展性的節(jié)點(diǎn)地址也會(huì)隨著時(shí)間的變化而不斷的生產(chǎn)變化,這會(huì)給實(shí)際的地址管理帶來地址身份確認(rèn)上的諸多困難,也可以理解為低密性和擴(kuò)展性也有效提升了節(jié)點(diǎn)地址的實(shí)際安全性能,卻增加了在地址管理方面的資金投入。
利用相關(guān)協(xié)議有效實(shí)現(xiàn)IPv6 節(jié)點(diǎn)無狀態(tài)地址的自動(dòng)配置,不僅實(shí)現(xiàn)了IPv6 節(jié)點(diǎn)的即插即用性能,也有著IPv6 在聯(lián)網(wǎng)上的方便簡潔性能。相關(guān)管理人員只需要對(duì)IPv6 的前綴與路由器進(jìn)行必要的規(guī)劃,并使用用戶方的路由器上的配置前綴的內(nèi)容,使用者皆可以實(shí)現(xiàn)接入本地鏈路并獲取地址,進(jìn)而訪問相關(guān)網(wǎng)絡(luò)。
但是這種方便操作和簡便性卻會(huì)帶來不同程度的安全隱患。針對(duì)IPv6 節(jié)點(diǎn)無狀態(tài)地址自動(dòng)配置的三種配置機(jī)制,我們發(fā)現(xiàn)其中可能會(huì)存在相關(guān)的威脅,首先,路由器的發(fā)現(xiàn)機(jī)制,其主要是通過路由器的相關(guān)接受內(nèi)容來發(fā)現(xiàn)的,一些惡意的主機(jī)是可以偽裝成合法的路由器進(jìn)行相關(guān)內(nèi)容的發(fā)送和接受,在相關(guān)內(nèi)容中會(huì)修改默認(rèn)的路由器為級(jí)別比較高的優(yōu)先級(jí),使用IPv6 節(jié)點(diǎn)在實(shí)際的默認(rèn)路由器的列表中選擇惡意的主機(jī)為缺省的網(wǎng)關(guān),進(jìn)而達(dá)到實(shí)際的攻擊目的。其次,對(duì)于重復(fù)的地址進(jìn)行檢測,IPv6 節(jié)點(diǎn)在無狀態(tài)的自動(dòng)配置鏈路本地或者全局單播地址的時(shí)候,是需要設(shè)置地址為臨時(shí)的狀態(tài)的。此時(shí),惡意的主機(jī)將會(huì)針對(duì)相關(guān)內(nèi)容進(jìn)行假冒的限用,讓IPv6 節(jié)點(diǎn)的實(shí)際重復(fù)檢測失敗,進(jìn)而讓IPv6 節(jié)點(diǎn)不能正常運(yùn)行。最后,針對(duì)前綴的地址重新編制,惡意主機(jī)也會(huì)發(fā)送一個(gè)假冒的內(nèi)容,并虛構(gòu)一個(gè)假的前綴信息,其實(shí)際的優(yōu)先生存時(shí)間和有效的生存時(shí)間也會(huì)大于原來的合法的前綴。IPv6 節(jié)點(diǎn)在收到這樣的內(nèi)容之后,會(huì)出現(xiàn)將原來的前綴停止使用的現(xiàn)象,并重新得到一個(gè)虛假的前綴,一直到原有的前綴的有效生存時(shí)間遞減到0 的時(shí)候,合法的前綴就會(huì)被徹底作廢,進(jìn)而造成所使用的網(wǎng)絡(luò)中斷。
綜上所述,進(jìn)行IPv6 網(wǎng)絡(luò)的規(guī)劃和用戶的地址分配,IPv6 節(jié)點(diǎn)的無狀態(tài)地址自動(dòng)配置系統(tǒng)有著非常強(qiáng)的優(yōu)勢(shì),其有效實(shí)現(xiàn)了IPv6 用戶在實(shí)際訪問互聯(lián)網(wǎng)時(shí)候的即插即用。但與此同時(shí),其也給IPv6 網(wǎng)絡(luò)帶來了附加的安全隱患,進(jìn)而提升了相關(guān)管理方面的成本投入。所以,必須要從實(shí)際的管理方向來看,深入分析實(shí)際無狀態(tài)地址進(jìn)行自動(dòng)配置系統(tǒng)所存在的相關(guān)問題,進(jìn)而有針對(duì)性的提出相關(guān)策略,讓IPv6 節(jié)點(diǎn)可以更加方便又安全的進(jìn)行網(wǎng)絡(luò)訪問。