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