AWS China S2S (Solution-Custom)
请关注微信公众号:插秧者 获取更多资料。
转载请说明出处!!!
理论:
IPsec:安全协议(Internet Protocol Security,缩写为IPsec),是一个协议组合,协议工作在OSI模型中网络层。
IKE:密钥交换(Internet Key Exchange,简称IKE或IKEv2)是一种网络协议,归属于IPsec协议族之下。
ESP:安全报文协议(Encapsulating Security Payload,简称ESP)是一种安全报文协议,范畴于ICP-IP。
关于IKE v1和IKE v2差别这里不做详细的阐述了,一个重要的差别 IKE v1一般被称为Policy Based的VPN,IKEv2一般被称为Route Based的VPN。详情请参阅RFC5996做了定义。接下来阐述一下IKE的工作过程(参阅下图):
IKE的工作过程:
-
启动IKE阶段1,目标保护的流量触发协商过程,对通讯双方进行身份,两端之间建立一条安全通道。
-
启动IKE阶段2,在阶段1的安全通道内协商IPSec参数。
-
加密传输,按照协商好的IPSec参数对数据流进行加密,HASE等进行双向传输的保护。
如果需要支持多站点那么需要采用Route Based模式,IKE v2不同的设备配置方法不同,可能密钥算法类型不支持,前期一定调研好本地的硬件设备的类型,以及VPN的模式,被动还是主动,加密算法等。一般IKE v1是支持的。参考一做网络的朋友提供的设备资料,参阅之后,进行了简单的总结如下(可能有更新)供前期实施调研朋友们的参考: 支持IKEv1和IKEv2的设备供应商(含软件提供) Barracuda Networks,Cisco,F5,Juniper,Palo AltoNetworks,WatchGuard等。仅支持IKEv1的设备提供商:Allied Telesis,Citrix,Internet Initiative Japan (IIJ),Brocade等。仅支持IKEv2的设备提供商:A10 Networks, Inc,Microsoft(Windows Server 2012 RRAS),ShareTech, SonicWall等。
本章节参考文献:
IPsec:
https://en.wikipedia.org/wiki/IPsec
Routing protocol:
https://en.wikipedia.org/wiki/Routing_protocol
IKE:
https://en.wikipedia.org/wiki/Internet_Key_Exchange
AWS VPN Gateway解决方案实践:
理论的简单普及后,那我们接下来实践一下VPN的解决办法,在国内做公有云的朋友也知道。AWS在中国区VPN的Gateway一直没有上线,这个…个人认为当然不是一个技术问题,很大程度是公关的问题,我们没权利讨论这个问题。接下来实践探讨一下在AWS China区域自定义的VPN Gateway创建布署的技术的细节和注意事项。
我们会采用两个EC2,实现两个方案,从操作系统入手:
A: Linux实例:基于CentOS 7 Strongswan的布署
B: Windows实例:基于Windows Server 2012 RRAS的布署。
AWS VPC(公有子网,私有子网)已经创建完毕(关于AWS VPC的理论这里就不展开阐述)。
详情参阅:https://docs.aws.amazon.com/zh_cn/AmazonVPC/latest/UserGuide/VPC_Introduction.html
VPC参数:VPC CIDR: 10.101.0.0/16,公有子网 CIDR: 10.101.0.0/24, 私有子网 CIDR: 10.101.10/24
路由表A:关联公有子网,路由表B:关联私有子网(默认为VPC的主路由)
IDC1:CIDR: 10.124.0.0/16 VPN设备:Cisco (配置IKE v2)
IDC2:CIDR: 10.107.0.0/24 VPN设备:Juniper(配置 IKE v1)
那我们接下来会搭建两中方案实现AWS VPC和IDC1&IDC2的站点到站点(S2S IPsec)的连接。
EC2创建(必须创建在VPC 的公有子网内):
Linux实例:基于CentOS 7 Strongswan的布署
Step1: EC2实例的创建
AMI: 选择社区AMIàCentOS 7 x86_64GenericCloud 1801 (AWS社区AMI命名格式:Linux版本+位数+定制版本+年月)关于GenericCloud版本为官方专门的发布同样也有Azure专门定制的版本.
参考:
https://cloud.centos.org/centos/7/images/
其次剩下创建EC2过程了,选择公有子网创建即可。
Step2: 实例NSG等附属组件配置
A.网络安全组(入站新增加以下3条规则,为了安全来源可以具体的CIDR):
类型 |
协议 |
端口范围 |
来源 |
自定义协议 |
50 |
全部 |
0.0.0.0/0 |
自定义UDP规则 |
UDP |
500 |
0.0.0.0/0 |
自定义UDP规则 |
UDP |
4500 |
0.0.0.0/0 |
B.网卡IP检测配置:
选择EC2à查看描述à网络接口eth0(一定是eth0)排出多网卡的à操作à更改源/目标。检查à已禁用保存
C.路由表A,路由表B配置:
新增两条路由:目标:10.124.0.0/16à目标:EC2实例或EC2实例eth0(网卡ID)
目标:10.107.0.0/24à目标:EC2实例或EC2实例eth0(网卡ID)
D.EIP(弹性IP)的关联:
生成EIPà操作à关联àEC2实例
Note:以上四个操作没有先后顺序,建议每个操作步骤最好给每个资源打上Tag,方便管理和后续排查问题。
Step3: Strongswan配置以及参数说明
A. 配置系统,SSH登进EC2,默认用户名centos,执行操作配置
sudo yum install epel-release
#添加额外的安装源,安装扩展包
sudo yum install strongswan -y
#安装Strongswan
sudo vi /etc/sysctl.conf
#开启系统转发等配置信息
net.ipv4.ip_forward = 1
sudo sysctl -p
#应用刷新配置
B. 配置Strongswan
sudo vi /etc/strongswan/ipsec.conf
#编辑配置文件
sudo vi /etc/strongswan/ipsec.secrets
#配置密钥
EIP : PSK “密钥”
sudo strongswan strat /restart
#启动和重启Strongswan
sudo strongswan statusall
#查看连接状态
IDC1和IDC2硬件配置完毕后,查看Strongswan的状态2up现在进行ICMP测试校验。
ICMP包测试,ping IDC1测试:
ICMP包测试,ping IDC2测试:
Note: 其中3个配置文件在我的Github里:https://github.com/BoushZhou/AWS
关于Strongswan HA的解决方案,需要借助于集群,时间紧迫后续有空会更新一下,感兴趣的朋友可以自自己先研究一下,HA的参考文献:https://wiki.strongswan.org/projects/strongswan/wiki/HighAvailability
本章节参考文档:
https://wiki.archlinux.org/index.php/StrongSwan
https://wiki.strongswan.org/projects/strongswan/wiki/UserDocumentation
Windows实例:基于Windows Server 2012 RRAS的布署
将会采用Windows ServerRRAS的服务,关于RRAS的服务的介绍这里就不阐述了。那么接下来只需要两个步骤。因为目前支持IKEv2,那我们接下来将打通AWS与IDC1之间的网路。
Setp1:EC2的实例创建。
这里不就不过多阐述了,可以使用本地的镜像传至AWS创建,使用本地的License。前提是创建选择专用类型的机器,如果选用AWS的镜像就采用官方的镜像即可。EC2的路由表和网卡等配置采用以上Linux的配置方法即可。
Setp2:修改Powershell的参数
我创建的EC2是Windows Server 2012 R2版本的,那我们下载R2版本的脚本只须更改一部分参数即可。
脚本下载地址:
2012 R2: https://github.com/BoushZhou/AWS/blob/master/microsoft-rras-windows-server-2012-R2.ps1
2012: https://github.com/BoushZhou/AWS/blob/master/microsoft-rras-windows-server-2012.ps1
修改3个参数,以管理员身份运行Powershell_ISE ,运行脚本即可,配置运行,对端设备配置好就可以测试。
然查看路由和远程访问服务拨号的连接状态。状态已变为:已连接
连接成功,接下来ICMP测试一下连通性:
截止目前两个方案测试完毕。
本章节参考文献:
https://blogs.technet.microsoft.com/canitpro/2016/01/11/step-by-step-connect-your-aws-and-azure-environments-with-a-vpn-tunnel/
https://blogs.technet.microsoft.com/networking/2015/03/26/troubleshooting-site-to-site-s2s-vpn-connections-on-hnv-gateway/