本文主要討論階段1和階段2的場景,需要同時滿足終端IPv4/IPv6用戶訪問IPv6/IPv4Web服務(wù)的需求。見表1,只有雙棧方式接入的終端用戶能夠訪問所有的IPv4/IPv6服務(wù),純IPv4用戶不能訪問純IPv6服務(wù),純IPv6用戶不能訪問純IPv4服務(wù)。要滿足所有終端用戶同時能夠訪問IPv4/IPv6服務(wù),需要終端用戶通過IPv4-over-IPv6或IPv6-over-IPv4隧道的方式建立另外一種協(xié)議的通信通道,隧道的建立需要終端用戶做一定的配置,對于情況各異的用戶來說難以大規(guī)模使用。
因此,需要從Web服務(wù)端實現(xiàn)純IPv4和純IPv6用戶的訪問,通常有以下兩種方法:(1)服務(wù)器基于雙棧提供Web服務(wù),原生支持IPv4/IPv6;(2)IPv4-IPv6翻譯,通過一個翻譯模塊將IPv4數(shù)據(jù)包和IPv6數(shù)據(jù)包互相轉(zhuǎn)換,翻譯機制可以分為無狀態(tài)翻譯,如SIIT(stateless IP/ICMP translation)和IVI(IV stands for 4 and VI stands for 6),以及有狀態(tài)翻譯,如NAT-PT(NAT-protocol translation)和NAT64。[3-5]
Web服務(wù)本身采用雙棧方式是首選,它可避免因轉(zhuǎn)換導(dǎo)致的任何復(fù)雜性,并為服務(wù)器提供最多信息。[6]雙棧方式需要整個鏈路上的設(shè)備均支持雙棧,包括服務(wù)器和應(yīng)用本身,這意味著可能涉及到網(wǎng)絡(luò)改造和軟硬件設(shè)備更新,且公網(wǎng)雙棧需要消耗公網(wǎng)IPv4地址。IPv4-IPv6翻譯機制需要在邊界部署路由或網(wǎng)關(guān),無狀態(tài)翻譯機制不需要維護會話的狀態(tài),具有一定的靈活性,但它是以消耗IPv4地址空間的代價來實現(xiàn)雙向通信,有狀態(tài)翻譯機制需要翻譯器維護一個動態(tài)的地址(地址和端口)映射和一個IPv4地址資源池。
由于公網(wǎng)雙棧方式和無狀態(tài)翻譯機制Web服務(wù)本身需要消耗公網(wǎng)IPv4地址空間,他們沒有解決IPv6協(xié)議主要解決的地址空間的問題;私網(wǎng)雙棧雖然不消耗公網(wǎng)IPv4地址但仍然需要鏈路上設(shè)備的支持;另外,私網(wǎng)雙棧和有狀態(tài)翻譯機制需要部署路由或網(wǎng)關(guān)并維護會話狀態(tài),增加了網(wǎng)絡(luò)復(fù)雜性。因此,為了降低IPv6過渡期間Web服務(wù)部署實施的復(fù)雜度,本文提出采用雙棧反向代理的方式實現(xiàn)過渡時期對Web服務(wù)的訪問,通過將反向代理服務(wù)器部署在雙棧環(huán)境中,Web服務(wù)可以只接入純IPv4或純IPv6,不需要對現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)做任何改變,進而逐步完成向IPv6的過渡。
雙棧反向代理服務(wù)方案的設(shè)計
反向代理是指由代理服務(wù)器來接收來自互聯(lián)網(wǎng)的訪問請求,再把訪問請求轉(zhuǎn)發(fā)到對應(yīng)的網(wǎng)站服務(wù)器,并從對應(yīng)網(wǎng)站服務(wù)器獲取結(jié)果返回給訪問用戶。[7]對于終端用戶來說,用戶正常訪問網(wǎng)頁即可,不需要做任何改變或配置。文獻[7-10]介紹了反向代理在Web服務(wù)中的應(yīng)用,并介紹了在安全、負載均衡、公網(wǎng)地址消耗等方面的優(yōu)勢,但這些文獻均未涉及IPv4/IPv6雙棧環(huán)境的場景。
雙棧反向代理的方式是指將反向代理服務(wù)器部署在雙棧環(huán)境中,同時分別監(jiān)聽IPv4和IPv6服務(wù)端口,Web服務(wù)可以只接入純IPv4或純IPv6網(wǎng)絡(luò),純IPv4和純IPv6終端用戶可以通過反向代理服務(wù)器進行代理訪問另一協(xié)議的Web服務(wù)。由于采用雙棧代理后Web內(nèi)容可能存在跨協(xié)議的資源引用問題,本文設(shè)計采用在反向代理服務(wù)內(nèi)設(shè)置過濾轉(zhuǎn)換器和通用代理器來實現(xiàn)跨協(xié)議訪問。
1.雙棧反向代理服務(wù)的網(wǎng)絡(luò)設(shè)計
IPv6過渡階段雙棧反向代理部署網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。雙棧反向代理服務(wù)器部署在雙棧網(wǎng)絡(luò)中,同時監(jiān)聽IPv4/IPv6的服務(wù)端口:
(1)對于純IPv4用戶,在一側(cè)作為IPv4服務(wù)器,另一側(cè)作為IPv6客戶端,將來自IPv4客戶端的請求代理到IPv6服務(wù)器。
(2)對于純IPv6用戶,在一側(cè)作為IPv6服務(wù)器,另一側(cè)作為IPv4客戶端,將來自IPv6客戶端的請求代理到IPv4服務(wù)器。
雙棧反向代理服務(wù)器部署比較靈活,部署的位置取決于網(wǎng)絡(luò)的哪個部分可以支持雙棧,不需要對現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)做任何變更,又實現(xiàn)了雙棧Web服務(wù)。即使整個網(wǎng)絡(luò)沒有IPv6或IPv4,也可以在外部支持雙棧的數(shù)據(jù)中心托管自己的反向代理服務(wù)器,實現(xiàn)IPv4/IPv6的服務(wù)。由于跨協(xié)議訪問服務(wù)是由反向代理服務(wù)器中轉(zhuǎn)完成的,因此服務(wù)內(nèi)容的管理維護與之前沒有變化,不需要考慮IPv4和IPv6不同的情況。
2.雙棧反向代理服務(wù)的域名服務(wù)設(shè)計
在反向代理服務(wù)的部署實施過程中,結(jié)合DNS(域名服務(wù))配置可以更好地實現(xiàn)Web服務(wù)的快速部署。本文中Web服務(wù)域名設(shè)計如下:域名為example.com和example6.com,其中example.com域下的子域名同時配置A記錄和AAAA記錄,example6.com域下的子域名僅配置AAAA記錄,在實際應(yīng)用中可以選擇不使用example6.com域名。其中A記錄是用來創(chuàng)建到IPv4地址的記錄,AAAA記錄是用來創(chuàng)建到IPv6地址的記錄。
假定雙棧反向代理服務(wù)器的IPv4和IPv6的地址分別為222.204.33.99和2001:250:6c00::3:99,以處于純IPv4網(wǎng)絡(luò)中域名為lib.example.com(ipv4地址為222.200.3.200)和處于純IPv6網(wǎng)絡(luò)中域名為6.example.com(IPv6地址為2001:250:6c00::210:201)的Web服務(wù)站點為例介紹域名設(shè)置方式。具體域名配置時將原本純IPv4服務(wù)域名lib.example.com和lib.example6.com的AAAA記錄指向反向代理服務(wù)器的IPv6地址2001:250:6c00::3:99,將原本純IPv6服務(wù)域名6.example.com對應(yīng)的A記錄指向反向代理服務(wù)器的IPv4地址222.204.33.99。當(dāng)純IPv4或純IPv6用戶訪問原本只有另一協(xié)議網(wǎng)絡(luò)的Web服務(wù)時,域名將解析至反向代理服務(wù)器進行代理訪問。