1. 程式人生 > >專案(十)openvpn架構實施方案(一)跨機房異地災備

專案(十)openvpn架構實施方案(一)跨機房異地災備

第一章VPN介紹

 

1.1 VPN概述

VPN(全稱Virtual Private Network)虛擬專用網路,是依靠ISP和其他的NSP,在公共網路中建立專用的資料通訊網路的技術,可以為企業之間或者個人與企業之間提供安全的資料傳輸隧道服務。在VPN中任意兩點之間的連線並沒有傳統專網所需的端到端的物理鏈路,而是利用公共網路資源動態組成的,可以理解為通過私有的隧道技術在公共資料網路上模擬出來的和專網有同樣功能的點到點的專線技術,所謂虛擬是指不需要去拉實際的長途物理線路,而是借用了公共Internet網路實現。

為了便於大家理解,給一個直觀的形象圖:

QQ截圖20171107210724.png-84.2kB

 

1.2 VPN的作用

VPN功能可以幫助公司裡的遠端使用者(出差,家裡),公司的分支機構,商業合作伙伴及供應商等公司和自己的公司內部網路之間建立可信的安全連線或者是區域網連線,確保資料的加密安全傳輸和業務訪問,對於運維工程師來說,還可以連線不同的機房為區域網,處理相關的業務流。我們可以通過一張網路邏輯圖為同學們描述VPN的作用。

QQ截圖20171107220916.png-299kB

 

1.3 VPN的分類

我們根據VPN的常見企業應用,將VPN分為以下4類應用:

(1)遠端訪問VPN服務

即通過個人電腦遠端撥號到企業辦公網路。

a.一般為企業內部員工出差,休假或特殊情況下在遠離辦公室的時候,又有需求訪問公司的內部網路獲取相關資源,就可以通過VPN撥號到公司內部。此時遠端撥號的員工和辦公室內的員工以及其他撥號的員工之間都相當於一個區域網絡內。例如:訪問內部的域控制器,檔案伺服器,OA系統,ERP,HTTP服務,內網飛秋聊天工具等區域網服務應用。

QQ截圖20171107224921.png-28.9kB

  • 對於運維人員來說就是需要個人電腦遠端撥號到企業網站IDC機房,遠端維護IDC伺服器。
  • 此點是技術人員特別是運維人員在工作中會經常用這個方法維護大量的機房內無外網的伺服器及網路裝置。

(2)企業內部網路之間VPN服務

  • 在公司的分支機構的區域網和公司總部LAN之間的VPN連線。通過公網Internet建立VPN將公司在各地的分支機構的LAN連結到公司總部的LAN。例如:各大超市之間業務結算等。
  • 這是由於地域的原因而產生的VPN的需求,通過VPN讓不同地域內的機器可以互相訪問,就好像是一個區域網一樣。例如:辦公室互聯協同辦公,機房互聯資料同步及業務訪問等。

(3)網際網路公司多IDC機房之間VPN服務

此處是運維架構人員需要考慮的問題。不同機房之間業務管理和業務訪問,資料流動。

(4)企業外部VPN服務

在供應商,合作伙伴的LAN和本公司的LAN之間建立的VPN服務。

(5)訪問國外的網站

FQ業務應用

 

1.4 常見隧道協議介紹

(1)PPTP

點對點隧道協議(PPTP)是由包括微軟和3Com等公司組成的PPTP論壇開發的一種點對點隧道協議,基於撥號使用的PPTP協議,使用PAP或CHAP之類的加密演算法,或者使用Microsoft的點對點加密演算法MPPE。其通過跨越基於TCP/IP的資料網路建立VPN實現了從遠端客戶端到專用企業伺服器之間資料的安全傳輸。PPTP支援通過公共網路(例如Internet)建立按需的,多協議的,虛擬專用網路。PPTP允許加密IP通訊,然後在要跨越公司IP網路或公共IP網路(如Internet)傳送的IP頭中對其進行封裝。典型的linux平臺的開源軟體為pptp。

PPTP屬於點對點方式的應用,比較適合遠端的企業使用者撥號到企業進行辦公等的應用

(2)L2TP

L2TP第2層隧道協議(L2TP)是LETF基於L2F(Cisco的第二層轉發協議)開發的PPTP的後續版本。是一種工業標準Internet隧道協議,其可以為跨越面向資料包的媒體傳送點到點協議(PPP)框架提供封裝。PPTP和L2TP都使用PPP協議對資料進行封裝,然後新增附加包頭用於資料在網際網路絡上的傳輸。PPTP只能在兩端點間建立單一隧道。L2TP支援在兩端點間使用多隧道,使用者可以針對不同的服務質量建立不同的隧道。L2TP可以提供隧道驗證,而PPTP則不支援隧道驗證。但是當L2TP或PPTP與IPSEC共同使用時,可以由IPSEC提供隧道驗證,不需要在第2層協議上驗證隧道使用L2TP。PPTP要求網際網路絡為IP網路。L2TP只要求隧道媒介提供面向資料包的點對點的連線,L2TP可以在IP(使用UDP),幀中繼永久虛擬電路(PVCs),X.25虛擬電路(VCs)或ATM VCs網路上使用。

(3)IPsec

  • IP安全協議(IPSec:IP Security)實際上是一套協議包而不是一個獨立的協議。從1995年開始IPSec的研究以來,IETF IPSec 工作組在它的主頁上釋出了幾十個Internet草案文獻和12個RFC檔案。其中,比較重要的有RFC2409IKE(網際網路金鑰交換),RFC2401 IPSec協議,RFC2402 AH驗證包頭,RFC2406 ESP加密資料等檔案。
  • IPSec隧道模式隧道是封裝,路由與解封裝的整個過程。隧道將原始資料包隱藏(或封裝)在新的資料包內部。該新的資料包可能會有細心的定址與路由資訊,從而使其能夠通過網路傳輸。隧道與資料保密性結合使用時,在網路上竊聽通訊的人將無法獲取原始資料包資料(以及原始的源和目標)。封裝的資料包到達目的地後,會刪除封裝,原始資料包頭用於將資料包路由到最終目的地。

  • 隧道本身是封裝資料經過的邏輯資料路徑,對原始的源和目的端,隧道是不可見的,而只能看到網路路徑中的點對點連線。連線雙方並不關心隧道起點和終點之間的任何路由器,交換機,代理伺服器或者其他安全閘道器。將隧道和資料保密性結合使用時,可用於提供VPN。

  • 封裝的資料包在網路中的隧道內部傳輸。在此示例中,該網路是Internet。閘道器可以是外部Internet與專用網路間的周界閘道器。周界閘道器可以是路由器,防火牆,代理伺服器或其他安全閘道器。另外,在專用網路內部可使用兩個閘道器來保護網路中不信任的通訊。
  • 當以隧道模式使用IPSec時,其只為IP通訊封裝。使用IPSec隧道模式主要是為了與其他不支援IPSec上的L2TP或PPTP VPN隧道技術的路由器,閘道器或終端系統之間的相互操作。

(4)SSL VPN

  • SSL VPN,SSL協議提供了資料私密性,端點驗證,資訊完整性等特性。SSL協議由許多子協議組成,其中兩個主要的子協議是握手協議和記錄協議。握手協議允許伺服器和客戶端在應用協議傳輸第一個資料位元組以前,彼此確認,協商一種加密演算法和密碼鑰匙。在資料傳輸期間,記錄協議利用握手協議生成的金鑰加密和解密後來交換的資料。
  • SSL獨立於應用,因此任何一個應用程式都可以享受它的安全性而不必理會執行細節。SSL置身於網路結構體系的傳輸層和應用層之間。此外,SSL本身就被幾乎所有的Web瀏覽器支援。這意味著客戶端不需要為了支援SSL連線安裝額外的軟體。這兩個特徵就是SSL能應用於VPN的關鍵點。
  • 典型的SSL VPN應用如OpenVPN,是一個比較好的開源軟體。OpenVPN允許參與建立VPN的單點使用預設的私鑰,第三方證書,或者使用者名稱/密碼來進行身份驗證。它大量使用了OpenSSL加密庫,以及SSLv3/TLSv1協議。OpenVPN能在Linux,xBSD,Mac OSX與Windows 2000/XP上執行.它並不是一個基於Web的VPN軟體,也不與IPSec及其他VPN軟體包相容,C/S架構的軟體,單獨安裝openvpn客戶端。

QQ截圖20171108134332.png-343.6kB

 

1.5 實現vpn功能的常見開源產品

(1)PPTP VPN

使用PPTP VPN的最大優勢在於,無需在windows客戶端單獨安裝客戶端軟體,windows預設就支援PPTP VPN撥號連線功能。另外,PPTP VPN屬於點對點方式的應用,比較適合遠端的企業使用者撥號到企業進行辦公等的應用。

(2)SSL VPN(OpenVPN)

  • PPTP主要為那些經常外出移動或家庭辦公的使用者考慮,而OpenVPN不但使用於PPTP的應用場景,還適合針對企業異地兩地總分公司之間的VPN不間斷按需連線,例如:ERP,OA,及時通訊工具等在企業中的應用。

(3)IPSec VPN

IPSec VPN也適合針對企業異地兩地總分公司或多個IDC機房之間的VPN不間斷按需連線,並且在部署使用上更簡單方便。

 

1.6 根據企業生產場景需求選擇vpn方案建議

  • :如果領導願意花錢,可以選擇相關硬體產品,不錯的成熟的很多,例如:防火牆,負載均衡等硬體產品都附帶VPN功能。

  • :對於多數網際網路公司,為了體現我們運維架構師的價值,我們應該建議老闆選擇開源產品,優勢就是省錢,可擴充套件性更強,例如:二次開發,相應的改動。

  • :對於開源的產品,Mr.chen建議:

    • 個人撥號選擇openvpn,功能強大,穩定可靠。
    • 如果不希望單獨安裝客戶端撥號,則可選擇PPTP
    • 多個企業之間或者多個IDC機房直接互聯,選擇ipsecvpn或openvpn。
  • :本課程所講解的:openvpn,ipsec vpn的完整企業實現。可以滿足各種企業需求。

 

第二章 openvpn開源產品

 

2.1 openvpn產品介紹

  • 在眾多vpn產品中,OpenVPN無疑是Linux下開源VPN的先鋒,它提供了良好的訪問效能和友好的使用者GUI。
  • OpenVPN是一個用於建立虛擬專用網路加密通道的軟體包,最早由James Yonan編寫。OpenVPN允許參與建立VPN的單點使用預設的私鑰,第三方證書,或者使用者名稱/密碼來進行身份驗證。它大量使用了OpenSSL加密庫,以及SSLv3/TLSv1協議。OpenVPN能在Linux,xBSD,MacOS X與Windows上執行。Openvpn是一個伺服器和客戶端軟體,而不是一個基於Web的VPN軟體,也不與IPSec及其他VPN軟體包相容。
 

2.2 openvpn依賴的SSL與TLS協議介紹

  • SSL即,安全套接層(Secure Sockets Layer,SSL)是一種安全協議,誕生的目的是為網路通訊提供安全及資料完整性保障,SSL在傳輸層中對網路通訊進行加密。
  • SSL採用公開金鑰技術,保證兩個應用間通訊的保密性和可靠性,使客戶與伺服器應用之間的通訊不被攻擊者竊聽。它在伺服器和客戶機兩端可同時被支援,目前已成為網際網路上保密通訊的工業標準。現行的Web瀏覽器亦普遍將HTTP和SSL相結合1,從而實現安全通訊。SSL協議其繼任者是TLS。
  • 後來IETF(www.ietf.org)將SSL作了標準化,即RFC2246,並將其稱為TLS(Transport Layer Security),其最新版本是RFC5246,版本1.2。從技術上講,TLS1.0與SSL3.0的差異非常微小。
  • TLS(Transport Layer Security)利用金鑰演算法在網際網路上提供端點身份認證與通訊保密,其基礎是公鑰基礎設施(public key infrastructure,PKI)。不過在實現的典型例子中,只有網路服務者被可靠身份驗證,而其客戶端則不一定。這是因為公鑰基礎設施普遍商業運營,電子簽名證書通常需要付費購買。協議的設計在某種程度上能夠使主從架構應用程式通訊本身防竊聽,干擾(Tampering)和訊息偽造。
 

2.3 openvpn的加密通訊原理過程

OpenVPN使用TLS加密是通過使用公開金鑰(非對稱金鑰,加密解密使用不同的key,一個稱為Public key,另一個是Private key)對資料進行加密的,對於TLS傳輸的工作原理,這裡暫且先不介紹。對於OpenVPN使用TLS_mode,首先Server和Client要有相同CA簽發的證書,雙方通過交換證書驗證雙方的合法性以決定是否建立VPN連線,然後使用對方CA把自己目前使用的資料加密方法(類似於金鑰)加密後傳送給對方,由於使用對方CA加密的,所以只有對方CA對應的Private key才能解密該字串,保證了此金鑰的安全性,並且此金鑰定期改變,對於竊聽者來說,可能還沒有破解出金鑰,通訊雙方已經更換金鑰了。

 

2.4 openvpn的多種身份驗證方式

OpenVPN提供了多種身份驗證方式,用以確認參與連線雙方的身份,包括:預享私鑰,第三方證書以及使用者名稱/密碼組合等。預享金鑰最為簡單,但同時它只能用於建立點對點的VPN;基於PKI的第三方證書提供了最完善的功能,但是需要額外的精力去維護一個PKI證書體系。OpenVPN2.0後引入了使用者名稱/口令組合的身份驗證方式,他可以省略客戶端預享金鑰,但是仍有一份伺服器CA證書需要被用作加密,比較好的驗證方式還有LDAP統一驗證等。

 

2.5 openvpn通訊原理

  • OpenVPN所有的通訊都基於一個單一的IP埠(預設為1194),預設使用UDP協議通訊,同時TCP也被支援。OpenVPN連線能通過大多數的代理伺服器,並且能夠在NAT的環境中很好地工作。OpenVPN服務端具有向客戶端“推送”某些網路配置資訊的功能,這些資訊包括:IP地址,路由設定等。OpenVPN提供了兩種虛擬網路介面:通用Tun/Tap驅動,通過它們,可以建立三層IP隧道,或者虛擬二層乙太網,後者可以傳送任何型別的二層乙太網絡資料。傳送的資料可通過LZO演算法壓縮。OpenVPN2.0以後版本每個程序可以同時管理數個併發的隧道。
  • OpenVPN使用通用網路協議(TCP與UDP)的特點使它成為IPsec等協議的理想替代1,尤其是在ISP(Internet server provider)過濾某些特定VPN協議的情況下。
  • 在選擇協議時候,需要注意2個加密隧道之間的網路狀況,如有高延遲或者丟包較多的情況下,請選擇TCP協議作為底層協議,UDP協議由於存在無連線和重傳機制,導致要隧道上層的協議進行重傳,效率非常低下。這裡建議用TCP協議方式。

參考資料:
http://www.baike.com/wiki/OpenVPN
http://zh.wikipedia.org/zh-cn/OpenVPN

  • OpenVPN的技術核心是虛擬網絡卡,其次是SSL協議實現,SSL協議前面已闡述過,這裡重點對虛擬網絡卡及其在OpenVpn中的工作機理進行介紹:
  • 虛擬網絡卡是使用網路底層程式設計技術實現的一個驅動軟體,安裝後在主機上多出一個網絡卡,可以像其他網絡卡一樣進行配置。服務程式可以在應用層開啟虛擬網絡卡,如果應用軟體(如IE)向虛擬網絡卡傳送資料,則服務程式可以讀取到該資料,如果服務程式寫合適的資料到虛擬網絡卡,應用軟體也可以接收得到。虛擬網絡卡在很多的作業系統下都有相應的實現,這也是OpenVPN能夠跨平臺一個很重要的理由。
  • 在OpenVPN中,如果使用者訪問一個遠端的虛擬地址(屬於虛擬網絡卡配用的地址系列,區別於真實地址),則操作性系統會通過路由機制將資料包(TUN模式)或資料幀(TAP模式)傳送到虛擬網絡卡上,服務程式接收該資料並進行相應的處理後,通過SOCKET從外網上傳送出去,遠端服務程式通過SOCKET從外網上接收資料,並進行相應的處理後,傳送給虛擬網絡卡,則應用軟體可以接收到,完成了一個單向傳輸的過程,反之亦然。
  • OpenVPN使用OpenSSL庫加密資料與控制資訊:它使用了OpenSSL的加密以及驗證功能,意味著,它能夠使用任何OpenSSL支援的演算法。它提供了可選的資料包HMAC功能以提高連線的安全性。此外,OpenSSL的硬體加速也能提高它的效能。

(1)openvpn驅動部分實現了網絡卡處理和字元裝置。網絡卡處理網路資料,字元裝置完成與應用層的資料互動。

(2)使用openvpn必須修改路由表

工作過程,傳送資料:

1,應用程式傳送網路資料
2,網路資料根據修改後的路由表把資料路由到虛擬網絡卡
3,虛擬網絡卡把資料放到資料佇列中
4,字元裝置從資料佇列中取資料,然後送給應用層
5,應用層把資料轉發給物理網絡卡
6,物理網絡卡傳送資料

接收過程:

1,物理網絡卡接收到資料,並傳到應用空間。
2,應用守護程式通過字元裝置,把資料傳給驅動網絡卡。
3,資料通過虛擬網絡卡重新進入網路堆疊。
4,網路堆疊把資料傳給上層真實的應用程式。

 

2.6 openvpn生產環境常用場景

(1)遠端撥號訪問企業網路或IDC機房

用的最多的場景

(2)企業異地內部網路通過VPN連線成區域網

QQ截圖20171110115258.png-63.3kB

(3)網際網路公司多IDC機房之間通過VPN連線交換資料

此處是運維架構人員需要考慮的問題。不同機房之間業務管理和業務訪問,資料流動。

(4)企業外部VPN服務

在供應商,合作伙伴的LAN和本公司的LAN之間建立的VPN服務。
從技術上來說,2,3,4的實現是一樣的。

 

2.7 企業生產場景常用VPN工作結構圖

(1)企業vpn遠端撥號訪問場景邏輯圖(OpenVPN)

QQ截圖20171117234117.png-62.5kB

  • 當用戶從家裡撥號上網後,通過OpenVPN Client軟體可以撥號到OpenVPN Server(ip:124.43.12.115)上,此時,在個人筆記本和OpenVPN Server之間會建立一個加密的專用隧道(預設會使用10.6.27.0段的IP),使得個人筆記本可以訪問得到OpenVPN Server的內網絡卡IP地址(172.16.1.7),但是,此時通過筆記本直接訪問和OpenVPN Server相同的內部區域網中的其他Server(ip:172.16.1.8)是訪問不到的,因為,OpenVPN Server不知道如何幫你轉發這個訪問請求。
  • 在生產環境中的常用做法是,當個人筆記本連線上OpenVPN Server之後,在OpenVPN Server上加入一條防火牆NAT規則(部署時人工增加),使得當筆記本(來源地址段為10.6.27.0)訪問和OpenVPN Server相同的內部區域網Server(ip:172.16.1.9)時,把筆記本的訪問去請求偽裝成OpenVPN Server的請求(即把筆記本的訪問來源地址更改為OpenVPN Server的內網絡卡IP地址,本文為172.16.1.7),這樣,從筆記本就可以輕鬆訪問和OpenVPN Server相同的內部區域網的其它Server(ip:172.16.1.9)了,因為經過NAT轉換後,二者看起來是在同一個區域網網段內。在訪問請求時,筆記本的IP已經轉換為OpenVPN Server的內網絡卡IP地址,本文為172.16.1.7,而和OpenVPN Server相同的內部區域網的所有Server的IP段都在172.16.1.0/24段,這樣家裡的筆記本也就相當於在172.16.1.0/24了,從而實現區域網互相訪問的效果。
  • 當然,OpenVPN的功能及應用不僅僅是我上面描述的,在生產環境中,還可以有其它的使用方案,例如:配置VPN實現“FQ”功能。

(2)企業或IDC機房網路互聯場景邏輯圖(IPsec)

QQ截圖20171110214914.png-60.6kB

 

第三章 OpenVPN生產環境需求及環境模擬

 

3.1 環境需求

裝置/專案 IP
模擬公網VPN客戶端(筆記本或PC) 192.168.0.100/24(模擬公網IP)
OpenVPN Server(雙網絡卡) eth0:192.168.0.200/24(公網) eth1:192.168.200.100/24(內網)
IDC機房內部區域網伺服器 192.168.200.200/24(模擬內網伺服器無公網IP)

實現需求:
在遠端通過VPN客戶端(筆記本)撥號到VPNserver,然後可以直接訪問VPNServer所在區域網內的多個servers,進行管理維護。

QQ截圖201711102+340.png-38kB

 

3.2 大規模叢集環境VPN邏輯架構

QQ截圖20171113200125.png-133kB

 

3.3 openvpn實驗初始環境搭建