Ipsec VPN-centos7使用strangwang搭建vpn
本教学介绍了如何使用 Strongswan 5.x.x 在 centos7+ 服务器上架设支持 ikev1/ikev2 的 Ipsec VPN。适用于 openSUSE、iOS、Android、Windows 和其它 Linux。
简介:
什么是 IPsec?
IPsec 是 虚拟私密网络(VPN) 的一种,用于在服务器和客户端之间建立加密隧道并传输敏感数据之用。它由两个阶段组成,第一阶段(Phrase 1, ph1),交换金钥建立连接,使用互联网金钥交换(ike)协议; 第二阶段(Phrase 2, ph2),连接建立后对数据进行加密传输,使用封装安全载荷(esp)协议。参考:维基百科 IPsec 词条。
其中,第一阶段和第二阶段可以使用不同的加密方法(cipher suites)。甚至,第一阶段 ike 协议的第一版(ikev1)有两种模式,主力模式(main mode)和积极模式(aggressive mode),主力模式进行六次加密握手,而积极模式并不加密,以实现快速建立连接的目的。
第一阶段的 ike 协议有两个版本(ikev1/ikev2),不同的开源/闭源软件实现的版本均不同,不同的设备实现的版本也不同。再联系到第一阶段/第二阶段使用的各种不同加密方法,使得 IPsec 的配置有点黑魔法的性质,要么完全懂,通吃; 要么完全不懂,照抄
本文以公司内网192.168.0.0/21和腾讯vpc内网10.125.0.0/16做ike vpn,互联网络通信
网络图示:

介绍:
系统:centos 7
软件:strongswan 5.7
补充说明
StrongSwan 的发行版已包含在 EPEL 源中, 但是CentOS源的包比较旧,所以我们手动在官网https://www.strongswan.org/download.html下载安装包
strongSwan的发行版已包含在EPEL源中, 但源中的包版本5.3.2比较低,目前官网上5.4.0已经发布了。
查看SELinux状态
如果SELinux没有被禁用,需禁用之,并重启服务器
查看防火墙状态
一、安装
使用epel仓库里面的yum安装
# yum install strongswan
yum安装说明:
官方安装说明:https://centos.pkgs.org/7/epel-x86_64/strongswan-5.7.1-1.el7.x86_64.rpm.html
centos6 安装5.4版本说明 https://centos.pkgs.org/6/epel-x86_64/strongswan-5.4.0-2.el6.x86_64.rpm.html
二进制安装说明:
官方安装说明:https://wiki.strongswan.org/projects/strongswan/wiki/InstallationDocumentation
官方页面: https://www.strongswan.org/download.html
二、配置strongswan
strongSwan包含3个配置文件,在目录/etc/strongswan/下。 strongswan.conf strongSwan各组件的通用配置 ipsec.conf IPsec相关的配置,定义IKE版本、验证方式、加密方式、连接属性等等 ipsec.secrets 定义各类密钥,例如:私钥、预共享密钥、用户账户和密码
1.公司内网192.168.1.228上配置说明
vim /etc/strongswan/ipsec.conf
其中 config setup 只能出现一次,而 conn <连接名称> 可以有很多个。这里的名称不是预定义的,可以随意写,只要你能识别就行,主要用来定义一种连接,就是为了让你在日志里好找。
新版 strongswan 里 config setup 的内容不如旧版的多,许多旧版必须有的选项都被作废了。比如:
plutostart 新版所有的 ike 协议都由原来 ikev2 的 daemon:charon 接管。根本就没有 pluto 了。
nat_traversal 新版所有的 ike 协议都是可以穿越路由器(NAT)的。
virtual_private 定义服务器的局域网 IP 地址。现在被魔术字 0.0.0.0/0 取代了。
pfs 完美向前保密,用于 rekey 时。意思是你现在的金钥互换过程如果被攻破了,会不会对已经互换过的金钥产生影响。以前一般设置成 no 来适用于 iOS 这种客户端会以积极模式发出非加密的 rekey 请求的情况。现在这个选项完全没作用了。第一阶段永远是完美向前保密的,第二阶段(esp)如果指定了 DH 组那么也是完美向前保密的,但是默认加密方法就已经指定了 DH 组。所以该选项永远为 yes。
更多说明查考 https://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&variant=zh
密码文件ipsec.secrets文件默认不存在,需要自己生成。 vi /etc/strongswan/ipsec.secrets
CentOS配置转发
CentOS配置iptables防火墙,允许UDP500,UDP4500,并配置转发和NAT规则
若是开启访问,请参考配置 Iptables 转发
参考:配置 Iptables 转发
公司内网设置路由
把去往10.125.0.0/16段路由代理到192.168.1.228

启动
2.公司内网10.125.0.19上配置说明
vim /etc/strongswan/ipsec.conf
密码文件ipsec.secrets文件默认不存在,需要自己生成。
vi /etc/strongswan/ipsec.secrets
CentOS配置转发
CentOS配置iptables防火墙,允许UDP500,UDP4500,并配置转发和NAT规则
参考,公司可通腾讯云,但腾讯云却不能通公司就是缺失nat转发
腾讯内网安全组放开4500和500
启动
三、检查
自此vpn配置完毕,可以互ping进行检查
排查故障
tcpdump -i enp2s0 -nNX -s0 port 4500 or 500 查看有没有发包进行连接
查考文档
扩展GRE VPN: https://blog.csdn.net/zhydream77/article/details/81051429
https://gist.github.com/losisli/11081793
https://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&variant=zh
https://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&variant=zh
Last updated