基于Strongswan的IPSec VPN部署

来源:互联网 发布:淘宝药房旗舰店 编辑:程序博客网 时间:2024/05/18 02:54

1. 简介

​ IPSec全称Internet Protocol Security,是通过对IP协议的分组进行加密和认证来保护IP协议的网络传输协议集,IPSec的主要用途之一就是VPN。要想了解IPSec VPN原理可以参考IPSecVPN.ppt。

2. strongswan

​ strongswan是基于IPSec的VPN解决方案,它是一款开源软件,支持Linux 2.6和3.x的内核,IKEv1和IKEv2的密钥管理协议,以及各种认证方式、校验、加密算法。

​ strongswan的安装参考//172.17.92.252/yulin.chen/documents/Ubuntu 10.04下安装strongSwan.docx

​ strongswan官网有大量的测试案例:https://www.strongswan.org/testresults.html。

​ 下文将介绍如何部署基于strongswan的IPSec VPN。

3. 配置文件

​ strongswan主要的配置文件有3个:/etc/ipsec.conf,/etc/strongswan.conf,/etc/ipsec.secrets

3.1 ipsec.conf

config setupconn %default    ikelifetime=60m             // IPSec SA协商间隔    keylife=20m                 // ISAKMP SA协商间隔    rekeymargin=3m              // 密钥更新间隔    keyingtries=1               // ISAKMP SA协商次数    keyexchange=ikev1           // IKE模式    ike=3des-md5-modp1024       // IKE算法    esp=3des-md5-modp1024       // esp算法    authby=secret               // 认证方式conn s2s    left=10.0.0.10              // 本机IP    leftsubnet=192.168.1.0/24   // 本机内网    leftid=@delta               // 本机标识    right=10.0.0.20             // 对端IP    rightsubnet=192.168.2.0/24  // 对端内网    rightid=@cisco              // 对端标识    auto=add                    // 连接方式

​ 上述是一个ipsec.conf配置案例,conn 表示一个策略,其中conn %default表示全局默认策略。

参数 说明 ikelifetime IPSec SA协商间隔 keylife ISAKMP SA协商间隔 rekeymargin 密钥更新间隔 keyingtries ISAKMP SA协商次数 keyexchange IKE模式,可选”ikev1,ikev2” ike IKE算法,分3个部分组成,用”-“连接,第一部分加密算法:3des,aes128,aes192,aes256,第二部分认证算法:md5,sha1,sha256,第三部分DH算法:modp1024,modp1536 esp esp算法,分3个部分组成,用”-“连接,第一部分加密算法:3des,aes128,aes192,aes256,第二部分认证算法:md5,sha1,sha256,第三部分DH算法:modp1024,modp1536 authby 认证方式,可选”secret,pubkey,psk,rsasig,xauthpsk,xauthrsasig,never” left 本机IP leftsubnet 本机内网,该网段会走VPN通道 leftid 本机标识 right 对端IP, rightsubnet 对端内网,该网段会走VPN通道 rightid 对端标识 auto 连接方式,可选”add,route,start,ignore”,”add”表示手动,”route”表示由连接触发,”start”表示自启,”ignore”表示忽略该策略 left|rightauth 指定left,right认证方式,可选”pubkey,psk,eap,xauth”,相当于细分authby left|rightauth2 指定left,right附加认证方式,可选”xauth” (IKev1) left|rightcert 指定left,right证书,证书存放路径”/etc/ipsec.d/certs” dpdaction dpd(对端失效检测)动作,可选”none,clear,hold,restart” dpddelay dpd检测间隔时间 dpdtimeout dpd检测超时时间 待补充

​ 上述列举了一些常用的参数,所有参数可以查看https://wiki.strongswan.org/projects/strongswan/wiki/ConnSection。

3.2 strongswan.conf

# strongswan.conf - strongSwan configuration file## Refer to the strongswan.conf(5) manpage for details## Configuration changes should be made in the included filescharon {        load_modular = yes        plugins {                include strongswan.d/charon/*.conf        }}
参数 说明 charon.i_dont_care_about_security_and_use_aggressive_mode_psk 用于aggressive mode + PSK模式 charon.filelog 配置log文件 待补充

​ 详询https://wiki.strongswan.org/projects/strongswan/wiki/StrongswanConf

3.3 ipsec.secrets

# /etc/ipsec.secrets - strongSwan IPsec secrets file: PSK "12345678"                            // 匹配任意策略,其preshared key为123456781.1.1.1 2.2.2.2 : PSK "12345678"            // 匹配"left=1.1.1.1 right=2.2.2.2"的策略cisco : XAUTH "test"                        // 匹配id=cisco的策略,该策略xauth secret为test: RSA "test.pem"                            // 匹配authtype为pubkey的任意策略
参数 说明 PSK [ ] : PSK RSA : RSA [ | %prompt ],公钥文件必须在/etc/ipsec.d/private XAUTH [ ] : XAUTH “” 待补充

​ 详询https://wiki.strongswan.org/projects/strongswan/wiki/IpsecSecrets

4. IPSec VPN搭建实例

准备工作:两台安装strongswan的ubuntu电脑,互相可以ping通。

假设这两台电脑分别为ubuntu1(IP:172.17.92.138),ubuntu2(IP:172.17.92.209)。

4.1 ubuntu1配置

/etc/ipsec.conf 配置:

# ipsec.conf - strongSwan IPsec configuration file# basic configurationconfig setupconn %default        ikelifetime=60m        keylife=20m        rekeymargin=3m        keyingtries=1        keyexchange=ikev1        authby=secretconn c2c        left=172.17.92.138        right=172.17.92.209        ike=3des-md5-modp1024        esp=3des-md5-modp1024        auto=add

/etc/strongswan.conf 配置:

# strongswan.conf - strongSwan configuration file## Refer to the strongswan.conf(5) manpage for details## Configuration changes should be made in the included filescharon {    load_modular = yes    plugins {        include strongswan.d/charon/*.conf    }}

/etc/ipsec.secrets 配置:

: PSK "12345678"

4.2 ubuntu2配置

/etc/ipsec.conf 配置:

# ipsec.conf - strongSwan IPsec configuration file# basic configurationconfig setupconn %default        ikelifetime=60m        keylife=20m        rekeymargin=3m        keyingtries=1        keyexchange=ikev1        authby=secretconn c2c        left=172.17.92.209        right=172.17.92.138        ike=3des-md5-modp1024        esp=3des-md5-modp1024        auto=add

/etc/strongswan.conf 配置:

# strongswan.conf - strongSwan configuration file## Refer to the strongswan.conf(5) manpage for details## Configuration changes should be made in the included filescharon {    load_modular = yes    plugins {        include strongswan.d/charon/*.conf    }}

/etc/ipsec.secrets 配置:

: PSK "12345678"

4.3 建立VPN连接

​ 在两台电脑上面运行ipsec restart重新载入配置,然后在任意一台运行ipsec up c2c发起连接,连接成功如下图所示:

connection

5. 常见问题

待补充

0 0