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