aws搭外网访问环境


如之前使用软件VPN,硬件VPN或AWSDirectConnect连接客户网络与AWS所说,要连接AWSVPC网络和客户端网络的方式有3种。之前一篇文章亚马逊云AWS搭建软件VPN(ClientVPN)教程已经介绍了如何使用软件VPN的方法,下面介绍下如何使用硬件VPN。这种方式的VPN实际上是通过客户网络的硬件与亚马逊AWSVPC的VGW(VirtualPrivateGateway)建立一条IPSecVPN隧道,因此也可以叫做SitetoSiteVPN。

因为挨踢小茶手头上没有找到可用的可以充当硬件CGW(CustomerGateway)的设备,因此先是尝试使用家里闲置的树莓派(Ubuntu内核)来做这个实验,但是以失败告终,可能是因为Ubuntu版本和配置文件不匹配造成的。然后又尝试了essServerEC2实例,也以失败告终……最后没有办法,找到了著名的防火墙软件pfSense来做才成功。pfSense有很丰富的GUI界面,因此对于LinuxCLI不太熟悉的朋友,使用这个软件也比较省心一些。

大致上拓扑是这样的,我在日本东京区域建立了一个VPC(192.168.0.0/16)以及一个公共网段192.168.1.0/24,模拟客户网络(图右侧)。这个VPC里面创建了一个装有pfSense的EC2实例,这个实例通过公网的Gateway访问外网,同时这个EC2实例充当了CGW的角色。然后在悉尼区域建立了一个VPC(10.0.0.0/8)以及一个私有网段10.0.0.0/24(图左侧),在这个VPC内创建CGW,VGW和VPN连接,建立与客户端网络的IPsecVPN隧道。另外还在这个私有网络中创建了一台普通的LinuxEC2主机,用来最后测试连通性。

这次的VPN两边的网络使用静态路由的方式进行通信,并没有使用动态路由协议BGP,挨踢小茶在亚马逊云AWS搭建基于BGP动态路由的硬件VPN(SitetoSiteVPN)教程中使用了BGP协议来做这个实验。

a.Disabled:uncheckb.KeyExchangeversion:Protocol:IPv4d.Interface:WANe.RemoteGateway:f.Description:

Phase1proposal(Authentication)a.AuthenticationMethod:MutualPSKb.Negotiationmode:Mainc.Myidentifier:MyIPaddressd.Peeridentifier:PeerIPaddresse.Pre-SharedKey:

Phase1proposal(Algorithms)a.Encryptionalgorithm:aes128b.Hashalgorithm:sha1c.DHkeygroup:2d.Lifetime:seconds

AdvancedOptionsa.DisableRekey:uncheckb.ResponderOnly:uncheckc.NATTraversal:Autod.DeedPeerDetection:EnableDPDDelaybetweenrequestingpeeracknowledgement:10secondsNumberofconsecutivefailuresallowedbeforedisconnect:3retries

a.Disabled:uncheckb.Mode:Tunnelc.LocalNetwork:Type:Address:192.168.1.0/24d.RemoteNetwork:Type:NetworkAddress:10.0.0.0/24e.Description:

Phase2proposal(SA/KeyExchange)a.Protocol:ESPb.Encryptionalgorigthms:aes128c.Hashalgorithms:sha1d.PFSkeygroup:2e.Lifetime:seconds

点击Status->IPsec可以查看IPSecVPN的状态,可以看到这个时候,VPN连接已经成功建立了。

打开AWSConsole,可以看到在VPNConnection->TunnelDetails上看到,2个Tunnel的状态已经变成了UP。

这个时候,在悉尼区域创建了一个新的EC2主机,私有地址是10.0.0.120。从pfSense(192.168.1.88)ping10.0.0.120已经可以通了,证明客户网络和AWS的网络成功打通。

pfSense防火墙可以通过插件支持BGP路由,因此也可以通过类似的方法建立基于BGP的IPSecVPN连接,或者是CloudHub架构下的多条IPSecVPN连接。如果有条件的话,还是建议使用硬件的防火墙/路由器来建立IPSecVPN连接。另外,pfSense还有一种更方便的方法配置IPSecVPN,它可以直接通过essKeyID和SecretKey调用AWS的资源,并且直接启用BGP。具体操作步骤可以参照一下AWSVPCWizardUserGuide。

可以将pfsense做成东京region的网关吗?如果有其他的ec2实例想访问sydneyregion的机器。

@casoul当然也是可以的,但是需要改动VPC默认路由,将默认路由指到pfsense上。并且需要考虑带宽瓶颈喔~

Δdocument.getElementById("ak_js_1").setAttribute("value",(newDate()).getTime());