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部署相关推荐

  1. strongswan 搭建 IPSec 实验环境

    使用两个CentOS7虚拟机,基于strongswan搭建IPSec VPN实验环境,通过是否配置加密算法,达到产生正常和非正常ESP数据包的目的.本篇为自己填坑记录. 目录 1.准备两个CentOS ...

  2. ZStack实践汇 | 基于ZStack云平台部署FortiGate

    2019年国际知名信息安全峰会RSA Conference在美国旧金山举行,在所有演讲主题中,云安全超过网络安全和数据安全,成为热门关键词第一.ZStack实践汇这次带来的是<基于ZStack云 ...

  3. 实战 MDT 2012(六)---基于MAC地址的部署

    转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://jqq1982.blog.51cto.com/515663/1123289 基于MAC地址的部署需要S ...

  4. 基于“证书”的Ipsec的传输模式

    基于"证书"的Ipsec的传输模式  请参考附件 转载于:https://blog.51cto.com/youmo6900/452976

  5. 【基于Python+Flask项目部署系列--03】开发测试环境配置-基于Ubuntu16.04

    一.开发测试环境介绍 前提已经部署完[基于Python+Flask项目部署系列--02]Ubuntu16.04服务器安装.建议部署2套环境:开发测试环境+生产环境. 这篇文章主要讲解测试环境如何配置p ...

  6. 基于Kubernetes的Spark部署完全指南

    基于Kubernetes的Spark部署完全指南 [编者的话]本文是在Kubernets上搭建Spark集群的操作指南,同时提供了Spark测试任务及相关的测试数据,通过阅读本文,你可以实践从制作Sp ...

  7. 关于 WSGI、uwsgi和uWSGI的区别及基于 uWSGI和gunicorn 部署python web 简述

    关于 WSGI.uwsgi和uWSGI的区别及基于 uWSGI和gunicorn 部署python web 简述 引言 最近基于 Flask Web框架在开发一个后端项目,在Web Server和 F ...

  8. 联盟链Quorum(基于raft共识)部署流程(三)- 部署基于Quorum链的区块链浏览器

    这篇文章算得上是继联盟链Quorum(基于raft共识)部署流程(二)的续篇 我的演示系统环境时 Ubuntu 18.04 LTS. 环境要求: DockerDocker-Compose 安装方法见下 ...

  9. 云服务基于DevCloud的自动化部署功能,实现快速部署网站应用

    [目的]本实验指导用户基于DevCloud的自动化部署功能,实现在CCE集群上快速部署网站应用. 云服务基于DevCloud的自动化部署功能,实现快速部署网站应用 1.资源准备 1.1.创建安全组.虚 ...

最新文章

  1. 【深度学习】讲一个深度分离卷积结构和空洞卷积的应用
  2. mPaas 研发流程和线上运维介绍
  3. Comet OJ(Contest #14)-飞翔的小鸟【tarjan】
  4. 对一个可进行带括号 加减乘除运算类的分析
  5. iOS AFNetWorking源码详解(一)
  6. Bootstrap_导航
  7. 秘籍之树上蹦迪--LCA
  8. mtk添加更换华大北斗gps驱动
  9. Leetcode——495. Teemo Attacking
  10. python可执行程序必须以管理员_Python实现管理员权限运行CMD指令
  11. 数学第一单元计算机思维导图,七年级下册数学第一单元思维导图图片
  12. 关于PHP程序员技术职业生涯规划--swool大神韩天峰
  13. 【淘宝补单】操作干预单不能在犯的错误
  14. Day 2: On Your Choices
  15. ps快速将白底图片变为透明图片
  16. HIVE常用命令之MSCK REPAIR TABLE
  17. spss连接mysql_通过结合使用 SPSS 与数据库仓库连接开展预测性分析
  18. SimpleCG绘图函数(4)--绘制圆
  19. 实战分享1:如何使用华为VR Glass 6dof 基于 OpenXR@ unity 开发VR游戏/应用
  20. 网络编程总结--小码哥java

热门文章

  1. 张艾迪(创始人):拥抱单身与自由的Eidyzhang
  2. Association, Aggregation, Composition, Abstraction, Generalization, Realization, Dependency
  3. 什么是字母表和串---编译原理
  4. 三分法求解凸函数的最值
  5. 学前端到底哪个培训机构好?
  6. 操作系统中的页表的结构
  7. 浅谈机器人的定位技术 激光SLAM VS 视觉SLAM
  8. 【技术整合】各技术解决方案与对应解决的问题
  9. atan2函数的用法
  10. 【Redis】redis cluster模式实现双机房容灾切换