基于Strongswan的IPSec部署

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. 常见问题

待补充

  • 6
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
前置条件: - Ubuntu 16.04 LTS - 两台虚拟机 步骤1:安装strongswan 在两台虚拟机上都执行以下命令安装strongswan: ``` sudo apt-get update sudo apt-get install strongswan ``` 步骤2:配置IPSec 在虚拟机1上编辑/etc/ipsec.conf文件,添加以下内容: ``` conn vpn left=192.168.1.1 # 虚拟机1的IP地址 leftsubnet=192.168.0.0/16 # 虚拟机1的子网 leftid=@vpnserver # 虚拟机1的标识 right=192.168.2.1 # 虚拟机2的IP地址 rightsubnet=192.168.0.0/16 # 虚拟机2的子网 rightid=@vpnclient # 虚拟机2的标识 auto=start ``` 在虚拟机2上编辑/etc/ipsec.conf文件,添加以下内容: ``` conn vpn left=192.168.2.1 # 虚拟机2的IP地址 leftsubnet=192.168.0.0/16 # 虚拟机2的子网 leftid=@vpnclient # 虚拟机2的标识 right=192.168.1.1 # 虚拟机1的IP地址 rightsubnet=192.168.0.0/16 # 虚拟机1的子网 rightid=@vpnserver # 虚拟机1的标识 auto=start ``` 步骤3:配置证书 在虚拟机1上执行以下命令生成证书: ``` sudo ipsec pki --gen --type rsa --size 4096 --outform pem > vpnserver.key.pem sudo ipsec pki --self --ca --lifetime 3650 --in vpnserver.key.pem --type rsa --dn "CN=VPN Server" --outform pem > vpnserver.cert.pem sudo ipsec pki --gen --type rsa --size 4096 --outform pem > vpnclient.key.pem sudo ipsec pki --pub --in vpnclient.key.pem --type rsa | sudo tee vpnclient.pub.pem ``` 在虚拟机2上执行以下命令生成证书: ``` sudo ipsec pki --gen --type rsa --size 4096 --outform pem > vpnclient.key.pem sudo ipsec pki --self --ca --lifetime 3650 --in vpnclient.key.pem --type rsa --dn "CN=VPN Client" --outform pem > vpnclient.cert.pem sudo ipsec pki --gen --type rsa --size 4096 --outform pem > vpnserver.key.pem sudo ipsec pki --pub --in vpnserver.key.pem --type rsa | sudo tee vpnserver.pub.pem ``` 将虚拟机1生成的证书文件vpnserver.cert.pem和vpnserver.key.pem复制到虚拟机2上,将虚拟机2生成的证书文件vpnclient.cert.pem和vpnclient.key.pem复制到虚拟机1上。 步骤4:配置IPSec密钥 在虚拟机1上执行以下命令生成IPSec密钥: ``` sudo ipsec pki --issue --lifetime 3650 --cacert vpnclient.cert.pem --cakey vpnclient.key.pem --in vpnserver.pub.pem --dn "CN=VPN Server" --san vpnserver --flag serverAuth --outform pem > vpnserver.cert.pem ``` 在虚拟机2上执行以下命令生成IPSec密钥: ``` sudo ipsec pki --issue --lifetime 3650 --cacert vpnserver.cert.pem --cakey vpnserver.key.pem --in vpnclient.pub.pem --dn "CN=VPN Client" --san vpnclient --flag serverAuth --outform pem > vpnclient.cert.pem ``` 将虚拟机1生成的IPSec密钥文件vpnserver.cert.pem和vpnclient.cert.pem复制到虚拟机2上,将虚拟机2生成的IPSec密钥文件vpnclient.cert.pem和vpnserver.cert.pem复制到虚拟机1上。 步骤5:重启strongswan 在虚拟机1和虚拟机2上都执行以下命令重启strongswan: ``` sudo systemctl restart strongswan ``` 步骤6:测试IPSec 在虚拟机1上执行以下命令测试IPSec: ``` ping 192.168.2.1 ``` 在虚拟机2上执行以下命令测试IPSec: ``` ping 192.168.1.1 ``` 如果ping通,说明IPSec部署成功。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值