写点什么

如何在 AWS 上构建基于 OpenSwan 的软件 VPN 解决方案

  • 2019-11-20
  • 本文字数:4569 字

    阅读完需:约 15 分钟

如何在AWS上构建基于 OpenSwan 的软件 VPN 解决方案
### 概述


随着云的普及以及即用即付的模式,正在被大家逐渐接受,那么在初期从原始数据中心到云迁移的过程中,为了保证数据的平稳迁移,并不推荐将应用以及数据库一次性的迁移到云中。所有项目都应该分阶段来进行,阶段迁移的情况下就必须要将云资源与本地数据中心的资源互连互通。
要做到互连互通,有三种备选方案,互联网,专线直连(DX)和 VPN。从三个方面比较下这三种解决方案,安全,稳定性以及费用。DX 服务无疑是最优的一种解决方案,提供安全稳定的网络性能,高吞吐量。由于国内专线铺设所带来的高昂费用,所以在初期阶段,DX 并不是一个最优的。这里面互联网是最便宜的,因为本身数据中心就已经支付了这部分费用,只要保证云中的资源可以上互联网就可以了,但互联网面临的问题是网络依赖互联网,互联网的网络性能并不是可控的,另外一方面是互联网的安全性。VPN 呢是基于互联网的服务,虽然不能保证网络性通的可控,但可以做到数据的安全。
就以上比较而言,在初期阶段,VPN 无疑是一种高性比的安全以及节约成本的方案。考虑到目前北京区域并不支持硬件VPN的服务,即Global区域的VPN Connection。那么有没有可以替代的方案呢?答案是肯定的,一切问题都难不倒我们伟大的开源组织,开源方案如 OpenSwan (今天的主角),StrongSwan,Raccoon等等了。除了开源的解决方案外,还有一些商业解决方案,比如Sanfor 深信服,Hillstone 山石,Checkpoint , Cisco CSR1000v等也可以部署,有兴趣的可以与相应的软件提供商联系。
前面说了那么多关于VPN的各种软件,那么该如何选择呢?这里我们从使用上来划分下吧,将VPN主要划分为两类,一类是工作于客户端到服务端的模式,像OpenVPN,SSL VPN,L2TP,PPTP这些都是需要客户端主动发起连接,拨到Server端在两者之间建立一个逻辑上的隧道 (tunnel)进行通信。这种方式一般适用于个人到总部场景。服务器是无法主动发起连接到客户端。
另外一种就是站点到站点(site-to-site)的模式,像OpenSwan,StrongSwan, Raccoon 等软件,这种情况下两端会各有一个设备负责来建立两个站点之间安全通信的隧道,任何需要到对端的通信都会触发设备来建立安全隧道通信。
那么公司原有数据中心与云通信都是双向通信,所以站点到站点更合理。
实际上这里说的 VPN 即是指 IPsec VPN,IPsec 是一种工业标准,只要支持这种标准的设备都可以互相协商建立一个安全的隧道出来,比如支持的硬件设备有路由器,防火墙以及专业的 VPN 设备。
说了这么多,下面我们就以 AWS 端为 OpenSwan 与 Cisco 的路由器之间的配置为例。
### 场景及拓扑
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/1101-1.png)
拓扑如上图,AWS端建立一个VPC(CIDR:192.168.0.0/16),包含两个子网,一个可以上互联网的Public子网192.168.1.0/24以及私有子网Private 192.168.2.0/24。在公有子网上会配置一台OpenSwan实例与公司的Cisco设备做VPN连接。
OpenSwan的EIP地址为54.223.152.218 子网:192.168.1.0/24
Cisco设备的公网地址为54.223.170.5 子网:10.1.2.0/24
目标:实现AWS上私有子网192.168.2.0/24和数据中心10.1.2.0/24双向互通
### 详细配置步骤
1.配置 VPC 基础环境
1.1 创建 VPC
在AWS console界面点击VPC,在左侧点击“您的VPC”, 创建VPC
名称标签: MyVPC
CIDR块: 192.168.0.0/16
租赁:默认
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/1101-2.png)
1.2 创建子网
将鼠标点到子网,选择创建子网
标签名称:Public
VPC:选择第一步创建好的VPC
可用区:保持默认
CIDR块:192.168.1.0/24
以同样的方法创建一个192.168.2.0/24的子网
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/1101-3.png)
1.3 创建路由表
点击路由表,创建路由表
名称标签:PrivateRoute
VPC:选择1.1创建好的VPC
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/1101-4.png)
创建完成以后,点到刚刚创建好的路由表,在页面下列点击子网关联,点击编辑
在192.168.2.0/24的路由前打勾,点击保存。
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/1101-5.png)
1.4 创建 IGW
点击Internet网关,创建Internet网关
名称标签:MyIGW
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/1101-6.png)创建完成,点击附加到VPC
选择新创建好的VPC
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/1101-7.png)
2. 启动并配置 VPN 实例
2.1 启动实例
到EC2页面,点击启动实例。选择Amazon Linux
在详细信息页中,网络请选择新创建的VPC
子网选择192.168.1.0/24
点击下一步,存储标签等按需配置
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/1101-8.png)
配置安全组,选择创建一个新的安全组
添加规则
自定义的UDP规则,端口500 来源任何位置
自定义的UDP规则,端口4500 来源任何位置
自定义协议, 协议 50 来源任何位置
所有流量 来源为 192.168.2.0/24
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/1101-9.png)
注意:一定要放行来自于192.168.2.0/24的流量,否则无法通信。
最后审核启动,启动时指定一个用于登陆实例的key文件,如果没有创建一个新的。
2.2 配置弹性 IP (EIP)
在EC2页面,左侧导航栏找到弹性IP,申请分配新地址,并将其关联到新创建的OpenSwan实例。这里申请到的为 54.223.152.218。
2.3 关闭源/目的检查
在EC2页面点击OpenSwan实例,右键选择联网,更改源/目标检查,点“是,请禁用”
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/1101-10.png)
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/1101-11.png)
3. 安装配置 OpenSwan
3.1 登录到实例安装 OpenSwan
如何登陆实例请参考如下文档:
https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/putty.html
登陆完成以后,运行如下命令安装OpenSwan
`$ sudo yum -y install openswan`
3.2 根据Cisco 参数来配置 OpenSwan
修改/etc/ipsec.conf去掉最后一行include /etc/ipsec.d/*.conf 的注释
`$ sudo vim /etc/ipsec.conf`
`include /etc/ipsec.d/*.conf`


Cisco路由器的配置如下:
`crypto isakmp policy 10`
`encr aes`
`authentication pre-share`
`group 2`
`crypto isakmp key aws123 address 54.223.152.218`
`!`
`!`
`crypto ipsec transform-set OpenSwan esp-aes esp-sha-hmac`
`mode tunnel`
`!`
`!`
`!`
`crypto map OpenSwan 10 ipsec-isakmp`
`set peer 54.223.152.218`
`set transform-set OpenSwan`
`match address 100`
`!`
`!`
`interface GigabitEthernet1`
`ip address 54.223.170.5 255.255.255.252`
`ip mtu 1400`
`ip tcp adjust-mss 1360`
`crypto map OpenSwan`
`!`
`access-list 100 permit ip 10.1.2.0 0.0.0.255 192.168.2.0 0.0.0.255`
`ip route 0.0.0.0 0.0.0.0 54.223.170.6`
根据cisco的配置创建OpenSwan的配置如下:
`$ sudo vim /etc/ipsec.d/cisco.conf`
`conn cisco`
`authby=secret`
`auto=start`
`leftid=54.223.152.218`
`left=%defaultroute`
`leftsubnet=192.168.2.0/24`
`leftnexthop=%defaultroute`
`right=54.223.170.5`
`rightsubnet=10.1.2.0/24`
`keyingtries=%forever`
`ike=aes128-sha1;modp1024`
`ikelifetime=86400s`
`phase2alg=aes128-sha1`
`salifetime=3600s`
`pfs=no`
配置解释:
leftid 标明本地对应公网IP
letftsubnet为本地子网
right为对端公网地址
rightsubnet为对端子网
ike为第一阶段参数
ikelifetime为第一阶段的生存时间
phase2alg为第二阶段参数
salifetime为第二阶段生存时间
结果如下图:
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/1101-12.png)
配置预共享密钥:
`$ sudo vim /etc/ipsec.d/cisco.secrets`
54.223.152.218 54.223.170.5: PSK “aws123”
启动openswan服务并做配置检查
`$ sudo service ipsec start`
`$ sudo ipsec verify`
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/1101-13.png)
3.3 修改系统参数
更改系统参数做IP转发并关闭重定向功能
编辑/etc/sysctl.conf内核配置文件,做如下修改
`$ vim /etc/sysctl.conf`
`$ vim /etc/sysctl.conf`
`net.ipv4.ip_forward = 1`
`net.ipv4.conf.all.accept_redirects = 0`
`net.ipv4.conf.all.send_redirects = 0`
`net.ipv4.conf.default.send_redirects = 0`
`net.ipv4.conf.eth0.send_redirects = 0`
`net.ipv4.conf.default.accept_redirects = 0`
`net.ipv4.conf.eth0.accept_redirects = 0`
配置完成以后,启用新的配置
`$ sudo sysctl –p`
3.4 更改 OpenSwan 的网卡 MSS 值
`$ sudo iptables -t mangle -A FORWARD -o eth0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1387`
3.5 修改 VPC 私有子网路由表
找到VPC Console页面,在左侧点路由表,找到192.168.2.0/24关联的路由表(1.3中创建), 在页面下方点击路由,编辑
添加其他路由,
目标: 10.1.2.0/24
目标:OpenSwan实例ID (i-xxxxx)
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/1101-14.png)
4. 测试连通性
以上步骤都完成以后,就可以在192.168.2.0网段的实例进行测试了。使用 ping 测试到 10.1.2.x private 私有地址段的一个地址。
`ping 10.1.2.3`
检查 IPsec tunnel 状态:
`$ sudo service ipsec status`
`IPsec running - pluto pid: 25674`
`pluto pid 25674`
`1 tunnels up`
`some eroutes exist`
### 常见问题及排错
1. IPsec Tunnel 没有正常建立
首先检查到对端 IP 是否可以通信,检查安全组是否放行 IKE 需要的端口 UDP 500。如果网络层没问题,检查各项参数配置是否有错误。
2. 隧道建立成功,但是无法进行通信
首先检查 IP forward 是否设置为 1?VPN 实例安全组是否放行了相应的策略?路由是否正确?NAT 是否影响?
3. NAT 问题
如果您的 CGW 配置了 NAT 与 VPN 工作,根据厂家不同对 VPN 包的处理顺序不一致,如果源 NAT 在 VPN 之前被处理了,因为源地址发生了改变,所以也就不会再被 VPN 处理,造成通信失败。像 Cisco 设备就需要做 NAT 的例外策略。主流的 Cisco ASA 就需要做相应修改,参考如下:
8.2 及以前的版本:
`nat (inside) 0 access-list nat_exemption` ` access-list nat_exemption extended permit ip 192.168.1.0 255.255.255.0 10.0.0.0 255.255.255.0`
8.3 及更新的版本:
`object network obj-192.168.1.0`
`subnet 192.168.1.0 255.255.255.0`
`object network obj-10.0.0.0`
`subnet 10.0.0.0 255.255.255.0`
`nat (inside,any) source static obj-192.168.1.0 obj-192.168.1.0 destination static obj-10.0.0.0 obj-10.0.0.0 no-proxy-arp`
如果您经过以上步骤还是不能成功搭建 VPN,AWS Support 提供专业化的技术支持,可根据您当前或计划的使用案例为您提供一套独特的工具和专业知识。建议您开案例联系Support 技术支持。
**作者介绍:**
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/Hou+Ryan.PNG)
侯晓鹏
亚马逊AWS云支持工程师,多年从事网络相关支持以及架构咨询工作,在加入 AWS 以前曾担任 Juniper 高级咨询专家,负责为企业网及运营商提供专业架构咨询及网络优化工作。现任亚马逊云支持工程师,AWS 认证 Direct Connect 服务专家。多次帮助大规模企业客户解决混合云复杂技术及架构问题。
复制代码


TAGS:


Amazon VPC


,


IPsec VPN


,


大咖专栏


,


网络和内容发布


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/openswan-vpn-solutions/


2019-11-20 08:001469

评论

发布
暂无评论
发现更多内容

2024 年 7 月区块链游戏研报:市场波动与数据分化的挑战与机遇

Footprint Analytics

链游

ai做ppt的工具哪个好?盘点8个好用的AIPPT生成软件!

彭宏豪95

效率工具 职场 PPT 办公软件 AI生成PPT

VideoProc Converter 4K for mac(一站式视频处理软件) v6.5中文版

Mac相关知识分享

Mac软件 视频处理软件

腾讯云大数据 TBDS 参编信通院《数据库发展研究报告》,引领数据湖仓创新

腾讯云大数据

TBDS

构建数据中台,引领零售业数字化转型的最佳实践

数造万象

数据中台 零售 数字化 数据智能 实践案例

腾讯云 ES 之日志分析新范式:10 倍性价比提升!基于 ES Serverless 完成审计日志溯源

腾讯云大数据

ES

从困境到突破,EasyMR 集群迁移助力大数据底座信创国产化

袋鼠云数栈

集群架构 大数据存储 大数据计算与存储 大数据计算引擎 集群迁移

润开鸿“龙芯+OpenHarmony”开发平台DAYU431先锋派新品发布

坚果

OpenHarmony 润开鸿

最佳实践:解读GaussDB(DWS) 统计信息自动收集方案

华为云开发者联盟

大数据 GaussDB(DWS) 企业号 8 月 PK 榜 2024企业号8月pk 实时查询

官宣|Apache Flink 1.20 发布公告

Apache Flink

flink 实时计算 官宣

观测云:多云架构下的监控革新与效能提升

可观测技术

监控 多云

天翼云HBlock有奖众测活动 在线邀请存储Geek玩转轻量存储

InfoQ写作社区官方

热门活动 礼品 活动推荐 天翼云

Java RMI技术详解与案例分析

不在线第一只蜗牛

Java

打卡智能中国(八):“水花消失术”的AI秘籍

脑极体

AI

言犀智能体平台上线了!赶紧来试试!连接大模型与企业应用的“最后一公里”

京东科技开发者

观测云:零售业数据监控与分析的革新者

可观测技术

监控 零售

继“蓝屏”事件之后,微软再次出现全球性宕机

我再BUG界嘎嘎乱杀

黑客 网络安全 安全 DDoS 网安

云手机:海外社媒运营必备工具

Ogcloud

云手机 海外云手机 云手机海外版 云手机群控 海外社媒运营

JavaScript 字符串方法,让开发者生活更轻松

伤感汤姆布利柏

Prometheus Exporter 在观测云中的应用与优势

可观测技术

#Prometheus

Grafana 与观测云:无缝集成的监控可视化体验

可观测技术

数据可视化

解锁亚马逊商品数据:API获取商品列表信息

tbapi

亚马逊API 亚马逊商品数据采集 亚马逊商品列表接口

在国内怎么运营TikTok?试试云手机!

Ogcloud

云手机 海外云手机 tiktok云手机 云手机海外版 海外云手机推荐

将数据库系统实践转向 AI:使用生成式 AI 创建高效的开发和维护实践

哦豁完蛋了

AI Codec

一文全面了解HPC高性能计算平台是什么、怎么选型?高性能计算平台CHPC 都能做什么?

XxinQi

给我5分钟,保证教会你在vue3中动态加载远程组件

EquatorCoco

Vue 动态加载

免费一站式搭建企业云上数据库与BI 数据可视化分析平台

XxinQi

最新进展!Intel 18A产品,成功点亮!

E科讯

安全性和合规性:保障企业数据的安全

可观测技术

数据安全 数据合规

AnyMP4 Screen Recorder for Mac v2.2.16激活版 视频捕获与录制工具

iMac小白

NFTScan 正式上线 Gravity NFTScan 浏览器和 NFT API 数据服务

NFT Research

NFT NFTScan

如何在AWS上构建基于 OpenSwan 的软件 VPN 解决方案_其他_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章