強叔侃牆 VPN篇 IPSec兼容並濟吸納百家,GRE和L2TP改頭換面深藏不漏

對於新發展的分舵,天地會使用IPSec來保護分舵與總舵之間的通信。而對於一些很早就存在的分舵,它們已經通過GREL2TP方式接入總舵,如何在不改變原有接入方式的基礎上使這些分舵也可以使用IPSec與總舵安全通信呢?

好在IPSec兼容並濟胸襟寬廣,GREL2TP皆可納入到IPSec中。IPSecGRE隧道和L2TP隧道視爲受保護對象,即報文先進行GREL2TP封裝,然後再進行IPSec封裝。這樣分舵和總舵之間的通信非但不用改動原有的接入方式,還可以受到IPSec的保護。這種方式相當於是兩種不同類型的隧道疊加,也叫做GRE over IPSecL2TP over IPSec

下面先來看一下在分舵通過GRE接入總舵的場景中,如何使用IPSec來保護GRE隧道。

分舵通過GRE over IPSec接入總舵

如下圖所示,總舵網關FWA和分舵網關FWB已經建立了GRE隧道,現需要在GRE隧道之外再封裝IPSec隧道,對總舵和分舵的通信進行加密保護。


 

 

前面我們介紹過,IPSec有兩種封裝模式:傳輸模式和隧道模式。IPSecGRE隧道進行封裝時,這兩種模式的封裝效果也不盡相同。

傳輸模式

在傳輸模式中,AH頭或ESP頭被插入到新的IP頭與GRE頭之間:


 

 

傳輸模式不改變GRE封裝後的報文頭,IPSec隧道的源和目的地址就是GRE封裝後的源和目的地址。

隧道模式

在隧道模式中,AH頭或ESP頭被插到新的IP頭之前,另外再生成一個新的報文頭放到AH頭或ESP頭之前:

 

 

隧道模式使用新的IPSec報文頭來封裝經過GRE封裝後的消息,封裝後的消息共有三個報文頭:原始報文頭、GRE報文頭和IPSec報文頭,Internet上的設備根據最外層的IPSec報文頭來轉發該消息。

封裝GRE報文頭時,源和目的地址可以與IPSec報文頭中的源和目的地址相同,即使用公網地址來封裝;也可以使用私網地址封裝GRE報文頭,例如,創建Loopback接口並配置私網地址,然後在GRE中借用Loopback接口的地址來封裝。

 

GRE over IPSec中,無論IPSec採用傳輸模式還是隧道模式,都可以保護兩個網絡之間通信的消息。這是因爲GRE已經進行了一次封裝,原始報文就可以是兩個網絡之間的報文。

注意:隧道模式與傳輸模式相比多增加了新的IPSec報文頭,導致報文長度更長,更容易導致分片。如果網絡環境要求報文不能分片,推薦使用傳輸模式。

下面以隧道模式下ESP封裝爲例,來對總舵和分舵之間的GRE隧道進行加密保護。首先給出總舵網關FWA和分舵網關FWB的關鍵配置。 

關鍵配置

FWA

FWB

GRE配置

interface Tunnel1

 ip address 10.1.1.1 255.255.255.0

 tunnel-protocol gre   

source 1.1.1.1   //使用公網地址封裝

 destination 3.3.3.3  //使用公網地址封裝

如果使用私網地址進行封裝,進行如下配置:

interface LoopBack1

 ip address 172.16.0.1 255.255.255.0

interface Tunnel1

 ip address 10.1.1.1 255.255.255.0

 tunnel-protocol gre   

source LoopBack 1

 destination 172.16.0.2  //FWBLoopback1接口地址

interface Tunnel1

 ip address 10.1.1.2 255.255.255.0

 tunnel-protocol gre  

source 3.3.3.3   //使用公網地址封裝

 destination 1.1.1.1  //使用公網地址封裝

如果使用私網地址進行封裝,進行如下配置:

interface LoopBack1

 ip address 172.16.0.2 255.255.255.0

interface Tunnel1

 ip address 10.1.1.2 255.255.255.0

 tunnel-protocol gre   

source LoopBack 1

 destination 172.16.0.1  //FWALoopback1接口地址

路由配置

ip route-static 0.0.0.0 0.0.0.0 1.1.1.2  //假設下一跳爲1.1.1.2

ip route-static 192.168.1.0 255.255.255.0 Tunnel1

ip route-static 0.0.0.0 0.0.0.0 3.3.3.1  //假設下一跳爲3.3.3.1

ip route-static 192.168.0.0 255.255.255.0 Tunnel1

ACL

acl number 3000.

 rule 5 permit ip source 1.1.1.1 0 destination 3.3.3.3 0 //定義GRE封裝後的源地址和目的地址

如果使用私網地址進行封裝,此處的源地址應爲172.16.0.1,目的地址應爲172.16.0.2

acl number 3000

 rule 5 permit ip source 3.3.3.3 0 destination 1.1.1.1 0  //定義GRE封裝後的源地址和目的地址

如果使用私網地址進行封裝,此處的源地址應爲172.16.0.2,目的地址應爲172.16.0.1

IKE安全提議

ike proposal 1   //使用默認參數

ike proposal 1   //使用默認參數

IKE對等體

ike peer fwb

 pre-shared-key tiandihui

 ike-proposal 1

 remote-address 3.3.3.3

ike peer fwa

 pre-shared-key tiandihui

 ike-proposal 1

 remote-address 1.1.1.1

IPSec安全提議

ipsec proposal 1

 transform esp

 encapsulation-mode tunnel

 esp authentication-algorithm sha1

 esp encryption-algorithm aes

ipsec proposal 1

 transform esp

 encapsulation-mode tunnel

 esp authentication-algorithm sha1

 esp encryption-algorithm aes

IPSec安全策略

ipsec policy policy1 1 isakmp

 security acl 3000

 ike-peer fwb

 proposal 1

ipsec policy policy1 1 isakmp

 security acl 3000

 ike-peer fwa

 proposal 1

應用IPSec安全策略

interface GigabitEthernet0/0/1

 ip address 1.1.1.1 255.255.255.0

 ipsec policy policy1

interface GigabitEthernet0/0/1

 ip address 3.3.3.3 255.255.255.0

 ipsec policy policy1

 

從上面的表格可以看出,配置GRE over IPSec時,與單獨配置GREIPSec沒有太大的區別。唯一需要注意的地方是,通過ACL定義需要保護的數據流時,不能再以總舵和分舵內部私網地址爲匹配條件,而是必須匹配經過GRE封裝後的報文,即定義報文的源地址爲GRE隧道的源地址,目的地址爲GRE隧道的目的地址

配置完成後,在分舵中的PC可以ping通總舵的PC,在Internet上抓包只能看到加密後的信息,無法獲取到真實的ping消息:


 

 

在總舵的網關FWA上可以查看到如下會話信息,會話信息中包括了原始的ICMP報文、第一層封裝即GRE封裝、第二層封裝即IPSec封裝,其中GRE封裝和IPSec封裝使用了相同的源和目的地址。

[FWA] display firewall session table

Current Total Sessions : 4

  udp  VPN:public --> public 3.3.3.3:500-->1.1.1.1:500

  esp  VPN:public --> public 3.3.3.3:0-->1.1.1.1:0

  gre  VPN:public --> public 3.3.3.3:0-->1.1.1.1:0

  icmp  VPN:public --> public 192.168.1.2:2862-->192.168.0.2:2048

介紹完GRE over IPSec後,下面來看一下使用IPSec來保護L2TP隧道的情況。

分舵通過L2TP over IPSec接入總舵

在之前的L2TP系列貼子中我們介紹了L2TP有三種類型,分別是Client-Initiated VPNNAS-Initiated VPNLAC-Auto-Initiated VPN。其中Client-Initiated VPN屬於單獨的移動用戶遠程接入,我們將在下文中的遠程接入部分介紹。NAS-Initiated VPNLAC-Auto-Initiated VPN都可以實現兩個網絡之間的通信,在這裏我們重點以NAS-Initiated VPN爲例來介紹。

如下圖所示,總舵網關FWA和分舵網關FWB已經建立了NAS-Initiated方式的L2TP隧道,現需要在L2TP隧道之外再封裝IPSec隧道,對總舵和分舵的通信進行加密保護。


 

 

IPSecL2TP隧道進行封裝時,傳輸模式和隧道模式的封裝效果如下:

傳輸模式

在傳輸模式中,AH頭或ESP頭被插入到新的IP頭與UDP頭之間:


 

 

傳輸模式不改變L2TP封裝後的報文頭,IPSec隧道的源和目的地址就是L2TP封裝後的源和目的地址。

隧道模式

在隧道模式中,AH頭或ESP頭被插到新的IP頭之前,另外再生成一個新的報文頭放到AH頭或ESP頭之前:


 

 

隧道模式使用新的IPSec報文頭來封裝經過L2TP封裝後的消息,封裝後的消息共有三個報文頭:原始報文頭、L2TP報文頭和IPSec報文頭,Internet上的設備根據最外層的IPSec報文頭來轉發該消息。

 

L2TP over IPSec中,由於L2TP已經進行了一次封裝,原始報文就是兩個網絡之間的報文,所以無論IPSec採用傳輸模式還是隧道模式,都可以保護兩個網絡之間通信的消息。

注意:隧道模式與傳輸模式相比多增加了新的IPSec報文頭,導致報文長度更長,更容易導致分片。如果網絡環境要求報文不能分片,推薦使用傳輸模式。

下面以隧道模式下ESP封裝爲例,來對總舵和分舵之間的L2TP隧道進行加密保護。首先給出總舵網關FWA和分舵網關FWB的關鍵配置。

關鍵配置

FWALNS

FWBLAC

L2TP配置

l2tp enable

interface Virtual-Template1

 ppp authentication-mode chap

ip address 10.1.1.1 255.255.255.0

remote address pool 0

l2tp-group 1

 tunnel authentication

 tunnel password cipher Tiandihui123

 allow l2tp virtual-template 1 remote lac

 tunnel name lns

aaa

local-user l2tpuser password cipher Password1

local-user l2tpuser service-type ppp

ip pool 0 192.168.1.2 192.168.1.10

l2tp enable

l2tp-group 1

 tunnel authentication

tunnel password cipher Tiandihui123

 start l2tp ip 1.1.1.1 fullusername l2tpuser

 tunnel name lac

路由配置

ip route-static 0.0.0.0 0.0.0.0 1.1.1.2  //假設下一跳爲1.1.1.2

ip route-static 0.0.0.0 0.0.0.0 3.3.3.1  //假設下一跳爲3.3.3.1

ACL

acl number 3000

 rule 5 permit ip source 1.1.1.1 0 destination 3.3.3.3 0 //定義L2TP封裝後的源地址和目的地址

acl number 3000

 rule 5 permit ip source 3.3.3.3 0 destination 1.1.1.1 0  //定義L2TP封裝後的源地址和目的地址

IKE安全提議

ike proposal 1   //使用默認參數

ike proposal 1   //使用默認參數

IKE對等體

ike peer fwb

 pre-shared-key tiandihui

 ike-proposal 1

 remote-address 3.3.3.3

ike peer fwa

 pre-shared-key tiandihui

 ike-proposal 1

 remote-address 1.1.1.1

IPSec安全提議

ipsec proposal 1

 transform esp

 encapsulation-mode tunnel

 esp authentication-algorithm sha1

 esp encryption-algorithm aes

ipsec proposal 1

 transform esp

 encapsulation-mode tunnel

 esp authentication-algorithm sha1

 esp encryption-algorithm aes

IPSec安全策略

ipsec policy policy1 1 isakmp

 security acl 3000

 ike-peer fwb

 proposal 1

ipsec policy policy1 1 isakmp

 security acl 3000

 ike-peer fwa

 proposal 1

應用IPSec安全策略

interface GigabitEthernet0/0/1

 ip address 1.1.1.1 255.255.255.0

 ipsec policy policy1

interface GigabitEthernet0/0/1

 ip address 3.3.3.3 255.255.255.0

 ipsec policy policy1

 



GRE over IPSec類似,在L2TP over IPSec中定義ACL時,不能再以總舵和分舵內部私網地址爲匹配條件,而是必須匹配經過L2TP封裝後的報文,即定義報文的源地址爲L2TP隧道的源地址,目的地址爲L2TP隧道的目的地址

配置完成後,分舵中的PPPoE Client發起撥號訪問,分舵網關FWB和總舵網關FWA先進行IPSec協商,建立IPSec隧道,然後在IPSec隧道的保護下進行L2TP協商,建立L2TP隧道。同樣,在Internet上抓包也只能看到加密後的信息,無法獲取到L2TP隧道中傳輸的消息。

通過部署IPSecGREL2TP隧道進行加密保護,天地會這些老舊的分舵又煥發了青春。接下來天地會又面臨新的問題:總舵的堂主經常會出差到各個分舵指導工作,而總舵中有一些緊急幫務需要他們及時處理。如果堂主恰巧在分舵中,就可以通過分舵接入總舵;但是如果堂主正在路途中,就只能通過Client-Initiated VPN方式的L2TP接入總舵,但是此時通信的安全性無法保證。而藉助於IPSec,就可以保證移動用戶遠程接入場景中的通信安全。

移動用戶使用L2TP over IPSec遠程接入總舵

L2TP中,Client-Initiated VPN方式專門適用於移動用戶遠程接入的場景。在此基礎上,使用IPSec來對L2TP隧道進行加密保護,這也是一種L2TP over IPSec的應用。

如下圖所示,總舵網關FWA和分舵網關FWB已經建立了Client-Initiated VPN方式的L2TP隧道,現需要在L2TP隧道之外再封裝IPSec隧道,對總舵和分舵的通信進行加密保護。


 

 

堂主可以使用Windows系統自帶的客戶端來撥號,也可以使用第三方的撥號軟件(如華爲VPN Client軟件)來撥號。如果使用Windows系統自帶的客戶端來撥號,因爲其只支持傳輸模式,所以在總舵網關FWA上也只能配置傳輸模式的IPSecIPSecClient-Initiated VPN方式的L2TP隧道的封裝效果與上文介紹過的NAS-Initiated VPN方式相同,此處不再贅述。

下面以堂主使用Windows 7系統自帶的客戶端撥號接入總舵爲例,給出總舵網關FWAL2TP Client的關鍵配置。

FWALNS

L2TP

l2tp enable

interface Virtual-Template1

 ppp authentication-mode chap

ip address 10.1.1.1 255.255.255.0

remote address pool 0

l2tp-group 1  //使用L2TP1

 undo tunnel authentication  //關閉隧道驗證

 allow l2tp virtual-template 1  //L2TP1中無需設置隧道對端名稱

aaa

local-user l2tpuser password cipher Password1

local-user l2tpuser service-type ppp

ip pool 0 192.168.1.2 192.168.1.10

ACL

acl number 3000

 rule 5 permit udp source-port eq 1701  //定義L2TP封裝後的源端口

IKE安全提議

ike proposal 1

 encryption-algorithm 3des-cbc

  dh group2

IKE對等體

ike peer client

 pre-shared-key tiandihui

  ike-proposal 1

IPSec安全提議

ipsec proposal 1

 transform esp

 encapsulation-mode transport  //使用傳輸模式

 esp authentication-algorithm sha1

  esp encryption-algorithm 3des

IPSec安全策略

ipsec policy-template tem1 1

security acl 3000

 ike-peer client

 proposal 1

ipsec policy policy1 1 isakmp template tem1

應用IPSec安全策略

interface GigabitEthernet0/0/1

 ip address 1.1.1.1 255.255.255.0

  ipsec policy policy1

L2TP Client

IPsec Policy Agent狀態:已啓動

用戶名:l2tpuser

密碼:Password1

-----------------------------------------

目的地的主機名或IP地址:1.1.1.1

VPN類型:使用IPsec的第2層隧道協議(L2TP/IPSec)

身份驗證:CHAP

-----------------------------------------

IKE加密算法:3DES

IKE完整性算法:SHA1

DH組:中(2)

ESP加密算法:3DES

ESP完整性算法:SHA1

預共享密鑰:tiandihui

注意:此處只給出了Windows 7系統自帶的客戶端上默認的IPSec配置,如需調整這些IPSec參數,請在Windows 7系統的“控制面板—>系統和安全—>管理工具—>本地安全策略”中設置IP安全策略。

 

因爲堂主都是在Internet上動態接入,公網IP地址不確定,所以在總舵網關FWA上定義ACL時,以源端口1701來匹配經過L2TP封裝後的報文。此外,由於Windows系統自帶的客戶端不支持隧道驗證,所以還需要在總舵網關FWA上關閉L2TP的隧道驗證功能。

配置完成後,堂主就可以使用Windows 7系統自帶的客戶端隨時隨地接入總舵,在IPSec隧道的保護下處理緊急事務。而在Internet上抓包也只能看到加密後的信息,無法獲取到L2TP隧道中傳輸的消息。

雖然IPSec可以對Client-Initiated VPN方式的L2TP隧道加密,但是L2TPIPSec一塊使用,配置起來較爲繁瑣。其實對於遠程接入的場景,還可以使用一種輕量級的VPNSSL VPN來實現。部署SSL VPN後,堂主直接使用瀏覽器就可以接入到總舵,操作簡單效果直觀。關於SSL VPN的內容,我們將在IPSec系列技術貼完成後推出。

至此,IPSec的主要應用場景都介紹完畢。藉助IPSec,天地會解決了一個又一個的問題,終於搭建起來了涵蓋分舵接入、移動用戶遠程接入的加密通信網絡。網絡雖然搭建起來,但是還面臨穩定運行的問題,下一篇我們就來介紹IKE對等體檢測、主備鏈路、隧道化鏈路等提高可靠性的內容,這也將是IPSec系列的最後一篇貼子,敬請期待。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章