GRE是一项由美国思科公司开发的轻量级隧道协议,它能够将各种网络层协议进行封装到IP包中,通过隧道创建一个虚拟的点到点链路,把两台路由器连接起来,实现数据传输的功能。GRE本身是不加密的,但可以使用IPSEC对GRE中的数据进行保护,即GRE Over IPSEC,我们常用的DM×××也是GRE的一种。
封装:
抓包:
GRE实验
拓扑图:
实验介绍:
R1和R3模拟一家公司在不同两个地方的路由器,R2模拟运营商路由器。R1在北京,R3在上海,要想让上海的员工能够访问北京的服务器,在R1和R3之间建立一条GRE隧道,并启用动态路由协议,实现R1和R3路由器身后的网络能够互通。
网络基本配置:
R1(config)#int f0/0
R1(config-if)#ip add 12.1.1.1255.255.255.0
R1(config-if)#no shut
R1(config-if)#int lo 0
R1(config-if)#ip add 1.1.1.1255.255.255.0
R1(config)#ip route 0.0.0.0 0.0.0.012.1.1.2
R2(config)#int f0/0
R2(config-if)#ip add 12.1.1.2255.255.255.0
R2(config-if)#no shut
R2(config-if)#int f1/0
R2(config-if)#ip add 23.1.1.2255.255.255.0
R2(config-if)#no shut
R3(config)#int f1/0
R3(config-if)#ip add 23.1.1.3255.255.255.0
R3(config-if)#no shut
R3(config-if)#int lo 0
R3(config-if)#ip add 3.3.3.3255.255.255.0
R3(config)#ip route 0.0.0.0 0.0.0.023.1.1.2
GRE配置:
R1:
R1(config)#int tunnel 0
R1(config-if)#ip add 172.16.1.1255.255.255.0
R1(config-if)#tunnel source f0/0
R1(config-if)#tunnel destination23.1.1.3
R3:
R3(config)#int tunnel 0
R3(config-if)#ip add 172.16.1.2255.255.255.0
R3(config-if)#tunnel source f1/0
R3(config-if)#tunnel destination12.1.1.1
测试:
R1#ping 172.16.1.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to172.16.1.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5),round-trip min/avg/max = 56/84/104 ms
动态路由协议:
R1:
R1(config)#router ospf 110
R1(config-router)#net 1.1.1.0 0.0.0.255a 0
R1(config-router)#net 172.16.1.00.0.0.255 a 0
R3:
R3(config)#router ospf 110
R3(config-router)#net 3.3.3.0 0.0.0.255a 0
R3(config-router)#net 172.16.1.00.0.0.255 a 0
测试:
查看OSPF邻居:
R1#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
3.3.3.3 0 FULL/ - 00:00:38 172.16.1.2 Tunnel0
Ping测试:
R1#ping 3.3.3.3 source 1.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to3.3.3.3, timeout is 2 seconds:
Packet sent with a source address of1.1.1.1
!!!!!
Success rate is 100 percent (5/5),round-trip min/avg/max = 44/79/100 ms
可以看到R1和R3身后的网络已经连通了,需要注意,这时的数据都是没有加密的,只要中间有人捕获到这些数据就可以看到里面的内容,是不安全的。可以使用GRE Over IPSEC,即把GRE的数据再封装在IPSEC ×××中。这样数据即被加了密,还可以使用GRE的接口,启用动态路由协议,添加ACL等进行路由控制,比单纯的L2L IPSEC ×××要灵活很多。
附件是GRE的抓包,感兴趣的同学可以下载下来分析。