
正文共:888 字 7 图,预估阅读时间:1 分钟
我们前面介绍了GRE over IPv6隧道的配置方法(配置GRE over IPv6隧道),有同学评价,这种在公网上裸奔的隧道还是不太安全。既然如此,那就搞个IPsec加密一下。
这次中间用不到那么多设备了,简化一下组网模型,如下所示:

首先参考上次的配置过程,完成GRE over IPv6隧道的配置。

VSR1
#
interface GigabitEthernet1/0
ip address 10.1.0.1 255.255.255.0
#
interface GigabitEthernet2/0
ipv6 address 1002::1/64
#
interface Tunnel1 mode gre ipv6
ip address 10.13.0.1 255.255.255.0
source 1002::1
destination 2003::3
#
ipv6 route-static 2003:: 64 1002::2

VSR2
#
interface GigabitEthernet1/0
ipv6 address 1002::2/64
#
interface GigabitEthernet2/0
ipv6 address 2003::2/64

VSR3
#
interface GigabitEthernet1/0
ip address 10.3.0.1 255.255.255.0
#
interface GigabitEthernet2/0
ipv6 address 2003::3/64
#
interface Tunnel1 mode gre ipv6
ip address 10.13.0.3 255.255.255.0
source 2003::3
destination 1002::1
#
ipv6 route-static 1002:: 64 2003::2

通过抓包我们可以看到,外层的IPv6报文头,内层的IPv4封装报文头和ICMP报文数据一览无余,确实没有什么安全性可言。

接下来,我们配置IPsec。其实也简单,跟之前的IPsec over GRE差别不大(GRE over IPsec,IPsec不服,要求IPsec over GRE)。
回顾一下,IPsec over GRE,也就是从网络层级上看,GRE在IPsec之上,即在报文封装的时候先封装IPsec,再封装GRE;如果再算上over IPv6,也就是最后封装IPv6报文头。
从配置上来看,我们要配置感兴趣流匹配数据报文的地址段为两端的私网网段,保护两端互访的数据流量;从转发上看,需要将加密流量丢进GRE隧道进行转发,所以在IPsec封装之后,再进行GRE封装,需要配置IPsec隧道的对端IP地址为GRE隧道的接口地址;最后,将IPsec策略应用到GRE隧道接口上就可以了。
知道了这些,配置就简单多了,我们直接看配置。

VSR1
#
ike keychain ipv6
pre-shared-key address 10.13.0.3 255.255.255.0 key simple ipv6
#
ike profile ipv6
keychain ipv6
match remote identity address 10.13.0.3 255.255.255.255
#
acl advanced 3400
rule 0 permit ip source 10.1.0.0 0.0.0.255 destination 10.3.0.0 0.0.0.255
#
ipsec transform-set ipv6
esp encryption-algorithm 3des-cbc
esp authentication-algorithm sha1
#
ipsec policy ipv6 6 isakmp
transform-set ipv6
security acl 3400
remote-address 10.13.0.3
ike-profile ipv6
#
ip route-static 10.3.0.0 24 10.13.0.3
#
interface Tunnel1 mode gre ipv6
ipsec apply policy ipv6

VSR3
#
ike keychain ipv6
pre-shared-key address 10.13.0.1 255.255.255.0 key simple ipv6
#
ike profile ipv6
keychain ipv6
match remote identity address 10.13.0.1 255.255.255.255
#
acl advanced 3400
rule 0 permit ip source 10.3.0.0 0.0.0.255 destination 10.1.0.0 0.0.0.255
#
ipsec transform-set ipv6
esp encryption-algorithm 3des-cbc
esp authentication-algorithm sha1
#
ipsec policy ipv6 6 isakmp
transform-set ipv6
security acl 3400
remote-address 10.13.0.1
ike-profile ipv6
#
ip route-static 10.1.0.0 24 10.13.0.1
#
interface Tunnel1 mode gre ipv6
ipsec apply policy ipv6
配置完成之后,在PCB上发起ping测,触发IPsec隧道协商,并验证联通性。

没有问题,协商成功。
在VSR1上查看IKE和IPsec的SA信息。

再次抓包看一下,虽然Wireshark显示的源目IP地址都是GRE封装的IPv4地址,但是如果我们查看报文封装,就会发现在GRE封装的内层是ESP封装的IPsec报文,外层是IPv6封装的报文头,跟我们开头提到的完全一致。

因为外层的IPsec封装和GRE封装是不加密的,所以我们能够清楚的看到报文结构,但无法查看加密后的业务数据,相对来说安全性还是有所提升。与GRE over IPsec相比,不能说IPsec over GRE是用GRE隧道保护IPsec隧道,应该说是用GRE隧道转发IPsec报文更恰当一些。
前面我们测试IPsec over GRE时,测得PMTU是1384字节(IPV6 的路径 MTU 发现),那IPv6是多少呢?

测试结果是1372字节,比IPv4少了12字节,你知道是为什么吗?

长按二维码
关注我们吧


在笔记本上装完KVM,发现VirtIO的性能比E1000高出不少
配置strongSwan和H3C VSR的IPsec对接案例
对比华三设备配置,讲解Linux主机如何配置strongSwan
在Ubuntu系统手撸一个自动创建SSL证书的SHELL脚本
在Ubuntu系统手撸一个自动搭建openVPN服务端的SHELL脚本

被折叠的 条评论
为什么被折叠?



