VPP配置指南:基于IKEv2的IPsec VPN

a7798ed48c1f94153221272e05d15606.gif

正文共:1024 字 13 图,预估阅读时间:1 分钟

现在,我们已经能够熟练地部署VPP了不用半小时,最快8分钟即可在CentOS上完成VPP的部署,而且已经能够满足基本的转发要求,那今天我们就来介绍一下VPP如何配置IPsec VPN。

前面,我们已经讲了几十篇和VPN相关的文章了,有需要的小伙伴请参考合集VPN合集

简单回顾一下,IPsec(IP Security,IP安全)是IETF制定的三层(网络层)隧道加密协议,也是一种三层VPN(Virtual Private Network,虚拟专用网络),它可以为互联网上传输的数据提供了高质量的、基于密码学的安全保证。

IPsec通过在特定通信方之间(例如两个安全网关之间)建立“通道”,来保护通信方之间传输的用户数据,该通道通常称为IPsec隧道。

在IPsec隧道中提供安全服务的是安全联盟(Security Association,SA),安全联盟是一个单一的“连接”,为其承载的流量提供安全服务。为了保护两个主机之间或两个安全网关之间的典型双向通信,一般需要两个安全联盟(每个方向一个)。

安全联盟通常有两种建立方式:手工方式和IKE自动协商方式

手工方式即手工配置IPsec SA的所有信息。该方式的配置比较复杂,主要适用于需要安全通信的对等体数量较少,或小型静态的组网环境中。

IKE自动协商方式即对等体之间通过IKE协议自动协商生成SA,并由IKE协议维护该SA。与手工方式不同的是,IKE自动协商方式支持野蛮模式和NAT穿越,即建立SA的对等体中不需要所有对等体均具备静态IP地址,只要其中一方有静态IP地址,即可建立对等体连接。该方式适用于中、大型的动态网络环境,或没有静态IP地址,需要穿越NAT建立SA的场景。

在VPP中,主要使用IKEv2协议来实现自动协商生成SA。并且自17.04版本开始,发起方已经支持使用IKEv2来发起协商。

在正常情况下,IKEv2只需要进行两次交互,使用4条消息就可以完成一个IKEv2 SA和一对IPsec SA的协商建立,即第一阶段的交互生成IKEv2 SA,第二阶段的交互生成IPsec SA。

cf2dfc1aec3eaec00e04c8971eaa5ad1.png

在穿越NAT的场景下,没有静态IP地址的一端无法使用IP地址来标识自己,但是可以通过FQDN(Fully Qualified Domain Name,完全合格域名)RFC822来进行标识。

今天,我们来简单配置一下通过IP地址和IKEv2来建立IPsec隧道。

6b1ea4148e3ecfdceaf47224077dee64.png

我们首先完成两台VPP的接口IP地址配置,保证两台VPP可以互通。

VPP72配置。

vppctl set int state eth1 up
vppctl set int ip address eth1 11.1.1.1/24
vppctl set int state eth2 up
vppctl set int ip address eth2 12.1.1.1/24

8d75fbb3226534d653d5a2177a002488.png

VPP73配置。

vppctl set int state eth1 up
vppctl set int ip address eth1 22.1.1.1/24
vppctl set int state eth2 up
vppctl set int ip address eth2 12.1.1.2/24

445fccbef345ca5c30f0519dc59ecb4a.png

然后我们配置IKEv2 profile。

vppctl ikev2 profile add vppipsec

配置认证鉴权方式为PSK,密码设置为vppipsec。

vppctl ikev2 profile set vppipsec auth shared-key-mic string vppipsec

在VPP73上将本端和对端的ID信息均配置为IP地址。

vppctl ikev2 profile set vppipsec id local ip4-addr 12.1.1.1
vppctl ikev2 profile set vppipsec id remote ip4-addr 12.1.1.2

配置流量选择器,指定本端和对端的IP地址网段、端口、协议等信息。

vppctl ikev2 profile set vppipsec traffic-selector local ip-range 11.1.1.1 - 11.1.1.254 port-range 0 - 65535 protocol 0
vppctl ikev2 profile set vppipsec traffic-selector remote ip-range 22.1.1.1 - 22.1.1.254 port-range 0 - 65535 protocol 0

在VPP中,IKEv2角色区分为发起者和响应者,我们将VPP72配置为发起者,将VPP73配置为响应者。我们需要在发起者上配置响应者的IP地址信息,并提供可用于IKEv2和IPsec协商的密码套件信息,还可以设置生命周期等参数。

vppctl ikev2 profile set vppipsec responder eth2 12.1.1.2
vppctl ikev2 profile set vppipsec ike-crypto-alg aes-cbc 256  ike-integ-alg sha1-96  ike-dh modp-2048
vppctl ikev2 profile set vppipsec esp-crypto-alg aes-cbc 256  esp-integ-alg sha1-96  esp-dh ecp-256
vppctl ikev2 profile set vppipsec sa-lifetime 3600 10 5 0

6d4c1f73c8dc981579cbc9d74a8e6a3a.png

对应的,我们配置一下响应者VPP73的相关配置。

vppctl ikev2 profile add vppipsec
vppctl ikev2 profile set vppipsec auth shared-key-mic string vppipsec
vppctl ikev2 profile set vppipsec id local ip4-addr 12.1.1.2
vppctl ikev2 profile set vppipsec id remote ip4-addr 12.1.1.1
vppctl ikev2 profile set vppipsec traffic-selector local ip-range 22.1.1.1 - 22.1.1.254 port-range 0 - 65535 protocol 0
vppctl ikev2 profile set vppipsec traffic-selector remote ip-range 11.1.1.1 - 11.1.1.254 port-range 0 - 65535 protocol 0

在发起者和响应者网络可达且配好了IKEv2策略之后,配置VPP72发起协商。

vppctl ikev2 initiate sa-init vppipsec

然后我们查看接口,发现多了一个ipip0的接口,这就是IPsec的隧道接口。

8ba1118e8c68633c28953844029398ac.png

然后我们在VPP72上为该接口配置IP地址。

vppctl set interface state ipip0 up
vppctl set interface ip address ipip0 120.1.1.1/24

添加去往对端22.1.1.0/24的路由,指定下一跳出口为ipip0接口。

vppctl ip route add 22.1.1.0/24 via 120.1.1.2 ipip0

同理,在VPP73上配置IP地址和路由信息。

vppctl set interface state ipip0 up
vppctl set interface ip address ipip0 120.1.1.2/24
vppctl ip route add 11.1.1.0/24 via 120.1.1.1 ipip0

3e52565ff115275ad9c8eba6d20becaa.png

测试一下两个IPsec隧道接口的互通情况。

c59ca2969fdfa05cb65c599fe40b5011.png

测试一下两端主机的互通情况。

734fd15d9bd7e515b4ef617b99778134.png

抓包查看,报文已经全部是加密状态。

06a5732405b1a077e79fe62e45b5d36d.png

且外层报文头是两端隧道接口的IP地址,属于GRE over IPsec类型。

在VPP73上查看IKEv2的SA信息。

002b8a933d7b29769fa49b842492e7fb.png

在VPP73上查看IPsec的SA信息。

670fd6266eef6f6849bb18bffee197ec.png

还可以用show ipsec all命令,不过也没有什么其他信息可以展示了。

97f4d5cd9d06f5d331f4fcb4e8ab4308.png

be69047b2da1ffc38a943189c318996f.gif

长按二维码
关注我们吧

bb63028f81730bf4174fd7783a387d83.jpeg

d77816d21ca20c153d9df98529b14f1c.png

从零开始安装一个VPP要多久?半小时,不能再多了!

不用半小时,最快8分钟即可在CentOS上完成VPP的部署

NVMe硬盘大降价,给你的服务器提提速吧!

惠普HPE服务器升级iLO4固件版本

我来帮着更新一下Linux连接SSL VPN的操作指导,官网手册过时了!

还能这么玩?Windows通过netsh命令配置IPsec

使用MMC和netsh两种方式配置Windows Server传输模式IPsec

成了!基于VPN虚链路的负载均衡测试成功!

  • 19
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Danileaf_Guo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值