1、需求描述

最近在进行公司内部在进行容灾产品测试,将本地IDC机房网络VMware虚拟机可以容灾到AWS,由于网络通信需求,需要将本地IDC私有云网络与AWS的VPC网络进行对等连接,实现内网可以双向访问。

首先这个需求既是满足混合云网络架构需求、另一个层面也是出于数据传输层面的安全考虑、可以在容灾备份上云时可以走加密网络、而且可以优化网络传输质量。

现有很多公司都在使用公有云、私有云和IDC机房,所以在混合云场景下进行多云之间的网络私有互联是必不可少网络架构方案。

2、构建方案

前边我们已经提到了网络打通的需求,下面我们看如果想要满足这个需求,大概有几个方案可以选择。根据市面上常见的三个解决方案进行分析。

  1. AWS Site-to-Site VPN
  2. 自行搭建VPN
  3. 购买入云专线网络

其实除了以上几个方案之外,还有很多的网络解决方案,像通过软硬件SD-WAN来实现等,这里我们不在赘述。

2.1. AWS Site-to-Site VPN

通过AWS提供的Site-to-Site VPN来实现,是AWS托管的一个VPN解决方案,AWS Site-to-Site VPN方案搭建完成后,IDC与AWS VPC网络互通走的还是互联网链路,支持Internet 协议安全(IPsec)VPN连接,主要是通过AWS 虚拟私有网关(VGW)+ 客户网关 与 本地IDC的VPN设备进行互联建立隧道连接,实现IDC与AWS Site-to-Site VPN内网互联,不过我在AWS中国北京区域操作时发现并没有客户网关的地方,不知道国内是不是没有开放还是怎么回事。大家如果有兴趣也可以自行操作下

AWS Site-to-Site VPN 官方文档:https://docs.aws.amazon.com/zh_cn/vpn/latest/s2svpn/VPC_VPN.html

2.2. 自行搭建VPN

通过自行搭建IPsec VPN来进行实现内网互联,IPsec VPN解决方案也是目前企业内部使用比较多的,一般使用与企业多地办公室之间的内网打通,这样在办公时可以实现一个大二层的网络,使用上可以内网直接相关互联,减少来沟通访问的成本,而且IPsec VPN走的虽然时Internet互联网,但是网络隧道是经过加密连接的,安全性上比互联网直接访问要好很多。

2.3. 购买入云专线

通过入云专线打通实现内网互联,这种在整体架构设计上,等于是直接通过网络运营商申请一条专线网络直接接入云PoP点实现内网互联,整体传输速率以及网络质量上要快很多,但是价格成本要贵很多,根据专线网络带宽每年来进行收费,买了你用不用每年都需要缴纳这个专线费用。

经过以上三个方案的分析,AWS Site-to-Site VPN目标行不通,入云专线那好是好,测试没必要在申请拉一根专线了,而且老板也不会同意,那目前来看只能通过自行搭建VPN来实现了。

3、架构规划

自行搭建VPN实现Site-to-Site互联,架构设计设计以及所需资源如下:

3.1. 网络架构设计

左侧是IDC机房网络,网络是 192.168.10.0/24 的私有网络,主要运行了企业内部的一些服务器,都运行在这个网络里面,路由器配置了拨号的公网IP,通过边缘的路由器来进行Internet访问。

右侧AWS VPC网络是 172.16.0.0/16,VPC又分为Public subnet 172.16.0.0/20,Public subnet主要用来可以访问互联网,Private subnet 172.16.128.0/20 主要是内网主机无法访问互联网,运行一些内网服务,中间件和数据库服务。

通过IDC的边缘路由器具备可以上网的能力,而且支持IPsec VPN连接能力,通过互联网与AWS侧Public subnet可以访问公网的EC2实例来进行IPsec VPN互联隧道打通。再通过两边路由来进行策略转发做到两边内网互通。

3.2. 所需资源配置

序号 资源 内网IP 外网IP 备注
1 IDC机房路由器 192.168.10.1 固定IP地址 要用进行配置IPsecVPN与AWS EC2 自建IPsec VPN Server进行Peer互联
2 IDC 服务器网络 192.168.10.0/24 运行内网服务
3 AWS EC2实例 172.16.4.125 54.222.149.26 EC2实例,CentOS 7.x 操作系统安装strongswan IPsec VPN服务
4 Public subnet 172.16.0.0/20 AWS 公有子网,IPsec VPN Server放在此网络进行互联网访问
5 Private subnet 172.16.128.0/20 AWS 私有子网,内部网络无法进行互联网访问,只能通过Pubcli subnet的EC2进行网络转发

具备条件:

  • IDC机房私有子网不能和云侧VPC子网重复,需要保证不在同一个子网内,否则无法进行路由
  • IDC机房边缘路由器可以有固定公网IP,也可以是动态分配IP地址
  • AWS EC2实例必须保证有一个对外访问的公网IP地址
  • AWS EC2实例所在Public subnet需要增加静态路由策略,访问IDC 192.168.10.0/24 网络都做IGW网关
  • AWS侧Private subnet的网络安全组需要配置策略所有访问IDC的内网流量端口都走Public subnet EC2实例的网卡,否则Private subnet子网的所有资源无法与IDC 192.168.10.0/24 网络的虚拟机通信(如果安全组全放通可以不考虑,如果需要配置精准策略时,需注意)

重要的两个概念:

  • Public subnet(公有子网)

如果子网的默认流量路由到互联网网关,则该子网称为公有子网。例如,如果在此子网中启动的实例具有弹性 IP 地址或与之关联的公有 IP 地址,则该实例可以公开访问。

  • Private subnet(私有子网)

如果子网的默认流量路由到 NAT 实例/网关或完全没有默认路由,则该子网称为私有子网。例如,即使具有弹性 IP 地址或与之关联的公有 IP 地址,在此子网中启动的实例也不可公开访问。

对与公有子网和私有子网两个,可以理解都是VPC下面的子网网络,不过就是在创建的时候,
Public subnet子网在创建之后会关联一个互联网网关(IGW)来进行公网网络的访问
Private subnet子网在创建之后不会关联一个互联网网关(IGW),从而就算你放在这个子网里面的资源有公网IP也无法访问互联网

4、配置AWS侧IPsec VPN Server实例

下面可以安装前边的规划,在aws侧创建对应的VPC网络,包含Public subnet及Private subnet子网,可以分布在不同的AZ可用区域,并创建EC2实例并安装相关IPsec VPN软件服务。

分为以下几个步骤来进行配置:

  • 前期准备

    • 创建VPC网络及子网
    • 创建EC2实例
  • 安装配置IPsec VPN服务
  • 添加路由条目
  • 配置IDC侧IPsec VPN连接
  • 网络测试访问

4.1. 前期准备

  • 创建VPC网络及子网

这里可以按照自身需求在AWS VPC管理控制台进行创建VPC及相关子网

参考文档:https://docs.amazonaws.cn/vpc/latest/userguide/VPC_Networking.html

  • 创建EC2实例

EC2实例规格我这里选择的是t2.medium,操作系统为CentOS7.5版本,也可以按照需求自行进行调整,关于创建步骤这里不做赘述

EC2实例创建时要放在Public subnet子网内,切分配一个公网IP或弹性公网IP,让其可以访问互联网。
EC2实例所在安全组需要放通IDC侧访问的UDP500、4500两个端口用来VPN连接,另外为了访问测试,需要将ICMP端口打开

4.3. 安装配置IPsec VPN服务

  • 访问EC2实例(ssh或其他工具)
  • 配置yum源
# vi /etc/yum.repos.d/strongswan.repo[strongswan]
name = strongswan
baseurl = http://download-ib01.fedoraproject.org/pub/epel/7/x86_64/
gpgcheck = 0
enabled = 1
  • 安装openswan服务
# yum install -y strongswan
  • 禁用ipv4相关配置选项
# sysctl -a | egrep "ipv4.*(accept|send)_redirects" | awk -F "=" '{print$1"= 0"}' >> /etc/sysctl.conf
  • 开启路由转发
# 编辑/etc/sysctl.conf配置文件,增加如下内容
# vi /etc/sysctl.conf
net.ipv4.ip_forward = 1     #开启路由转发
net.ipv4.conf.default.rp_filter = 0 #关闭对数据包源地址的反向路由校验
net.ipv4.conf.all.rp_filter = 0 #关闭所有网络设备对数据包源地址的反向路由校验# 执行指令使其生效
# sysctl -p
  • 修改openswan的配置

这里主要有两个配置文件

第一个:/etc/strongswan/ipsec.conf 主要配置文件,setup和conn两个段需求配置

第二个:/etc/strongswan/ipsec.secrets 主要用来保存RSA Keys和preshared secrets(PSKS)双方认证的密钥

# 修改/etc/strongswan/ipsec.conf配置文件,添加如下内容
# vi /etc/strongswan/ipsec.conf
config setupcharondebug="all"conn %defaultikelifetime=28800s *#第一阶段生存时间*keylife=60mrekeymargin=3mkeyingtries=0keyexchange=ikev1 *#ike版本*authby=secret *#配置安全网关如何认证,默认是rsa,这里使用共享密钥*conn aws-to-idctype=tunnel *#隧道模式,支持host-to-host,host-to-network和network-to-network;如果设置transport,表示为host-to-host传输模式*left=172.16.4.125 *#本机服务器提供对外(通常是指Internet)服务的接口,网上大多说是公网IP,这个说法对于服务器是直接对接Internet,并作为内网的网关的时候,是对的;但是,对于本例,在防火墙内部,就是不对的,其IP仍然是私网地址,所以,这点很重要,要认真区分*leftid=54.222.149.26 *#设置身份ID(本端),如果是域名,使用@指定;如果用IP,直接使用IP地址接口,不需要@符号*leftsubnet=172.16.0.0/20 *#表示本地的子网网络,如果有多个网段就有leftsubnets*right=61.xx.xxx.26 *#对端公网IP,无固定IP或不确定IP,设置为%any,这里必须设置为公网IP,跟left有些不同*rightsubnet=192.168.10.0/24  *#表示对端的子网网络,如果有多个网段就有leftsubnets*rightid=61.xx.xxx.26 *#设置身份ID(对端)如果是域名,使用@指定;如果用IP,直接使用IP地址接口,不需要@符号*auto=start *#start是表示connection随Ipsec服务器启动而自动连接;add不会随ipsec服务启动而启动,需要ipsec auto up idc-to-office启动connection*ike=3des-md5-modp1024 *#第一阶段算法参数*esp=3des-md5 *#指定第二阶段的算法参数*dpdaction=hold *#eroute进入hold,等待对方的return信息;tunnel模式,推荐设置为hold;transport模式,推荐设置为clear*dpddelay=10 *#每10秒钟检测一次,默认是30秒*dpdtimeout=30 *#闲置超时时间,这个时间内没有流量,没有响应,就表示对等实体已经死亡,并删除SA,默认120秒*keyingtries=%forever
# 增加/etc/strongswan/ipsec.secrets配置文件,添加如下内容
# vi /etc/strongswan/ipsec.secrets
%any %any : PSK "yR8zZHsUx6y5RWkk2E3S"  #第一个%any表示对端外网IP,第二个%any表示本地外网IP,如果只有一个通道的话,这里可以都设置为%any; 如果有多个通道,需要指定IP地址,每一行代表一个
  • 启动ipsec服务
# strongswan start
  • 检查ipsec服务状态
# strong status


出现如下截图展示则表示所有strongswan服务启动成功,等待连接中。如果有对接连接none就会显示为正常连接的对端信息;

4.4. 添加路由条目


如上图所示,在所有需要访问IDC内网网络的子网路由表中添加目标为192.168.10.0/24,第二个目标这里选择为实例 —> IPsecVPNServer实例(这里自动会匹配IPsecVPNServer这台实例的eni网卡),则表示去往192.168.10.0/24网络都由IPsecVPNServer这台实例进行网络转发。

这里需要注意,所有同一个VPC下面Private subnet私有子网的如果都有需求进行IDC互联则需要每一个Private
subnet私有子网都需要配置这条路由条目,不然无法进行通信。另外还要注意路由配置完成之后,如果出现AWS侧无法访问IDC网络端口时,需要检查IPsecVPNServer
EC2实例的安全组是否放开了需要访问的端口。因为云侧到云下是通过IPsecVPNServer
EC2实例进行转发,所有流量都经过这台实例,确保安全组都访问才可以。

4.5. 配置IDC侧IPsec VPN连接

IDC侧我这里是直接使用边缘路由器的VPN能力,或者如果路由器没有VPN功能,也可以选择在内网找一台VM来部署安装openswan IPsec VPN来实现对等的连接配置。

  • 添加IPsec VPN的虚接口

虚接口名称,可以选择ipsec3

绑定接口 关联到WAN1,这里WAN1为外网IP地址的通信接口

  • 配置IKE安全提议

IKE验证算法、IKE加密算法、IKE DH组 —> ipsec.conf 中 conn aws-to-idc 段中ike的值3des-md5-modp1024

  • 配置IKE对等体

虚接口 —> 第一步骤创建的ipsec3

对端地址 —> AWS侧EC2实例的公网IP

协商模式 —> 选择主动模式

安全提议一 —> 选择前边创建的AWSIKE

预共享密钥(PSK) —> 选择/etc/strongswan/ipsec.secrets配置文件配置PSK值,必须保持一致

生命周期 —> 与配置文件/etc/strongswan/ipsec.secrets中ikelifetime值保持一致

DPD —> 选择开启

DPD周期 —> 与配置文件/etc/strongswan/ipsec.secrets中dpddelay值保持一致

DPD超时时间 —> 与配置文件/etc/strongswan/ipsec.secrets中dpdtimeout值保持一致

  • 配置IPsec安全提议

安全协议类型 —> 选择ESP

ESP验证算法 —> 选择MD5 与 /etc/strongswan/ipsec.secrets中 conn aws-to-idc 段中esp值3des-md5保持一致

ESP加密算法 —> 选择3DES 与 /etc/strongswan/ipsec.secrets中 conn aws-to-idc 段中esp值3des-md5保持一致

  • 配置IPsec安全策略

本地子网IP/掩码 —> IDC本地互联子网IP地址段

对端子网IP/掩码 —> AWS云侧需要互联的VPC网段,可以是大的VPC,也可以是Subnet子网

协商类型 —> IKE协商

对等体 —> AWSVPN,前边所定义的

安全提议一 —> AWSIPsec,前边所定义的

PFS —> 这里选择禁止

生命周期 —> 与配置文件保持一致,28800s

触发模式 —> 可以按需选择,流量触发/长连模式

以上配置完整即可进行应用,应用完成后,可以IDC的路由器查看连接状态,目前看是已经连接成功,已经有流量产生。

4.6. AWS侧查看连接状态

# strongswan status

通过以上查看也已经与IDC对端连接成功。

5. 网络访问测试

测试一:IDC网络192.168.10.0/24网络可以访问到AWS侧Public subnet公有子网172.16.0.0/20的EC2实例 【正常访问】

测试二:AWS侧Public subnet公有子网172.16.0.0/20可以访问到IDC 192.168.10.0/24网络**【正常访问】**

测试三:IDC网络192.168.10.0/24网络可以访问到AWS侧Private subnet公有子网172.16.128.0/20的EC2实例**【正常访问】**
测试四:AWS侧Public subnet公有子网172.16.128.0/20可以访问到IDC 192.168.10.0/24网络

到这里位置,我们通过IPsec自建VPN就实现了IDC与AWS Site-to-Site VPN的访问,后面就可以通过内网进行资源互访了。

构建AWS Site-to-Site IPsec实现内网互联相关推荐

  1. 腾讯云服务器如何实现内网互联?

    操作场景 轻量应用服务器使用腾讯云自动分配的 私有网络 VPC 进行网络隔离,默认情况下内网不与云服务器 CVM.云数据库等其他处于私有网络 VPC 中的腾讯云资源内网互通,需通过关联云联网实现.该功 ...

  2. 华为云两台机器内网互联

    文章目录 1. 前言 2. ping公网ip 3. 不同账号需要在同一大区 4. 创建虚拟私有云 5. 更换服务器所属的VPC网段 6. 创建对等连接 7. 填写对端项目ID和对端VPC ID 8. ...

  3. 为什么IPsec两端内网的网段能不能重复?分明可以实现!

    上一个IPsec实验,我们测试了两端不同子网的隧道打通,那能不能打通两端相同的子网呢? 原则上是不行的,因为不同站点的网段在设计时就要求不能冲突,这样会影响报文的正常转发.当分支数量大于2个时,也会导 ...

  4. 跨网段实现内网互通_【供暖站组网】冠航SD-LAN助力河北石家庄市30个供暖站异地组网实现内网互联互通...

    项目简介 北方地区几乎所有家庭都有暖气供应,数量和规模是非常巨大的,因此不合理不及时的处理冬季供暖的问题会产生很大的影响,目前供暖系统有以下特点: 1.供暖设备数量大且分散,无法集中管理. 2.需要人 ...

  5. 兵临城下公开课丨构建蓝队第三道防线——内网防失陷守好最后关卡

    [兵临城下]系列公开课是盛邦安全基于多年攻防实战经验,针对重保及攻防演习等场景而推出的系列直播活动,将从资产暴露面梳理.攻击面管理.脆弱性自查.安全防线加固.协同联动防御以及攻击溯源.应急响应等全流程 ...

  6. 腾讯云轻量与CVM内网互通骚操作

    本文分四段:内网互联介绍,开通教程,数据测试,骚操作. 内网互联介绍 今天腾讯云轻量和CVM已经正式开始同地区内网互通了,这一变化又提高了轻量服务器的可玩性,采用的是云联网(CCN)的形式.之前也介绍 ...

  7. 内网BT首选:BitComet使用技巧点滴

    文/飞翔鸟 BitComet是处于内网中的BT下载爱好者首选的客户端软件.它拥有独特的内网互联技术,支持UpnP的NAT和Windows XP防火墙,让处于内网中的朋友在下载的时候一样可以获得非常快的 ...

  8. 阿里云ECS同区域不同账户内网互相访问配置

    公司现在有个区域吗,需要实现两个不同阿里云账号下,但是在同一个区域里的ECS内网互联. 搜索了一下资料,一共三步就可以实现,官网资料:https://www.alibabacloud.com/help ...

  9. 互联网、政务外网、政务专网、政务内网区别是什么?(最全)

    互联网.政务外网.政务专网.政务内网区别是什么? 简介:政务网包含 (政务外网.政务内网.政务专网).是政府单位的局域网. 1.互联网 互联网(英语:Internet),又称网际网络,或音译因特网(I ...

最新文章

  1. iOS之CAEmitterLayer粒子引擎
  2. [云炬创业基础笔记]第二章创业者测试6
  3. 解决Github速度太慢的几种方案
  4. 依赖注入:一个Mini版的依赖注入框架
  5. vs2005 2008快捷键
  6. php用栈遍历目录和文件,php如何遍历目录,php非递归算法遍历目录的例子
  7. 数据分析|WordCloud PCA K-means - 「某电商平台」电脑评论分析
  8. 头脑王者开发小程序系统文案
  9. php ucfirst();函数
  10. android 入门教程速成,Android入门基础教程(小白速成1)
  11. hdu5294Tricks Device 最大流之最小割
  12. matlab 正交多项式,求助~Matlab关于正交多项式
  13. 四年级下册计算机作业,科学(四年级下册)作业.doc
  14. 鸿蒙系统可以微信吗,鸿蒙系统可以用微信吗?微信鸿蒙版本下载-游戏大玩家...
  15. 勤学勤记(四)——放弃Addon,选择纯C++
  16. ZZULIOJ【1088】手机短号【输入输出格式】
  17. Scrapy爬取中文数据的问题
  18. 算法的时间复杂度的计算
  19. NFS导致df -h卡主解决
  20. 会议OA项目(六)--- (待开会议、历史会议、所有会议)

热门文章

  1. H5+微信公众号扫二维码页面跳转功能 vue实现
  2. 【自然语言处理与文本分析】自然语言处理概要
  3. 阅兵式直播刺杀总统,无人机敢死队有多可怕
  4. Cocos2dx游戏开发系列笔记7:一个简单的跑酷游戏《萝莉快跑》的消化(附下载)...
  5. 创业者该怎么快准狠抓住知识付费项目这个机会变现?
  6. 前端开发——Ionic 3.0【爱创课堂专业前端培训】
  7. python3刷新监控网页_python - 如何不刷新网页而监控网页变化?
  8. ExpandableListView 去掉默认箭头,设置成别的图片
  9. Shell程序退出状态码的命令详解
  10. 阿里云Linux服务器新手入门(2核4G)