vxlan和IPsec结合使用



一、使用IPsec封装Vxlan报文
如果希望Vxlan报文通过IPsec加密,可以通过ip xfrm命令在VM1和VM2上创建手工IPsec隧道来加密报文。配置如下:
创建VM1的手工SA:
 
ip xfrm state add src 192.168.233.180 dst 192.168.233.190 proto esp spi 0x00000301 mode tunnel auth sha1 0x96358c90783bbfa3d7b196ceabe0536b enc aes 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df
ip xfrm state add src 192.168.233.190 dst 192.168.233.180 proto esp spi 0x00000302 mode tunnel auth sha1 0x99358c90783bbfa3d7b196ceabe0536b enc aes 0xffddb555acfd9d77b03ea3843f2653255afe8eb5573965df


创建VM1的SP(安全策略)
 
ip xfrm policy add src 192.168.233.180 dst 192.168.233.190 proto udp dir out ptype main tmpl src 192.168.233.180 dst 192.168.233.190 proto esp mode tunnel
ip xfrm policy add src 192.168.233.190 dst 192.168.233.180 proto udp dir in ptype main tmpl src 192.168.233.190 dst 192.168.233.180 proto esp mode tunnel



创建VM2手工SA:
 
ip xfrm state add src 192.168.233.180 dst 192.168.233.190 proto esp spi 0x00000301 mode tunnel auth sha1 0x96358c90783bbfa3d7b196ceabe0536b enc aes 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df
ip xfrm state add src 192.168.233.190 dst 192.168.233.180 proto esp spi 0x00000302 mode tunnel auth sha1 0x99358c90783bbfa3d7b196ceabe0536b enc aes 0xffddb555acfd9d77b03ea3843f2653255afe8eb5573965df


创建VM2的SP(安全策略)
 
ip xfrm policy add src 192.168.233.180 dst 192.168.233.190 proto udp  dir in ptype main tmpl src 192.168.233.180 dst 192.168.233.190 proto esp mode tunnel
ip xfrm policy add src 192.168.233.190 dst 192.168.233.180 proto udp  dir out ptype main tmpl src 192.168.233.190 dst 192.168.233.180 proto esp mode tunnel

注意通过策略索引到SA,这里的策略指明了协议号,要求仅对udp的报文进行加密。实际上这个范围有点大了,但是如果我指明端口号(dport 4789),发现出向策略无法匹配!也就是udp不知道为什么内核不认端口号(我尝试了tcp的,是可以根据端口号索引的)
本来还想通过出接口dev这个选项来指明仅对vxlan报文进行加密,但尝试了下,发现对虚接口vxlan10,是没有效果的,仅对物理出接口有效。
按照如上配置可以通过ping命令测试,发现已经经过ESP加密了。
二、使用IPsec UDP报文穿越NAT
当VM1和VM2中有NAT设备,需要额外的IPsec处理。这里未测试真正NAT环境,仅增加对于NAT的配置如何处理。
按照第五部的思路,理论上只需要把SA增加个选项配置即可,如下:
创建VM1的手工SA:
 
ip xfrm state add src 192.168.233.180 dst 192.168.233.190 proto esp spi 0x00000301 mode tunnel auth sha1 0x96358c90783bbfa3d7b196ceabe0536b enc aes 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df <span style="color:#ff0000;">espinudp 4500 4500 0.0.0.0</span>
ip xfrm state add src 192.168.233.190 dst 192.168.233.180 proto esp spi 0x00000302 mode tunnel auth sha1 0x99358c90783bbfa3d7b196ceabe0536b enc aes 0xffddb555acfd9d77b03ea3843f2653255afe8eb5573965df <span style="color:#ff0000;">espinudp 4500 4500 0.0.0.0
</span>


创建VM2手工SA:
 
ip xfrm state add src 192.168.233.180 dst 192.168.233.190 proto esp spi 0x00000301 mode tunnel auth sha1 0x96358c90783bbfa3d7b196ceabe0536b enc aes 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df <span style="color:#ff0000;">espinudp 4500 4500 0.0.0.0</span>
ip xfrm state add src 192.168.233.190 dst 192.168.233.180 proto esp spi 0x00000302 mode tunnel auth sha1 0x99358c90783bbfa3d7b196ceabe0536b enc aes 0xffddb555acfd9d77b03ea3843f2653255afe8eb5573965df <span style="color:#ff0000;">espinudp 4500 4500 0.0.0.0</span>


但是实际上是不行的,需要开启4500端口的UDP侦听功能,参见另一篇博文,就可以ping通了。

你可能感兴趣的:(strongswan)