基于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 setupconn %defaultikelifetime=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 s2sleft=10.0.0.10 // 本机IPleftsubnet=192.168.1.0/24 // 本机内网leftid=@delta // 本机标识right=10.0.0.20 // 对端IPrightsubnet=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 | 本机内网,该网段会走专用网络通道 |
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" |
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 = yesplugins {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 专用网络通道搭建实例
准备工作:两台安装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 %defaultikelifetime=60mkeylife=20mrekeymargin=3mkeyingtries=1keyexchange=ikev1authby=secretconn c2cleft=172.17.92.138right=172.17.92.209ike=3des-md5-modp1024esp=3des-md5-modp1024auto=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 = yesplugins {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 %defaultikelifetime=60mkeylife=20mrekeymargin=3mkeyingtries=1keyexchange=ikev1authby=secretconn c2cleft=172.17.92.209right=172.17.92.138ike=3des-md5-modp1024esp=3des-md5-modp1024auto=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 = yesplugins {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. 常见问题
待补充
基于Strongswan的IPSec部署相关推荐
- strongswan 搭建 IPSec 实验环境
使用两个CentOS7虚拟机,基于strongswan搭建IPSec VPN实验环境,通过是否配置加密算法,达到产生正常和非正常ESP数据包的目的.本篇为自己填坑记录. 目录 1.准备两个CentOS ...
- ZStack实践汇 | 基于ZStack云平台部署FortiGate
2019年国际知名信息安全峰会RSA Conference在美国旧金山举行,在所有演讲主题中,云安全超过网络安全和数据安全,成为热门关键词第一.ZStack实践汇这次带来的是<基于ZStack云 ...
- 实战 MDT 2012(六)---基于MAC地址的部署
转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://jqq1982.blog.51cto.com/515663/1123289 基于MAC地址的部署需要S ...
- 基于“证书”的Ipsec的传输模式
基于"证书"的Ipsec的传输模式 请参考附件 转载于:https://blog.51cto.com/youmo6900/452976
- 【基于Python+Flask项目部署系列--03】开发测试环境配置-基于Ubuntu16.04
一.开发测试环境介绍 前提已经部署完[基于Python+Flask项目部署系列--02]Ubuntu16.04服务器安装.建议部署2套环境:开发测试环境+生产环境. 这篇文章主要讲解测试环境如何配置p ...
- 基于Kubernetes的Spark部署完全指南
基于Kubernetes的Spark部署完全指南 [编者的话]本文是在Kubernets上搭建Spark集群的操作指南,同时提供了Spark测试任务及相关的测试数据,通过阅读本文,你可以实践从制作Sp ...
- 关于 WSGI、uwsgi和uWSGI的区别及基于 uWSGI和gunicorn 部署python web 简述
关于 WSGI.uwsgi和uWSGI的区别及基于 uWSGI和gunicorn 部署python web 简述 引言 最近基于 Flask Web框架在开发一个后端项目,在Web Server和 F ...
- 联盟链Quorum(基于raft共识)部署流程(三)- 部署基于Quorum链的区块链浏览器
这篇文章算得上是继联盟链Quorum(基于raft共识)部署流程(二)的续篇 我的演示系统环境时 Ubuntu 18.04 LTS. 环境要求: DockerDocker-Compose 安装方法见下 ...
- 云服务基于DevCloud的自动化部署功能,实现快速部署网站应用
[目的]本实验指导用户基于DevCloud的自动化部署功能,实现在CCE集群上快速部署网站应用. 云服务基于DevCloud的自动化部署功能,实现快速部署网站应用 1.资源准备 1.1.创建安全组.虚 ...
最新文章
- 【深度学习】讲一个深度分离卷积结构和空洞卷积的应用
- mPaas 研发流程和线上运维介绍
- Comet OJ(Contest #14)-飞翔的小鸟【tarjan】
- 对一个可进行带括号 加减乘除运算类的分析
- iOS AFNetWorking源码详解(一)
- Bootstrap_导航
- 秘籍之树上蹦迪--LCA
- mtk添加更换华大北斗gps驱动
- Leetcode——495. Teemo Attacking
- python可执行程序必须以管理员_Python实现管理员权限运行CMD指令
- 数学第一单元计算机思维导图,七年级下册数学第一单元思维导图图片
- 关于PHP程序员技术职业生涯规划--swool大神韩天峰
- 【淘宝补单】操作干预单不能在犯的错误
- Day 2: On Your Choices
- ps快速将白底图片变为透明图片
- HIVE常用命令之MSCK REPAIR TABLE
- spss连接mysql_通过结合使用 SPSS 与数据库仓库连接开展预测性分析
- SimpleCG绘图函数(4)--绘制圆
- 实战分享1:如何使用华为VR Glass 6dof 基于 OpenXR@ unity 开发VR游戏/应用
- 网络编程总结--小码哥java
热门文章
- 张艾迪(创始人):拥抱单身与自由的Eidyzhang
- Association, Aggregation, Composition, Abstraction, Generalization, Realization, Dependency
- 什么是字母表和串---编译原理
- 三分法求解凸函数的最值
- 学前端到底哪个培训机构好?
- 操作系统中的页表的结构
- 浅谈机器人的定位技术 激光SLAM VS 视觉SLAM
- 【技术整合】各技术解决方案与对应解决的问题
- atan2函数的用法
- 【Redis】redis cluster模式实现双机房容灾切换