此篇博客正在介紹的是下圖中的Dynamic P2P GRE OVER IPSEC VPN:
為什么出現這種動態的GRE OVER IPSEC VPN技術呢?
首先在前面幾篇博客中已經介紹過了,動態是為了保證在不更改總部路由器的配置的情況下,可以隨意的增加和刪除分部vpn路由器,IPSEC是為了保證數據傳輸的私密性,對於一個基本vpn通道來講,這樣已經完全可以滿足要求了,但是為了使得總部路由器可以和分部路由器之間進行路由的傳遞,從而又加入了GRE,也就形成了現在的一種技術,Dynamic GRE OVER IPSEC VPN。我們都知道GRE是一個點對點(經常說的P2P)的模式,所以它也是有缺陷的,在下一篇博客中會講一種MGRE的協議可以彌補這種缺陷。接下來先說一下GRE技術的具體配置。
拓撲結構圖如下:
拓撲描述:IOU2是總部的vpn路由器,IOU4是分部的VPN路由器,並且IOU4的出接口是從dhcp中動態獲取的地址,為了實現效果,所以設置了一個回環接口lo0地址為3.3.3.3用來作為隧道的地址,IOU3是用路由器模擬的一個internet網絡,同樣也是一台DHCP服務器,IOU1和IOU5分別是公司的內網。現在要通過技術實現內部網絡的路由交換和互通。
步驟一:基礎網絡配置
IOU1的配置:
IOU1#configure terminal 進入配置模式 IOU1(config)#inter e0/0 進入接口配置模式 IOU1(config-if)#ip add 10.1.1.5 255.255.255.0 配置接口的ip地址 IOU1(config-if)#no shutdown 啟動接口 IOU1(config-if)#ip route 0.0.0.0 0.0.0.0 10.1.1.1 配置默認路由指向10.1.1.5,也就是路由表中沒有相應匹配項時,從10.1.1.5接口轉發
IOU2的配置:
IOU2#configure terminal IOU2(config)#inter e0/1 IOU2(config-if)#ip add 12.1.1.1 255.255.255.0 IOU2(config-if)#no shutdown IOU2(config-if)#inter e0/0 IOU2(config-if)#ip add 10.1.1.1 255.255.255.0 IOU2(config-if)#no shutdown IOU2(config-if)#ip route 0.0.0.0 0.0.0.0 12.1.1.2
IOU3的配置:
IOU3#configure terminal IOU3(config)#inter e0/0 IOU3(config-if)#ip add 12.1.1.2 255.255.255.0 IOU3(config-if)#no shutdown IOU3(config-if)#inter e0/1 IOU3(config-if)#ip add 23.1.1.2 255.255.255.0 IOU3(config-if)#no shutdown IOU3(config)#service dhcp 設置為dhcp服務器 IOU3(config)#ip dhcp pool DHCP 進入設置地址池 IOU3(dhcp-config)#default-router 23.1.1.2 設置接受地址的路由器的默認網關為23.1.1.2 IOU3(dhcp-config)#network 23.1.1.0 255.255.255.0 地址池的設置 IOU3(dhcp-config)#exit IOU3(config)#ip dhcp excluded-address 23.1.1.2 從地址池中除去24.1.1.2
IOU4的配置:
IOU4#configure terminal IOU4(config)#inter e0/0 IOU4(config-if)#ip add dhcp IP地址設置成dhcp動態獲取 IOU4(config-if)#no shutdown IOU4(config-if)#inter e0/2 IOU4(config-if)#ip add 192.168.1.3 255.255.255.0 IOU4(config-if)#no shutdown
IOU5的配置:
IOU5#configure terminal 進入配置模式 IOU5(config)#inter e0/0 進入接口配置模式 IOU5(config-if)#ip add 192.168.1.4 255.255.255.0 配置接口的ip地址 IOU5(config-if)#no shutdown 啟動接口 IOU5(config-if)#ip route 0.0.0.0 0.0.0.0 192.168.1.3
測試路由連通性:
用IOU2去ping 23.1.1.1是可以ping通的,但是去ping 192.168.1.4是ping不通的:

1 IOU2#ping 23.1.1.1 2 Type escape sequence to abort. 3 Sending 5, 100-byte ICMP Echos to 23.1.1.1, timeout is 2 seconds: 4 !!!!! 5 Success rate is 100 percent (5/5), round-trip min/avg/max = 6/6/7 ms 6 IOU2# 7 IOU2#ping 192.168.1.3 8 Type escape sequence to abort. 9 Sending 5, 100-byte ICMP Echos to 192.168.1.3, timeout is 2 seconds: 10 UUUUU 11 Success rate is 0 percent (0/5) 12 IOU2#
步驟二:IPSEC的配置
IOU2的配置:
IOU2(config)#crypto isakmp policy 10 IOU2(config-isakmp)#encryption 3des IOU2(config-isakmp)#hash md5 IOU2(config-isakmp)#group 1 IOU2(config-isakmp)#authentication pre-share IOU2(config-isakmp)#exit IOU2(config)#crypto isakmp key 0 huwentao address 0.0.0.0 對端地址要設置成所有地址 IOU2(config)#crypto ipsec transform-set IPSEC esp-3des esp-md5-hmac IOU2(cfg-crypto-trans)#exit IOU2(config)#crypto dynamic-map dymap 10 設置動態map IOU2(config-crypto-map)#set transform-set IPSEC IOU2(config-crypto-map)#exit IOU2(config)#crypto map mymap 10 ipsec-isakmp dynamic dymap IOU2(config)#inter e0/1 IOU2(config-if)#crypto map mymap *Jul 23 12:54:39.519: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON IOU2(config-if)#exit IOU2(config)#
IOU4的配置(正常的GRE over ipsec的配置):
IOU4(config)#crypto isakmp policy 10 IOU4(config-isakmp)#encryption 3des IOU4(config-isakmp)#hash md5 IOU4(config-isakmp)#group 1 IOU4(config-isakmp)#authentication pre-share IOU4(config-isakmp)#exit IOU4(config)#crypto isakmp key 0 huwentao address 12.1.1.1 IOU4(config)#crypto ipsec transform-set IPSEC esp-3des esp-md5-hmac IOU4(cfg-crypto-trans)#exit IOU4(config)#access-list 100 permit gre host 3.3.3.3 host 12.1.1.1 匹配流量為隧道的流量 IOU4(config)#crypto map mymap 10 ipsec-isakmp % NOTE: This new crypto map will remain disabled until a peer and a valid access list have been configured. IOU4(config-crypto-map)#set peer 12.1.1.1 IOU4(config-crypto-map)#set transform-set IPSEC IOU4(config-crypto-map)#match address 100 IOU4(config-crypto-map)#exit IOU4(config)#inter e0/0 IOU4(config-if)#crypto map mymap IOU4(config-if)#exit
步驟三:GRE的配置
IOU2的配置(從此處的配置可以看出,當分部路由器增加的時候,並不是完全的不用配置總部路由器,我們還需要配置他的gre隧道):
IOU2(config)#inter tunnel 1 IOU2(config-if)#tunnel source 12.1.1.1 IOU2(config-if)#tunnel destination 3.3.3.3 目的地址,這個地方也就是傳統的gre的缺點。DMVPN會解決這樣的缺點 IOU2(config-if)#ip add 1.1.1.1 255.255.255.0 IOU2(config-if)#exit IOU2(config)#ip route 3.3.3.3 255.255.255.255 12.1.1.2 這個是默認的配置,雖然說3.3.3.3的路由在公網上面是沒有辦法傳遞的。
IOU4的配置:
IOU4(config)#inter tunnel 1 IOU4(config-if)#ip add 1.1.1.2 255.255.255.0 IOU4(config-if)#tunnel source 3.3.3.3 IOU4(config-if)#tunnel destination 12.1.1.1 IOU4(config-if)#exit
用IOU4去ping 1.1.1.1去觸發ipsec,發現是可以ping通的,而且還建立了ipsec對等體和sa:

1 IOU4#ping 1.1.1.1 2 Type escape sequence to abort. 3 Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds: 4 !!!!! 5 Success rate is 100 percent (5/5), round-trip min/avg/max = 5/5/6 ms 6 IOU4#show ipro 7 IOU4#show cry 8 IOU4#show crypto is 9 IOU4#show crypto isakmp peer 10 IOU4#show crypto isakmp peers 11 Peer: 12.1.1.1 Port: 500 Local: 23.1.1.4 12 Phase1 id: 12.1.1.1 13 IOU4#show crypto isakmp sa 14 IPv4 Crypto ISAKMP SA 15 dst src state conn-id status 16 12.1.1.1 23.1.1.4 QM_IDLE 1001 ACTIVE 17 18 IPv6 Crypto ISAKMP SA 19 20 IOU4#
由於雙方只是建立了隧道,還沒有交換路由信息,因此用IOU5去ping 10.1.1.1是ping不通的。

1 IOU5#ping 10.1.1.1 2 Type escape sequence to abort. 3 Sending 5, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds: 4 ..... 5 Success rate is 0 percent (0/5) 6 IOU5#
步驟四:配置動態路由
IOU2的配置:
IOU2(config)#router eigrp 1 配置eigre 宣告網絡,並且關掉路由匯總功能,用來傳遞兩端路由 IOU2(config-router)#network 10.1.1.0 0.0.0.255 IOU2(config-router)#network 1.1.1.1 0.0.0.255 IOU2(config-router)#no auto-summary IOU2(config-router)#exit
IOU4的配置:
IOU4(config)#router eigrp 1 IOU4(config-router)#network 1.1.1.2 0.0.0.0 *Jul 23 13:23:51.739: %DUAL-5-NBRCHANGE: EIGRP-IPv4 1: Neighbor 1.1.1.1 (Tunnel1) is up: new adjacency IOU4(config-router)#network 192.168.1.0 0.0.0.255 IOU4(config-router)#no auto-summary IOU4(config-router)#exit
查看IOU4的路由表發現,已經有了10.1.1.0的網絡,是通過1.1.1.1這個隧道接口傳遞過去的。

1 IOU4(config)#do show ip route 2 Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP 3 D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 4 N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 5 E1 - OSPF external type 1, E2 - OSPF external type 2 6 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 7 ia - IS-IS inter area, * - candidate default, U - per-user static route 8 o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP 9 a - application route 10 + - replicated route, % - next hop override 11 12 Gateway of last resort is 23.1.1.2 to network 0.0.0.0 13 14 S* 0.0.0.0/0 [254/0] via 23.1.1.2 15 1.0.0.0/8 is variably subnetted, 2 subnets, 2 masks 16 C 1.1.1.0/24 is directly connected, Tunnel1 17 L 1.1.1.2/32 is directly connected, Tunnel1 18 3.0.0.0/32 is subnetted, 1 subnets 19 C 3.3.3.3 is directly connected, Loopback0 20 10.0.0.0/24 is subnetted, 1 subnets 21 D 10.1.1.0 [90/26905600] via 1.1.1.1, 00:00:34, Tunnel1 22 23.0.0.0/8 is variably subnetted, 2 subnets, 2 masks 23 C 23.1.1.0/24 is directly connected, Ethernet0/0 24 L 23.1.1.4/32 is directly connected, Ethernet0/0 25 192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks 26 C 192.168.1.0/24 is directly connected, Ethernet0/1 27 L 192.168.1.3/32 is directly connected, Ethernet0/1 28 IOU4(config)#
測試結果:
在IOU5上面ping 10.1.1.5,是可以ping通的,說明配置成功。
IOU5# IOU5#ping 10.1.1.5 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.1.1.5, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/6 ms IOU5#