聲明:這是我在模擬器中做的實驗,實際中以具體組網需求為准。
一.采用手工方式建立保護IPV4報文的IPSec隧道
1.組網圖
2.組網需求
在RTA和RTC之間建立一條IPsec隧道,對Host 1所在的子網(10.138.1.0/16)與PC1所在的子網(10.139.1.2/16)之間的數據流進行安全保護。具體要求如下:
-
封裝形式為隧道模式
-
安全協議采用ESP協議
-
加密算法采用128比特的AES,認證算法采用SHA1
-
手工方式建立IPSec SA
-
驗證配置
3.配置步驟
RTA配置:
//IP地址在組網圖上面已經標注,這里關於各接口的IP地址的配置就不寫了
<H3C> sys
[H3C]sys RTA
//創建一條ACL,定義要保護10.138.0.0/16 與 10.139.0.0/16網絡之間的IPV4數據
[RTA]acl advanced 3001
[RTA-acl-ipv4-adv-3001]rule permit ip source 10.138.0.0 0.0.255.255 destination 10.139.0.0 0.0.255.255
//這里需要配置HOST1到PC1的靜態路由,就不寫配置了,后面將路由表貼出來
//創建安全提議tran1,這里需要注意創建安全提議的命令,書上寫的是ipsec proposal tran1 實際中是下面的命令
[RTA]ipsec transform-set tran1
//配置安全協議為隧道模式
[RTA-ipsec-transform-set-tran1]encapsulation-mode tunnel
//配置采用安全協議為esp
[RTA-ipsec-transform-set-tran1]protocol esp
//配置esp協議采用的加密算法為采用128bit的aes,認證算法為sha1
[RTA-ipsec-transform-set-tran1]esp encryption-algorithm aes-cbc-128
[RTA-ipsec-transform-set-tran1]esp authentication-algorithm sha1
//創建一條手工方式IPSec安全策略,名稱為 map1,序列號為 10
[RTA]ipsec policy map1 10 manual
//指定引用ACL 3001
[RTA-ipsec-policy-manual-map1-10]security acl 3001
//指定引用安全提議tran1
[RTA-ipsec-policy-manual-map1-10]transform-set tran1
//指定IPSec隧道對端IP地址為 200.1.1.1
[RTA-ipsec-policy-manual-map1-10]remote-address 200.1.1.1
//配置esp出方向SPI為12345,入方向SPI為54321
//SPI,一個32比特的值,用於區分相同IPSec協議、相同目的地的不同SA
//安全聯盟(SA)是發送者和接收者兩個IPSec通信實體之間經過協商建立的一個提供安全服務的單向邏輯“連接”,
//是與給定的一個網絡連接或一組網絡連接相關聯的安全信息參數的集合。SA可以為AH協議創建,也可以為ESP協議創
//建。
[RTA-ipsec-policy-manual-map1-10]sa spi outbound esp 12345
[RTA-ipsec-policy-manual-map1-10]sa spi inbound esp 54321
//配置esp協議 出方向SA密鑰為明文字符串abcdefg,入方向SA密鑰為明文字符串gfedcba
[RTA-ipsec-policy-manual-map1-10]sa string-key outbound esp simple abcdefg
[RTA-ipsec-policy-manual-map1-10]sa string-key inbound esp simple gfedcba
//在接口s1/0上應用IPSec安全策略map1
[RTA-ipsec-policy-manual-map1-10]int s1/0
[RTA-Serial1/0]ipsec apply policy map1
RTC配置:
<H3C>sys
[H3C]sys RTC
//配置一條ACL定義要保護網絡10.139.0.0/16到10.138.0.0/16之間的IPV4數據
[RTC]acl advanced 3001
[RTC-acl-ipv4-adv-3001]rule permit ip source 10.139.0.0 0.0.255.255 destination 10.138.0.0 0.0.255.255
//這里應當配置一條10.139.0.0/16到10.138.0.0/16網絡的靜態路由
[RTC]ip route-static 10.138.0.0 255.255.0.0 200.1.1.1
//創建安全提議tran1
[RTC]ipsec transform-set tran1
//配置安全協議對IP報文封裝形式為隧道模式
[RTC-ipsec-transform-set-tran1]encapsulation-mode tunnel
//配置采用的安全協議為ESP
[RTC-ipsec-transform-set-tran1]protocol esp
//配置ESP協議采用加密算法為128比特的AES,認證算法為SHA1
[RTC-ipsec-transform-set-tran1]esp encryption-algorithm aes-cbc-128
[RTC-ipsec-transform-set-tran1]esp authentication-algorithm sha1
//創建一條手工方式的安全策略,名稱為use1,序列號為10
[RTC]ipsec policy use1 10 manual
//指定引用ACL3001
[RTC-ipsec-policy-manual-use1-10]security acl 3001
//指定引用的IPSec安全提議為tran1
[RTC-ipsec-policy-manual-use1-10]transform-set tran1
//指定對端IP地址為100.1.1.1
[RTC-ipsec-policy-manual-use1-10]remote-address 100.1.1.1
//配置ESP協議出方向SPI為54321,入方向SPI為12345
[RTC-ipsec-policy-manual-use1-10]sa spi outbound esp 54321
[RTC-ipsec-policy-manual-use1-10]sa spi inbound esp 12345
//配置esp協議 入方向SA密鑰為明文字符串abcdefg,出方向SA密鑰為明文字符串gfedcba
[RTC-ipsec-policy-manual-use1-10]sa string-key inbound esp simple abcdefg
[RTC-ipsec-policy-manual-use1-10]sa string-key outbound esp simple gfedcba
//在接口s1/0上引用IPSec安全策略use1
[RTC-Serial1/0]ipsec apply policy use1
驗證配置:
RTA路由表:
RTC路由表:
HOST1 Ping PC1結果:
RTA上手工創建的IPSec SA:
IPsec處理的報文的統計信息:
應當說明的一點是,在RTA以及RTC s1/0端口均抓不到IPSec報文,不知道是我方法的問題還是我還沒有學到的原理問題,這里先將疑問寫到這里,有空研究研究。
二、采用IKE方式建立保護IPv4報文的IPSec隧道
1.組網圖
2.組網需求
在RTA與RTB之間建立一條IPSec隧道,對Host1所在子網(10.138.0.0/16)與Host2所在子網(10.139.0.0/16)之間的數據流進行保護,具體有如下要求:
- 封裝形式為隧道模式
- 安全協議采用ESP協議
- 加密算法采用128比特的AES,認證算法采用SHA1
- IKE協商方式建立IPSec SA
- 驗證配置
3.配置步驟
//各個設備各個接口的IP地址在圖中已經標明,這里就不在寫出來
RTA配置:
<H3C>sys
[H3C]sys RTA
//配置一條ACL,定義要保護10.138.0.0/16子網到10.139.0.0/16子網之間的數據流
[RTA]acl advanced 3101
[RTA-acl-ipv4-adv-3101]rule permit ip source 10.138.0.0 0.0.255.255 destination 10.139.0.0 0.0.255.255
[RTA-acl-ipv4-adv-3101]quit
//配置到達Host2子網的靜態路由
[RTA]ip route-static 10.139.0.0 255.255.0.0 100.1.1.2
//創建IPSec安全提議tran_a
[RTA]ipsec transform-set tran_a
//配置安全協議對IP報文的封裝為隧道模式
[RTA-ipsec-transform-set-tran_a]encapsulation-mode tunnel
//配置采用安全協議為ESP
[RTA-ipsec-transform-set-tran_a]protocol esp
//配置加密算法為128比特的AES,認證算法為SHA1
[RTA-ipsec-transform-set-tran_a]esp encryption-algorithm aes-cbc-128
[RTA-ipsec-transform-set-tran_a]esp authentication-algorithm sha1
[RTA-ipsec-transform-set-tran_a]quit
//創建並配置 ike keychain,名稱為keychain_a
//ike keychain命令用來創建並進入一個IKE keychain視圖,該視圖用於配置IKE對等體的密鑰信息。
//undo ike keychain命令用來刪除指定的IKE keychain以及IKE對等體的密鑰信息。
//注:這里配置的ike keychain 相當於參考資料路由與交換技術第一卷(下)配置IPSec時的配置IPSec對等體(IPSec peer)步驟
[RTA]ike keychain keychain_a
//配置對端(IP:200.1.1.1/24)使用的預共享密鑰為明文qjgjybjxcygwgr
[RTA-ike-keychain-keychain_a]pre-shared-key address 200.1.1.1 255.255.255.0 key simple qjgjybjxcygwgr
[RTA-ike-keychain-keychain_a]quit
//創建並配置ike profile,名稱為profile_a
//ike profile命令用來創建一個IKE profile,並進入IKE profile視圖。
//undo ike profile命令用來刪除指定的 IKE profile。
//match local address命令用來限制 IKE profile的使用范圍,即IKE profile只能用於指定地址或指定接口的地址上的IKE協商。
//undo match local address命令用來取消對IKE profile使用范圍的限制。
[RTA]ike profile profile_a
[RTA-ike-profile-profile_a]keychain keychian_a
[RTA-ike-profile-profile_a]match remote identity address 200.1.1.1 255.255.255.0
[RTA-ike-profile-profile_a]quit
//創建一條IKE協商方式的IPSec安全策略,名稱為map1,序列號為10
[RTA]ipsec policy map1 10 isakmp
//指定引用ACL 3001
[RTA-ipsec-policy-isakmp-map1-10]security acl 3001
//指定IPSec本端地址為100.1.1.1,對端地址為200.1.1.1
[RTA-ipsec-policy-isakmp-map1-10]local-address 100.1.1.1
[RTA-ipsec-policy-isakmp-map1-10]remote-address 200.1.1.1
//指定安全策略map1引用profile 為profile_a
[RTA-ipsec-policy-isakmp-map1-10]ike-profile profile_a
[RTA-ipsec-policy-isakmp-map1-10]quit
//在接口s1/0上應用安全策略map1
[RTA-Serial1/0]ip address 100.1.1.1 255.255.255.0
[RTA-Serial1/0]ipsec apply policy map1
[RTA-Serial1/0]quit
RTB配置:
<H3C>sys
[H3C]sys RTB
//配置一條ACL,定義保護10.139.0.0/16子網到10.138.0.0/16子網之間的數據流
[RTB]acl advanced 3001
[RTB-acl-ipv4-adv-3001]rule permit ip source 10.139.0.0 0.0.255.255 destination 10.138.0.0 0.0.255.255
//配置到達Host1所在子網的靜態路由
[RTB]ip route-static 10.138.0.0 255.255.0.0 200.1.1.1
//創建IPSec安全提議tran_a
[RTB]ipsec transform-set tran_a
//配置安全協議對IP報文的封裝形式為隧道模式
[RTB-ipsec-transform-set-tran_b]encapsulation-mode tunnel
//配置安全協議為ESP
[RTB-ipsec-transform-set-tran_b]protocol esp
//配置安全協議采用加密算法為128比特的AES,認證算法為SHA1
[RTB-ipsec-transform-set-tran_b]esp encryption-algorithm aes-cbc-128
[RTB-ipsec-transform-set-tran_b]esp authentication-algorithm sha1
//創建並配置IKE keychain,名稱為keychain_a
[RTB]ike keychain keychain_a
[RTB-ike-keychain-keychain_b]pre-shared-key address 100.1.1.1 255.255.255.0 key simple qjgjybjxcygwgr
//創建並配置IKE profile,名稱為profile_a
[RTB]ike profile profile_a
[RTB-ike-profile-profile_b]keychain keychain_a
[RTB-ike-profile-profile_b]match remote identity address 100.1.1.1 255.255.255.0
//創建一條IKE協商方式的安全策略,名稱為use1,序列號為10
[RTB]ipsec policy use1 10 isakmp
//指定安全策略引用ACL 3001
[RTB-ipsec-policy-isakmp-use1-10]security acl 3001
//指定引用安全的安全提議為tran_a
[RTB-ipsec-policy-isakmp-use1-10]transform-set tran_a
//指定IPSec隧道本端地址為200.1.1.1,對端地址為100.1.1.1
[RTB-ipsec-policy-isakmp-use1-10]local-address 200.1.1.1
[RTB-ipsec-policy-isakmp-use1-10]remote-address 100.1.1.1
//指定引用profile為profile_a
[RTB-ipsec-policy-isakmp-use1-10]ike-profile profile_a
[RTB-ipsec-policy-isakmp-use1-10]quit
//在接口s1/0應用IPSec安全策略use1
[RTB-Serial1/0]ip address 200.1.1.1 255.255.255.0
[RTB-Serial1/0]ipsec apply policy use1
[RTB-Serial1/0]quit
4.驗證配置
RTA與RTB之間沒有報文通過時使用命令display ipsec sa是沒有任何輸出的
ps:在配置成功之前我發現子網10.138.0.0/16與子網10.139.0.0/16之間無法正常通信,使用命令display ipsec statustics命令查詢發現是因為找不到IPSec SA而引起的丟包,
於是在使用display ipsec policy顯示IPSec安全策略信息發現RTB的安全策略配置信息有誤,修改一下,使用RTB ping -a 10.139.1.1 10.138.1.1 有輸出信息,至此配置成功。
RTA協商生成的IPSec SA
RTB協商生成的IPSec SA
三、配置IPSec反向路由注入
組網圖:
組網需求:
企業分支通過IPSec VPN訪問企業總部
- 總部網關RTA與分支RTB、RTC之間建立IPSec隧道,對總部網絡1.1.1.0/24與分支網絡2.2.2.0/24和3.3.3.0/24之間的數據進行保護
- 使用IKE協商方式建立IPSec SA,采用ESP協議,加密算法為DES,認證算法為SHA1
- IKE協商采用預共享密鑰認證方式、3DES加密算法、SHA1認證算法
- 在RTA上開啟IPSec反向路由注入功能,實現總部到分部之間的靜態路由隨IPSec SA的建立而動態生成
配置步驟
各設備各個接口的IP地址如圖所示,下面就不寫了。
RTA配置:
//創建並配置安全提議,名稱為tran_a,采用ESP安全協議,加密算法為DES,認證算法為SHA1
<H3C>sys
[H3C]sys RTA
[RTA]ipsec transform-set tran_a
[RTA-ipsec-transform-set-tran_a]encapsulation-mode tunnel
[RTA-ipsec-transform-set-tran_a]protocol esp
[RTA-ipsec-transform-set-tran_a]esp encryption-algorithm des
[RTA-ipsec-transform-set-tran_a]esp authentication-algorithm sha1
[RTA-ipsec-transform-set-tran_a]quit
//配置IPSec安全策略模板,名稱為temp_a 順序號為1
//ipsec { ipv6-policy-template | policy-template } template-name seq-number
//undo ipsec { ipv6-policy-template | policy-template } template-name [ seq-number ]
[RTA]ipsec policy-template temp_a 1
[RTA-ipsec-policy-template-temp_a-1]transform-set tran_a
//配置IPSec反向路由注入功能
//reverse-route dynamic命令用來開啟IPsec反向路由注入功能 undo reverse-route dynamic命令用來關閉IPsec反向路由注入功能
//reverse-route preference命令用來設置IPsec反向路由注入功能生成的靜態路由的優先級 undo reverse-route preference命令用來恢復缺省情況
//reverse-route tag命令用來設置IPsec反向路由注入功能生成的靜態路由的Tag值,該值用於標識靜態路由,以便在路由策略中根據Tag值對路由進行靈活的控制 undo reverse-route tag命
令用來恢復缺省情況。
[RTA-ipsec-policy-template-temp_a-1]reverse-route dynamic
[RTA-ipsec-policy-template-temp_a-1]reverse-route preference 100
[RTA-ipsec-policy-template-temp_a-1]reverse-route tag 1000
[RTA-ipsec-policy-template-temp_a-1]quit
//創建並配置IKE協商方式的安全策略,名稱為map_a,基於安全策略模板temp_a
[RTA]ipsec policy map_a 10 isakmp template temp_a
//創建並配置IPSec安全提議1,指定使用預共享密鑰認證方式、加密算法為3DES、認證算法為SHA1
[RTA-ike-proposal-1]encryption-algorithm 3des-cbc
[RTA-ike-proposal-1]authentication-algorithm sha
[RTA-ike-proposal-1]authentication-method pre-share
[RTA-ike-proposal-1]quit
//配置IKE keychain,名稱為keychain_a,指定對端IP為2.2.2.2與3.3.2.2,預共享密鑰為明文201507079
[RTA]ike keychain keychain_a
[RTA-ike-keychain-keychain_a]pre-shared-key address 2.2.2.2 key simple 201507079
[RTA-ike-keychain-keychain_a]pre-shared-key address 3.3.2.2 key simple 201507079
//在接口s1/0引用安全策略map_a
[RTA]int s1/0
[RTA-Serial1/0]ipsec apply policy map_a
[RTA-Serial1/0]quit
RTB配置:
<H3C>sys
[H3C]sys RTB
//創建並配置IPSec安全提議,名稱為tran_a,IP報文封裝形式為隧道模式,安全協議為ESP,加密算法為DES,認證算法為sha1
[RTB]ipsec transform-set tran_a
[RTB-ipsec-transform-set-tran_a]encapsulation-mode tunnel
[RTB-ipsec-transform-set-tran_a]protocol esp
[RTB-ipsec-transform-set-tran_a]esp encryption-algorithm des
[RTB-ipsec-transform-set-tran_a]esp authentication-algorithm sha1
//配置ACL,定義要保護2.2.3.0/24與1.1.2.0/24之間的數據流
[RTB]acl advanced 3001
[RTB-acl-ipv4-adv-3001]rule permit ip source 2.2.3.0 0.0.0.255 destination 1.1.1.0 0.0.0.255
[RTB-acl-ipv4-adv-3001]quit
//創建並配置IPSec安全策略,名稱為map_a,引用安全提議tran_a,引用ACL3001,並制定IPSec隧道的對端地址為1.1.2.1
[RTB]ipsec policy map_a 10 isakmp
[RTB-ipsec-policy-isakmp-map_a-10]transform-set tran_a
[RTB-ipsec-policy-isakmp-map_a-10]security acl 3001
[RTB-ipsec-policy-isakmp-map_a-10]remote-address 1.1.2.1
[RTB-ipsec-policy-isakmp-map_a-10]quit
//創建並配置IKE提議1,認證方式為預共享密鑰,加密算法為3DES,認證算法為SHA1
[RTB]ike proposal 1
[RTB-ike-proposal-1]encryption-algorithm 3des-cbc
[RTB-ike-proposal-1]authentication-algorithm sha
[RTB-ike-proposal-1]authentication-method pre-share
[RTB-ike-proposal-1]quit
//創建並配置IKE keychain,名稱為keychain_a,對端IP地址為1.1.2.1,預共享密鑰為明文201507079
[RTB]ike keychain keychain_a
[RTB-ike-keychain-keychain_a]pre-shared-key address 1.1.2.1 key simple 201507079
[RTB-ike-keychain-keychain_a]quit
//在接口s1/0上應用IPSec安全策略map_a
[RTA]int s1/0
[RTA-Serial1/0]ipsec apply policy map_a
[RTA-Serial1/0]quit
RTC配置:
與RTB配置大同小異
驗證配置:
這里我雖然將RTC配置完成,但是與RTA之間的IPSec 隧道卻未建立成功,這里先留下疑問(日后再來解決此問題)
在RTA使用命令display ip routing-table verbose可以看到IPSec反向路由注入生成的靜態路由,如下圖: