進階應用
在探究VPN之前,我們來回顧一些關於靜態路由的基本概念。當進行與VPN和現存的私有網路相關的網路規劃時,這些都是必備的概念。
針對靜態路由的網路通訊閘
讓我們從擁有兩個乙太網路界面的機器開始。
在圖表中,機器A擁有兩個乙太網路界面,IP位址分別是192.168.1.2 和172.16.1.3。它居於網路192.168.1.0/24和172.16.1.0/24之間,擁有將數據封包從一個界面傳送到另一個界面的能力。機器B位於網路172.16.1.0/24中,機器C位於網路192.168.1.0/24中。如果B發出一個目的IP位址是C的數據封包,它需要作哪一類的設定才能到達C呢?
我們假設這裡沒有涉及如RIP或OSPF的動態路由過程,只使用靜態路由。上面問題的答案是B需要知道數據封包是否打算穿過網路到達機器C,B上的路由表會擁有這樣的訊息︰指向到達站192.168.1.0/24的“通訊閘道”是172.16.1.3。同樣的,如果網路數據封包需要從C發到B,那麼就需要有這樣的認知︰指向到達站172.16.1.0/24的“通訊閘道”是192.168.1.2。
請牢記這簡單的概念。這裡描述的VPN是以“路由”為主的網路環境,因此需要建立很多可信任的通道,以應用在基本的傳送通道。
VPN的基本概念是在公共網路間建立安全的通訊通道。我們採用的VPN機制是:創立一個“擁有IP位址的虛擬網路環境”。不論何時有網路應用程式想要發送數據封包進VPN,其實也就是將數據封包送進“擁有IP位址的虛擬網路環境”。它仍然在機器上使用原始的路由機制,即由控制著數據封包在路由方向的基礎上,來指向封包應走向那裡。
從應用觀點而言,網路應用並不會知道VPN所創建的虛擬網路通道與真實的網路有什麼不同。VPN只是存在於真實網路傳輸中的另一個虛擬網路傳輸通道而已,它仍需要有真實的網路環境才能存在。但傳輸資料的工作是被隱藏在通道內部,高階的應用程式無法看到這些。
我們將VPN的用法分為這幾個基本分類︰“用戶端對站(Client-to-Site)”和 “站對站(Site-to-Site)”。下面會介紹到它們。我們只是快速地帶過這些概念。
用戶端對站(Client-to-Site)
“用戶端對站”(Client-to-Site)應用的情形之一是︰某主機(Site)被邊界控制路由所保護,邊界控制路由內部的人們可以存取本地機器,或者存取邊界控制路由外的機器。但邊界控制路由卻不會讓來自網際網路的人們自由地存取邊界控制路由內部的機器。 當某人帶著他/她的PC離開辦公室外出進行商務旅行時,他/她可能想要像身處辦公室那樣去使用電腦。 “用戶端對站”(Cilent-to-Site)即可以被應用於此情況下。
開啟VPN用戶端程式,一個與辦公室之間的虛擬連結通道即會被創建,如此,其他的應用程式就可以使用該通道連接到辦公室中獲取資料。
這不只是“遠端存取”-很多程式可以透過在公共網路中,將數據封包譯成密碼的模式,來執行遠端存取(如“https”, “ssh”等)。此處我們指的“虛擬的連結”是指其他應用程式也可使用“虛擬的連結”通道來傳送或接受數據,而不需使用任何“特殊設計”的通信機制,只要是使用TCP/UDP/IP的“正常的”網路應用程式即可。
“用戶端對站”(Client-to-Site)的特性是那些“用戶端”(Client)沒有“固定的”公共IP位址,他們可能居於其他辦公室的邊界控制路由內,或者僅僅使用臨時公共IP位址。
另一方面,“站(Site)”擁有固定的公共IP位址,這樣“用戶端”才會知道什麼地方可以創建連線至辦公室的連結。
對於那些邊界控制路由外的“行動用戶”,也就是有些人在公司外面,當他們使用VPN連線到公司內部時,必須以在他們既有的IP位址外,再用“額外IP位址”來做為對他們的識別 (亦即是這個使用者會擁有兩個不同的IP位址)。否則,他們會被邊界控制路由視為來自網際網路的未經授權的網路連結,而被封鎖。一旦那些加上VPN標頭的數據封包到達VPN通道的另一端,它們的外封包資訊會被“剝離解析”,換上VPN分派的IP位址,也就是轉換成標準封包,從那裡再開始剩餘的旅程。這是理解VPN工作原理的簡單模式。
在此“虛擬私有網路”上分給每台行動電腦一個IP,這個“VPN主機(Site)”伺服器需要知道這些IP位址,這樣它才能處理來自用戶端VPN連線的要求。
每個行動用戶(例如:Notebook)就可以使用VPN的連線來取得公司內部VPN的內部IP,這就是用戶端對站(Client-to-Site)的連線方式。
這樣,此“額外的”新網路界面,表示對於虛擬私有網路的存取,正如我們在此之前所提到介紹的VPN機制。在網頁介面中,VPN >> 連接 下的頁面都是針對“用戶端對站”(Client-to-Site)連線配置所需的。
在VPN >> 連接 >> 網路位址儲庫 頁面中,那裡詳細說明子網路將被用於VPN的應用。IP位址會從網路位址儲庫中被提取出來,去驗証那些VPN通道的網路環境。請注意當您在此頁面上“開啟/關閉”VPN伺服器程式,請”重新啟動”該主機。
用此網路位址儲庫,我們可以為每一個行動客戶端分派一個在VPN中可作為標識符的IP位址。行動用戶可能沒有公共的固定IP位址,所以才會採取這個方法。一旦某VPN用戶端成功地與VPN伺服器建立了連接,它會自VPN伺服器得到一個IP位址,這樣其他的網路應用可以使用此IP位址去向VPN發送數據封包,或從VPN接收數據封包。
對於VPN >> 連接 >> 訊息流推向設定,請參考如下圖表︰
在這個概念性的圖表中,藍色線表示VPN創建的虛擬網路通道。在邊界控制路由內,原始的本地網路是192.168.3.0/24。對於行動PC來說,它只能發送數據封包給VPN虛擬設備。但如果數據封包要傳送到位於192.168.3.0/24(即在邊界控制路由內的網路)要怎麼辦呢?
首先,我們必須確保行動PC上生成的數據封包要能進入VPN。因此,當VPN用戶端連接到VPN伺服器時,伺服器會新增訊息至路由表,並推展路由入口資訊給用戶端,這樣要傳送到192.168.3.0/24的數據封包就會進入VPN。同樣地,源自於網路192.168.3.0/24的數據封包想要到達VPN上的主機,如果它可以到達邊界控制路由的內部乙太網界面,那它會被按規定路徑發送給VPN。 VPN >> 連接 >> 訊息流推向設定 就是用來維持此目的的。有些如WINS伺服器之類的選項可以透過這一模式移植進用戶端。如果存在特殊網路架構(某些時候,舊有的網路規定路徑,並不是我們所預期的情況時),例如:在原有環境下,公司內還存在一個ERP的網路環境,此時就需要再指定路徑,來搭配其它路由閘道作相關靜態路由的設定。
VPN >> 連接 >> 產出授權鑰 用作加密和驗証目的。透過這裡的生成程式,授權鑰Certificate Authority ( CA )將VPN伺服器和VPN客戶端的密鑰和證書分發給每個VPN客戶端。每個部分的通用名稱應是唯一的。
當前分發的證書有效期為10年,從生成證書那一刻開始。期限結束之時,必須重新生成新證書。然而,管理員可以每月按“徹底清除”按鈕重新生成所有東西,以便確保較頻繁地更新證書。
成為移動用戶端
在VPN >> 連接 >> 用戶端文檔下載 處,有兩個按鈕︰一個是用來下載VPN用戶端的配置檔案和其他密鑰檔案的,以便它可以連接到VPN伺服器。另一個按鈕是用來下載VPN用戶端程式到Windows PC的。所以,在Windows PC上,人們可以使用下載的VPN用戶端程式,配套正確的配置,去連接VPN伺服器。依據前面章節管理向導描述的相似處理方法即可。
運行的Azblink的Linux的機器,就不需要下載任何用戶端程式了。只要有密鑰和配置檔案的數據封包就足夠了。從其他作為VPN伺服器的機器上生成的數據封包,可以在頁面VPN >> 連接 >> 成為移動用戶端 上更新。這樣,這台機器就會變為一個VPN用戶端,它可以用數據封包去創建與VPN伺服器的連接。
僅從原理上來說,每個VPN用戶端配置系列數據封包只能在一台機器上使用。VPN伺服器會盡最大努力將用戶端第一次連接到VPN伺服器時所得的IP位址,再分發給這個用戶端。如果在某些應用上,您打算使用VPN為用戶端去獲得一個固定的IP位址,這顯得尤其重要。
站對站(Site-to-Site)
“站對站”(Site-to-Site)的VPN用於以下的場合︰兩方都擁有固定的公共IP位址,它們由邊界控制路由+VPN來防護。我們打算在這兩個邊界控制路由機器中創建一個通道,這樣一方的私有網路中的機器就可以穿越這條通道,存取另一方私有網路中的機器。
在上述的圖示中,我們要配置邊界控制路由A和B,這樣網路192.168.2.0/24中的機器C、D和E就可以穿過兩個邊界控制路由,存取到網路192.168.3.0/24中的H、G和F。假設邊界控制路由A和B分別擁有固定的公共IP位址1.2.3.4、1.2.3.5。
如果我們打算使用“用戶端對站”(Client-to-Site)方案來解決這一問題,C、D、E、H、G、F每台機器都需要安裝VPN用戶端程式以便可以連接到A或B。如果要同時支援許多用戶和若干平台,這不是很有效。僅僅配置A和B這兩台機器可能會更容易一些。這就是針對此類應用程式而提出“站對站”(Site-to-Site)方案的原因。
下面的機制是︰只需要封鎖A和B的兩個公共IP位址,在公共網路中創建加密管道。此外,A和B上的路由表中還應新增一些入口,這樣至其他地方的傳輸就可被經由此VPN加密管道發送。而正常的網際網路存取與在平常沒有什麼改變。
同樣地,VPN程式會在A和B上各創建一個虛擬設備。對每個虛擬的網路設備,我們只需要指派一個不與現存IP位址衝突的IP位址給它。在上圖中,我們在A上將之標示為192.168.99.1,B上標示為192.168.99.2。在A一方,如果網路數據封包的到達站(Site)位於192.168.3.0/24中,我們即經由界面192.168.99.1發送之。同樣的,在B一方,如果傳輸到達站(Site)是192.168.2.0/24,我們透過界面192.168.99.2來發送。
在 “站對站”(Site-to-Site) 方案中,我們不需要儲備一堆IP位址,來指派為VPN中的標識符,這與 “用戶端對站(Client-to-Site)”中的處理方法是不同的。
授權鑰
了解了這些之後,就更容易檢視VPN “站對站”(Site-to-Site) 的頁面,以便進行配置。VPN >> 站對站 >> 授權鑰 是用來生成密鑰的。如果您在A機器上執行了密鑰生成,不要忘記要將該檔案放置到機器B上,這樣雙方就可以使用“相匹配的”檔案了。當一方的系列檔案生成之後,另一方必須要使用這一方生成的系列檔案。
針對 “站對站(Site-to-Site) VPN”,我們至今只允許一個“遠端的”位址。所以,您只能被允許為遠端用戶生成一個系列檔案,該系列檔案的名稱必須呈現為“client1”。否則,您必須按“徹底清除”來重新生成所有東西。
閘道網路設定
在VPN >> 站對站 >> 閘道網路設定 頁面,只需要將上圖中所示的訊息都填入,您不用擔心上圖所示方案中的新增路由入口事項,系統會在您填入正確訊息那刻開始就處理了。如有更多額外的新增路由入口的需要,您可以在 System >> 網路 >> 靜態路由 中設定。
請注意,如果您在機器A上生成了密鑰檔案,您就必須在機器A的設定頁面上,核取“設定為TLS 伺服器並使用本地端生成的認證及密鑰”的項目。反之,您則需要上載您從另一端獲取的檔案。最後在兩方都完成了設定之後,於兩台機器上都打開“啟動站對站VPN程序”並將機器重啟。您也可以嘗試從一方“ping”另一方,看看是否有回應。
讓我們以實際的設定來演示這一連串的步驟。
假設您在FW A上生成了所有的密鑰,先將密鑰下載暫時存放在安全的地方。然後,在FW A的 VPN >> 站對站 >> 閘道網路設定 頁面上,您應這樣設定︰
站對站 VPN的UDP端口: 7777
本地主機公共網路位址: 1.2.3.4
遠端主機公共網路位址: 1.2.3.5
本地通訊管道器位址: 192.168.99.1
遠端通訊管道器位址: 192.168.99.2
遠端內部網路位址: 192.168.3.0
遠端內部網路遮罩: 255.255.255.0
且須核取項目“設定為TLS 伺服器並使用本地端生成的認證及密鑰”送出,使之成為TLS伺服器。並選取“啟動站對站VPN程序”,在按下送出後,重新啟動機器。
FW B上需設定如下︰
站對站 VPN的UDP端口: 7777
本地主機公共網路位址: 1.2.3.5
遠端主機公共網路位址: 1.2.3.4
本地通訊管道器位址: 192.168.99.2
遠端通訊管道器位址: 192.168.99.1
遠端內部網路位址: 192.168.2.0
遠端內部網路遮罩: 255.255.255.0
不要核取“設定為TLS 伺服器並使用本地端生成的認證及密鑰”的項目。
因為,在一個站對站(Site-to-Site)的VPN網路環境裡,只能允許一個TLS伺服器的存在。所以,當FW A已經設定為TLS伺服器之後,其他要與FW A共構站對站(Site-to-Site) VPN的其他網路就只能充當TLS用戶端。因此,您應將方才從FW A上獲取的密鑰,上傳到成為TLS用戶端的FW B機器中。並點選“啟動站對站VPN程序”送出。然後,重啟機器。
請注意,針對“站對站(Site-to-Site) VPN”的UDP 端口被指示為“7777”。您也需編輯邊界控制路由設定,以便邊界控制路由能允許到達站為UDP 端口7777的數據封包可以被接收。同時,“移動端-對-站(Mobile-to-Site) VPN”正使用UDP 端口1194。它們在不同場合使用不同的UDP端口。所以,您不能將那些證書或密鑰混在一起。
多路傳輸(Multiplexer)
VPN多路傳輸是我們用來表示下面方案的術語︰
在下圖中,FW A和FW B透過“站對站(Site-to-Site) VPN”來連接,這樣它們背後的區域網路可以為對方所見。同時FW A和FW K用“另一個UDP端口上的 “站對站(Site-to-Site) VPN”來連接。這種情況下,我們將FW A稱為“VPN多路傳輸器”。
操作原理是︰在FW A上有若干“站-對-站 VPN”在不同的UDP端口運作著,新增額外的“站-對-站 VPN”作為TLS 伺服器,可以透過VPN >> 站對站 >> 多路傳輸 進行處理。對於FW K內部的網路,您應使用不同的UDP端口、一組不一樣的通訊管道IP位址,以及不同的LAN位址。
FW K上,在FW A所選擇的UDP端口處,它需要被配置為TLS用戶端。
檢視此圖表的簡易模式是︰從FW A出來,“紅色通道”是到FW K的,“藍色通道”是到FW B的,“藍色通道”使用UDP端口7777,所以“紅色通道”應使用不同的UDP端口。
以下是企業版伺服器提供的VPN的“基本模式”。它也允許在同一台伺服器上結合使用不同模式。當前,同一台伺服器上允許使用下表中的混合模式︰
移動端-對-站 (伺服器模式) |
移動端-對-站 (用戶端模式) |
站對站 |
on |
on |
on |
on |
on |
off |
on |
off |
on |
on |
off |
off |
off |
on |
on |
off |
on |
off |
off |
off |
on |
off |
off |
off |
當站對站(Site-to-Site) VPN被開啟,您只可將之配置為“TLS 伺服器”或“TLS 用戶端”。但在我們撰寫此文件的當下,“站對站 TLS伺服器”和“站對站 TLS用戶端”不被允許在同一台機器上同時運作。當作為“站對站 TLS伺服器”模式運作時,使用不同的UDP端口,您可以使若干場合運作。而當使用“站對站 TLS用戶端”時,基於簡單考慮,只允許運作在一個場合。
這一不同模式的結合,應可以覆蓋VPN的大多數基本應用了。事實上,透過控制命令行界面,在同一台機器上將“站對站 TLS 伺服器”和“站對站 TLS用戶端”配置到一起是可能的。但我們在Web 介面中避免之,因為在不同的管理員或組織操作下,它容易產生交叉點,導致彼此之間無法連接,或網路位址衝突。我們將提供透過VPN配置的網路連接範例,這樣您在進行網路規劃時可以應用它們。
範例六︰不同位置的伺服器連接至總部
我們在不同的地方擁有若干伺服器。某些群組的人們可以去存取那些伺服器,同時那些伺服器必須要發送訊息到某總部。 這個方案可能經常用得到。經過公共網路的數據傳送需要加密。如果應用程式自身並沒有加密機制,您可以考慮用VPN來傳送。因為安裝了Azblink系統軟體伺服器的機器可以作為“移動端-對-站”的VPN 用戶端”,我們可以有下面的網路圖表︰
在下圖中,伺服器B、C和D可以被配置為“移動端-對-站 的VPN 用戶端”,FW A可被設為“移動端對站”的VPN 主機。所以,B、C和D可以存取到在邊界控制路由內部的超級伺服器E。然而,B、C和D的用戶端則無法按照VPN連接去追蹤到E。
範例七︰“站對站VPN(Site-to-Site)”和 “用戶端對站VPN”
在上圖中,網路端點A上的各部分都需要存取網路端點B上的機器。所以,FWA和FWB可以建立起一個 站對站(Site-to-Site) VPN連接。同時,某些旅行在外的人們想要連接回網點A處的辦公室。此時,可以在FWA上建立一個“用戶端對站 VPN 主機”。這樣,FWA上就有兩個模式(mode)在運作︰“站對站(Site-to-Site)”的VPN和 “用戶端對站”的VPN。
範例八:將多路傳輸(Multiplexer)的VPN各個端點串連起來
一般而言,如果沒有特別經過設定的話,處於TLS用戶端的FWK與FWB要交換訊息,僅只能透過TLS伺服端的FWA,在FWA的平台上來做資訊交換。TLS伺服端可以與所有連結它的TLS用戶端溝通,但每一個TLS用戶端彼此卻無法直接聯繫。倘若要令每個端點都可互通互連,便得在靜態路由上做一些規則上的設定。
假設上圖中的多路傳輸架構已設定完成。在FWB的伺服器中,至 System >> 網路 >> 靜態路由 的頁面,再設定附加之內部私有網路以及虛擬通訊管道的靜態路由指定。
內部私有網路的靜態路由指定:
目的網路: 192.168.4.0 (對方<FWK>的內部私有網路)
子網路遮罩: 255.255.255.0
閘道: 192.168.2.1 ( TLS伺服端的IP )
虛擬通道的靜態路由指定:
目的網路: 192.168.99.4 (對方<FWK>的本地通訊管道器位址 )
子網路遮罩: 255.255.255.255
閘道: 192.168.99.1 (己方<FWB>的遠端通訊管道器位址)
同理,FWK的伺服器上,也需在System >> 網路 >> 靜態路由 的頁面做同樣的設定。
內部私有網路的靜態路由指定:
目的網路: 192.168.3.0 (對方<FWB>的內部私有網路)
子網路遮罩: 255.255.255.0
閘道: 192.168.2.1 ( TLS伺服端的IP )
虛擬通道的靜態路由指定:
目的網路: 192.168.99.2 (對方<FWB>的本地通訊管道器位址 )
子網路遮罩: 255.255.255.255
閘道: 192.168.99.3 (己方<FWK>的遠端通訊管道器位址)
當設定完畢重開機器之後,FWB與FWK和FWA也就可以相互連結,三方彼此互通資訊了。
|