searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

快速配置基于IKEv2的IPSec VPN配置

2023-05-24 07:43:25
8545
0

简单回顾一下,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。

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

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

我们首先完成两台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

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

然后我们配置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

对应的,我们配置一下响应者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的隧道接口。

然后我们在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

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

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

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

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

在VPP73上查看IKEv2的SA信息。

在VPP73上查看IPsec的SA信息。

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

0条评论
0 / 1000
肖****梦
2文章数
1粉丝数
肖****梦
2 文章 | 1 粉丝
肖****梦
2文章数
1粉丝数
肖****梦
2 文章 | 1 粉丝
原创

快速配置基于IKEv2的IPSec VPN配置

2023-05-24 07:43:25
8545
0

简单回顾一下,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。

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

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

我们首先完成两台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

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

然后我们配置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

对应的,我们配置一下响应者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的隧道接口。

然后我们在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

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

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

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

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

在VPP73上查看IKEv2的SA信息。

在VPP73上查看IPsec的SA信息。

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

文章来自个人专栏
正义者联盟
2 文章 | 2 订阅
0条评论
0 / 1000
请输入你的评论
3
2