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