摘要:IPv4地址的枯竭,加快了IPv6取代IPv4的進程。在漫長的取代過程中,IPv4與IPv6將長期共存,如何IPv4和IPv6間網絡應用的相互訪問、實現資源共享成為重要的問題。使用Nginx正向代理和反向代理功能實現不同過渡時期IPv4與IPv6資源共享。
關鍵詞:IPv6;Nginx;資源共享;正向代理;反向代理
中圖分類號:TP393 文獻標識碼:A 文章編號:1007-9416(2019)07-0034-02
0 引言
世界范圍內可用的IPv4地址已經枯竭,IPv4向IPv6的過渡變得更加緊迫。2018年7月,工信部宣布中國基礎電信運營商4G LTE網絡啟用IPv6,中國互聯網正式進入IPv6時代[1]。同年9月,教育部發布《推進IPv6規模部署行動計劃》,要求到2020年底,教育系統的各類網絡、門戶網站和應用系統完成IPv4向IPv6的升級改造[2]。
IPv6取代IPv4是必然趨勢,但是在IPv6沒有完全啟用之前,將始終處于IPv4與IPv6共存時期。因此,如何實現IPv4環境下用戶對IPv6資源的訪問、IPv6用戶對IPv4資源的訪問以及IPv4與IPv6共存期間資源的互訪與共享問題都成為研究的重點。本文使用Nginx作為代理服務器,利用正向代理和反向代理的功能解決不同環境中資源共享問題。
1 Nginx
Nginx是一個高性能代理服務器,具有很多優越的特征,如:反向代理、支持FastCGI、并發性、穩定性、內存消耗等方面都具有明顯的優勢,國內外很多大型網站等用此技術部署網站,如百度、新浪、騰訊等[3]。
本文主要使用Nginx的代理功能,其中代理分為正向代理和反向代理[4]。
(1)正向代理。Nginx作為正向代理服務器,位于服務器和內網客戶端之間,用于代理用戶對Internet的連接請求。用戶必須指定代理服務器,并將原本直接發送到Web服務器上的HTTP請求發送到代理服務器上。代理服務器再將從Internet上獲得的內容返回給用戶。通常該功能被用于實現翻墻功能,用來訪問國內無法訪問的外國網站如google。正向代理服務器還具有緩存加速、上網認證、上網行為管理等功能。
(2)反向代理。Nginx作為反向代理服務器,多架設在服務器端,將客戶端請求轉發給內部網絡上的目標服務器,并將從服務器上得到的結果返回給請求連接的客戶端,此時代理服務器與目標服務器一起對外表現為一個服務器,用戶不知道該服務器的存在,該服務器對用戶透明。因此,反向代理功能可以阻止網絡攻擊,增強內網安全。除此之外,反向代理功能也常用于負載均衡、頁面緩存等功能。
2 IPv4環境中對IPv6資源的訪問
由于IPv4地址緊缺,對于未能申請到IPv4地址的網站及應用只能使用IPv6對外提供服務。對于該類應用,通過Nginx正向代理功能,實現IPv4用戶對IPv4“海洋”中IPv6資源的訪問。具體代理配置方法如下:
server {
resolver 8.8.8.8; ? ? ?#配置DNS服務器地址,必須設置,與反向代理不同
resolver_timeout 5s; ?#配置解析超時時間
listen 8080; ? ? ? ? ?#配置監聽端口
location / {
proxy_pass http://$host$request_uri; ? ?#設置做正向代理的IPv6網址或IPv6地址
……
}
3 IPv6環境中對IPv4資源的訪問
目前網絡中的大部分網站規劃、應用開發都基于IPv4,若直接由IPv4遷移至IPv6環境,可能會出現網站或網絡應用無法提供服務的情況。另外,IPv4向IPv6的轉換也需要網絡結構改造、設備的軟硬件升級以及對網絡應用代碼的重新編譯、測試等[5]。對高校來說,普通的內容類網站短時間內升級比較容易實現,然而對于財務、教務、資產等應用系統來說,升級為IPv6則需要較長時間。即使IPv6已經完全取代IPv4,仍有部分基于IPv4的應用。對于這類應用,IPv6用戶無法直接訪問,使用Nginx正向代理進行部署,對IPv4資源的訪問,還起到保護真實服務器的作用。具體配置方法如下:
server {
resolver 2001:4860:4860::8888; #配置DNS服務器地址,必須設置,與反向代理不同
resolver_timeout 5s; ? ? ? ? ? ?#配置解析超時時間
listen 8080 default ipv6only=on; ? #配置監聽端口,設置只監聽IPv6
location / {
proxy_pass http://$host$request_uri; ? ?#設置做正向代理的IPv4網址或IPv4地址
……
}
4 IPv4向IPv6過渡時期IPv4和IPv6資源相互訪問
在IPv4向IPv6過渡時期,使用“雙協議棧技術” 實現IPv4和IPv6節點的通信,這是一種常用的過渡方法。但是該技術需要客戶端和服務器同時配置IPv4和IPv6地址,不僅沒有從根本上解決IPv4地址緊缺的問題,而且要求通信對端及其中間設備都支持雙棧協議,部署復雜,實現比較困難[6]。本文采用Nginx反向代理技術實現IPv4或IPv6用戶對另一協議中網絡資源的訪問。
Nginx反向代理服務器部署在雙棧環境中,同時監聽IPv4和IPv6請求,而服務器端只需要接入IPv4或IPv6網絡,不需要支持兩種協議,也不需要改變網絡結構和設備配置。對于IPv4用戶來說,代理服務器將IPv4數據分組發送給IPv6的WEB服務器;對IPv6用戶來說,代理服務器將IPv6用戶的請求代理至IPv6服務器。Nginx反向代理配置方法如下:
server {
listen ?80 ;
server_name ?www.test.com;
location / {
proxy_pass http://$host$request_uri; ?#設置需要代理的IPv4、IPv6地址或URL
proxy_redirect default;
}
}
5 結語
針對IPv4向IPv6過渡的不同時期,設計不同的跨協議資源訪問方案。利用Nginx正向代理功能實現對另一協議中少量資源的訪問,利用Nginx反向代理功能實現IPv4向IPv6過渡時期IPv4或IPv6用戶對另一協議中網絡資源的訪問。這些方案都不需要修改網絡配置和網絡結構,容易實現,方便管理和維護。由于缺乏IPv6部署經驗,尤其是網絡安全方面的經驗, IPv6網絡必然成為攻擊的熱點,IPv6網絡安全成為下一步研究的重點。
參考文獻
[1] 趙肅波.中國IPv6發展與網絡安全挑戰[J].信息安全研究,2019,5(03):79-90.
[2] 教育部印發通知貫徹落實推進IPv6規模部署[J].中國教育網絡,2018,(9):8-9.
[3] 孫曉林,張新剛.基于Nginx的網站安全優化方案[J].網絡安全技術與應用,2017(11):43+45.
[4] 高群凱.深入剖析Nginx[M].人民郵電出版社,2013.
[5] 吳金堂,耿方方.IPv6環境下反向代理IPv4網站及安全防護的研究與實現[J].中小企業管理與科技(下旬刊),2019,564(01):113-116.
[6] 鄧庚盛,鄢志輝,鄒偉平,等.IPv6過渡階段基于雙棧反向代理技術的應用研究[J].中國教育網絡,2018(01).