在CentOS上使用strongSwan搭建IPsec VPN服务

一、需求背景介绍:

客户业务在往腾讯云迁移的过程中,因为两边的数据需要同步,所以需要建立站点到站点的IPsec VPN连接,由于某些公司没有VPN设备或者其他云不支持VPN Gateway产品的时候,就需要我们自己搭建IPsec VPN服务。

本文以strongSwan为例介绍如何在本地站点中加载IPsec VPN配置,配置信息如下:

腾讯云VPC的网段:172.16.10.0/16

本地IDC的网段:10.0.0.0/16

strongSwan的公网IP地址:140.143.129.162

VPN Gateway的公网IP地址:115.159.144.75

操作系统版本:腾讯云CVM CentOS Linux release 7.5

strongSwan软件版本:Linux strongSwan U5.7.1

二、本地IDC端配置

1、安装strongSwan

(1)运行以下命令安装strongSwan。

[root@VM_2_2_centos ~]# yum install strongswan -y

(2)运行以下命查看安装的软件版本。

[root@VM_2_2_centos ~]# strongswan version

2、配置strongSwan

(1)运行以下命令打开ipsec.conf配置文件。

[root@VM_2_2_centos ~]# vi /etc/strongswan/ipsec.conf

(2)参考以下配置,更改ipsec.conf的配置。

# ipsec.conf - strongSwan IPsec configuration file
# basic configuration
config setup
        # strictcrlpolicy=yes
        # uniqueids = no
        charondebug="all"
 
conn %default
        ikelifetime=1440m   
        keylife=60m
        rekeymargin=3m
        keyingtries=0
        keyexchange=ikev1   #ike版本
        authby=secret
 
conn toshanghai
      left=%defaultroute
      leftid=140.143.120.162    #本地端VPN网关公网IP
      leftsubnet=10.0.0.0/16    #本地端私有网络地址,如果要确保VPC网段都能通,需要添加整段VPC地址
      right=115.159.144.75      #对端VPN网关公网IP
      rightsubnet=172.16.0.0/16     #对端私有网络地址
      auto=start   #进程主动时立即建立 IPsec 安全连接
      type=tunnel
      ike=3des-md5-modp1024
      esp=3des-md5

(3)运行以下命令打开ipsec.secrets配置文件。

[root@VM_2_2_centos ~]# vi /etc/strongswan/ipsec.secrets

(4)添加如下配置。

#本地公网出口IP   #对端公网出口IP     #双方约定的秘钥
140.143.120.162 115.159.144.75 : PSK qcloud123

(5)/etc/sysctl.conf系统配置。

[root@VM_2_2_centos ~]# vim /etc/sysctl.conf
#配置转发,默认是0
net.ipv4.ip_forward = 1
#关闭重定向,防止恶意用户可以使用IP重定向来修改远程主机中的路由表
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
#使配置生效
[root@VM_2_2_centos ~]# sysctl -p

3、启动服务

(1)strongswan start启动IPsec VPN服务。

[root@VM_2_2_centos ~]# strongswan start

(2)IPSec VPN监听在UDP的500和4500两个端口,其中500是用来IKE密钥交换协商,4500的NAT-T是nat穿透的。

[root@VM_2_2_centos ~]# netstat -tunpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1024/sshd
udp        0      0 0.0.0.0:4500            0.0.0.0:*                           15283/charon
udp        0      0 0.0.0.0:500             0.0.0.0:*                           15283/charon
udp        0      0 0.0.0.0:68              0.0.0.0:*                           15283/charon
udp        0      0 10.0.2.2:123            0.0.0.0:*                           1226/ntpd
udp        0      0 127.0.0.1:123           0.0.0.0:*                           1226/ntpd
udp6       0      0 :::4500                 :::*                                15283/charon
udp6       0      0 :::500                  :::*                                15283/charon

4、设置开机自动启动

[root@VM_2_2_centos ~]# chkconfig strongswan on

5、添加路由

在IDC核心网关上添加到对端172.16.0.0/16的路由,下一跳指向strongswan的IP 10.0.2.2。

Destination subnet: 172.16.0.0/16 nexthop: 10.0.2.2

三、腾讯云侧配置

因为腾讯云VPN Gateway已经产品化,所以用户可以快速在控制台里创建,具体操作如下:

1.创建VPN Gateway

2.创建对端网关

3.创建VPN通道

(1)第一步:选择对应的VPN网关和对端网关,预共享秘钥与对端一致。

(2)第二步:填写本端网段和对端网段。

(3)第三步:IKE配置,需与对端一致,注意目前腾讯云只支持IKE V1版本,V2版本暂不支持。

(4)第四步:IPsec配置,需与对端一致。

4.腾讯云侧添加路由

添加去往对端10.0.0.0/16的路由,指向VPN Gateway。

四、测试验证

1.在腾讯云侧查看VPN通道状态

显示“已联调”状态,说明VPN通道已经正常建立。

2.在IDC端的strongSwan上验证

(1)运行strongswan status,查看IPsec VPN状态已经建立。

[root@VM_2_2_centos ~]# strongswan status
Security Associations (1 up, 0 connecting):
tencent-vpn-aws[1]: ESTABLISHED 2 hours ago, 10.0.2.2[140.143.120.162]...115.159.144.75[115.159.144.75]
tencent-vpn-aws{3}:  INSTALLED, TUNNEL, reqid 1, ESP in UDP SPIs: c9e368a4_i aa7549f9_o
tencent-vpn-aws{3}:   10.0.0.0/16 === 172.16.0.0/16

(2)运行ip xfrm policy,查看路由策略。

[root@VM_2_2_centos ~]# ip xfrm policy
src 10.0.0.0/16 dst 172.16.0.0/16
	dir out priority 383615 ptype main
	tmpl src 10.0.2.2 dst 115.159.144.75
		proto esp spi 0xaa7549f9 reqid 1 mode tunnel
src 172.16.0.0/16 dst 10.0.0.0/16
	dir fwd priority 383615 ptype main
	tmpl src 115.159.144.75 dst 10.0.2.2
		proto esp reqid 1 mode tunnel
src 172.16.0.0/16 dst 10.0.0.0/16
	dir in priority 383615 ptype main
	tmpl src 115.159.144.75 dst 10.0.2.2
		proto esp reqid 1 mode tunnel
src 0.0.0.0/0 dst 0.0.0.0/0
	socket in priority 0 ptype main
src 0.0.0.0/0 dst 0.0.0.0/0
	socket out priority 0 ptype main
src 0.0.0.0/0 dst 0.0.0.0/0
	socket in priority 0 ptype main
src 0.0.0.0/0 dst 0.0.0.0/0
	socket out priority 0 ptype main
src ::/0 dst ::/0
	socket in priority 0 ptype main
src ::/0 dst ::/0
	socket out priority 0 ptype main
src ::/0 dst ::/0
	socket in priority 0 ptype main
src ::/0 dst ::/0
	socket out priority 0 ptype main

3.双向ping测试

(1)从IDC往腾讯云172.16.2.2测试,ping通。

(2)从腾讯云往IDC 10.0.2.14测试,ping通。

4.双向速度测试

使用iperf压测工具,腾讯云VPC Gateway和strongSwan的带宽都设置的是5Mbps,压测速度能达到5Mbps就符合预期。

4.1 从腾讯云172.16.2.2往IDC 10.0.2.14压测。

(1)10.0.2.14上以server模块启动iperf,-s 以server模式启动,-i 以秒为单位显示报告间隔。

[root@VM_2_14_centos ~]# iperf -s -i 2
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local 10.0.2.14 port 5001 connected with 172.16.2.2 port 41074
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0- 2.0 sec  1.67 MBytes  6.99 Mbits/sec
[  4]  2.0- 4.0 sec  1.11 MBytes  4.67 Mbits/sec
[  4]  4.0- 6.0 sec  1.18 MBytes  4.94 Mbits/sec
[  4]  6.0- 8.0 sec  1.15 MBytes  4.81 Mbits/sec
[  4]  8.0-10.0 sec  1.12 MBytes  4.69 Mbits/sec
[  4]  0.0-10.3 sec  6.38 MBytes  5.19 Mbits/sec

(2)172.16.2.2上以client模式运行iperf,-c host以client模式启动,host是server端地址,-i 以秒为单位显示报告间隔。

测试腾讯云>>>IDC的速度能达到5Mbps,符合预期。

[root@VM_2_2_centos ~]# iperf -c 10.0.2.14 -i 2
------------------------------------------------------------
Client connecting to 10.0.2.14, TCP port 5001
TCP window size: 45.0 KByte (default)
------------------------------------------------------------
[  3] local 172.16.2.2 port 41074 connected with 10.0.2.14 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0- 2.0 sec  2.00 MBytes  8.39 Mbits/sec
[  3]  2.0- 4.0 sec  1.12 MBytes  4.72 Mbits/sec
[  3]  4.0- 6.0 sec  1.12 MBytes  4.72 Mbits/sec
[  3]  6.0- 8.0 sec  1.12 MBytes  4.72 Mbits/sec
[  3]  8.0-10.0 sec  1.00 MBytes  4.19 Mbits/sec
[  3]  0.0-10.0 sec  6.38 MBytes  5.34 Mbits/sec

4.2 从IDC 10.0.2.14往腾讯云172.16.2.2压测。

(1)172.16.2.2上以server模块启动iperf,-s 以server模式启动,-i 以秒为单位显示报告间隔。

[root@VM_2_2_centos ~]# iperf -s -i 2
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local 172.16.2.2 port 5001 connected with 10.0.2.14 port 56336
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0- 2.0 sec  1.57 MBytes  6.57 Mbits/sec
[  4]  2.0- 4.0 sec  1.13 MBytes  4.75 Mbits/sec
[  4]  4.0- 6.0 sec  1.11 MBytes  4.65 Mbits/sec
[  4]  6.0- 8.0 sec  1.17 MBytes  4.92 Mbits/sec
[  4]  8.0-10.0 sec  1.14 MBytes  4.78 Mbits/sec
[  4]  0.0-10.5 sec  6.38 MBytes  5.10 Mbits/sec

(2)10.0.2.14上以client模式运行iperf,-c host以client模式启动,host是server端地址,-i 以秒为单位显示报告间隔。

测试IDC>>>腾讯云的速度能达到5Mbps,符合预期。

[root@VM_2_14_centos ~]# iperf -c 172.16.2.2 -i 2
------------------------------------------------------------
Client connecting to 172.16.2.2, TCP port 5001
TCP window size: 45.0 KByte (default)
------------------------------------------------------------
[  3] local 10.0.2.14 port 56336 connected with 172.16.2.2 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0- 2.0 sec  1.75 MBytes  7.34 Mbits/sec
[  3]  2.0- 4.0 sec  1.25 MBytes  5.24 Mbits/sec
[  3]  4.0- 6.0 sec  1.12 MBytes  4.72 Mbits/sec
[  3]  6.0- 8.0 sec  1.12 MBytes  4.72 Mbits/sec
[  3]  8.0-10.0 sec  1.12 MBytes  4.72 Mbits/sec
[  3]  0.0-10.2 sec  6.38 MBytes  5.24 Mbits/sec

最后附上strongSwan配置参考文档链接:

https://wiki.strongswan.org/projects/strongswan/wiki/UserDocumentation

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏网络技术联盟站

H3CSE笔记系列 | 带你走进广域网,一篇能让你知道侧重点(可用于知识点复习)

相当于:在中间运营商打通一根专线,也就是隧道两端地址要在同一网段而且通常使用私网地址。

8130
来自专栏咖啡拿铁

研究网卡地址注册时的一点思考

我曾经写过一篇和本文标题类似的文章《研究优雅停机时的一点思考》,上文和本文都有一个共同点:网卡地址注册和优雅停机都是一个很小的知识点,但是背后牵扯到的知识点却是...

10830
来自专栏生信技能树

爬虫那么危险,干嘛不直接基因数据库下载文件呢?

问了具体后,才知道原来是ncbi上的信息,相当于在ncbi上在gene库中查找,然后爬取目标信息。如下:

18130
来自专栏FreeBuf

OpenVPN服务被利用于UDP反射放大DDoS攻击

2019年09月10日, 华为AntiDDoS8000设备某荷兰数据中心局点捕获新型UDP反射放大攻击,反射源端口为1194。客户在AntiDDoS8000清洗...

14110
来自专栏CloudBest

混合云在全球得到广泛应用,国内尚处起步阶段

如今,混合云、多云环境,已经成为主流趋势。那么,从应用落地角度看,混合云到底发展到何种程度了呢?中国信息通信研究院云大所云计算部副主任马飞认为,混合云的确是大势...

8920
来自专栏CloudBest

从MPLS VPN到SD-WAN的思考

最近这一两年,SD-WAN在业界有点甚嚣尘上,而且一般都把SD-WAN视为是要取代MPLS VPN的‘掘墓人’,认为MPLS VPN早晚要被SD-WAN所淘汰。...

17320
来自专栏安恒网络空间安全讲武堂

IP匿名性研究

既然不可能做到完全匿名,我们只能提高相对匿名性,从而使得自己在网络中的隐私度更高,安全性更高。

22520
来自专栏SDNLAB

VXLAN篇之EVPN

上回说到了Flood & Learn存在着一些不足,所以,才有了后来的BGP EVPN来实现VXLAN的control-plane。既然说到了这,让我们先看一张...

39430
来自专栏鲜枣课堂

红遍全网的SD-WAN,到底是什么?

行业里的老牌通信设备商和运营商对它一致看好,新兴创业企业也把它视为千载难逢的风口机遇,对它趋之若鹜。

27210

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励