1. 简介

​ IPSec全称Internet Protocol Security,是通过对IP协议的分组进行加密和认证来保护IP协议的网络传输协议集,IPSec的主要用途之一就是建立虚拟专用网络。

2. strongswan

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

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

​ 下文将介绍如何部署基于strongswan的IPSec虚拟专用网络。

3. 配置文件

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

3.1 ipsec.conf

config setup

conn %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表示全局默认策略。

参数说明
ikelifetimeIPSec SA协商间隔
keylifeISAKMP SA协商间隔
rekeymargin密钥更新间隔
keyingtriesISAKMP SA协商次数
keyexchangeIKE模式,可选"ikev1,ikev2"
ikeIKE算法,分3个部分组成,用"-"连接,第一部分加密算法:3des,aes128,aes192,aes256,第二部分认证算法:md5,sha1,sha256,第三部分DH算法:modp1024,modp1536
espesp算法,分3个部分组成,用"-"连接,第一部分加密算法:3des,aes128,aes192,aes256,第二部分认证算法:md5,sha1,sha256,第三部分DH算法:modp1024,modp1536
authby认证方式,可选"secret,pubkey,psk,rsasig,xauthpsk,xauthrsasig,never"
left本机IP
leftsubnet本机内网,该网段会走专用网络通道
leftid本机标识
right对端IP,
rightsubnet对端内网,该网段会走专用网络通道
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"
dpdactiondpd(对端失效检测)动作,可选"none,clear,hold,restart"
dpddelaydpd检测间隔时间
dpdtimeoutdpd检测超时时间
待补充

​ 上述列举了一些常用的参数,所有参数可以查看 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 files

charon {
        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为12345678

1.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 专用网络通道搭建实例

准备工作:两台安装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 configuration

config setup

conn %default
        ikelifetime=60m
        keylife=20m
        rekeymargin=3m
        keyingtries=1
        keyexchange=ikev1
        authby=secret

conn 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 files

charon {
	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 configuration

config setup

conn %default
        ikelifetime=60m
        keylife=20m
        rekeymargin=3m
        keyingtries=1
        keyexchange=ikev1
        authby=secret

conn 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 files

charon {
	load_modular = yes
	plugins {
		include strongswan.d/charon/*.conf
	}
}

/etc/ipsec.secrets 配置:

: PSK "12345678"

4.3 建立连接

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M04iA5aZ-1596098783042)(http://i4.buimg.com/1949/87cabc3129aad83b.png)]

5. 常见问题

待补充

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐