AWS站点到站点VPN和传输网关
四点七(94.29%) 7投票[s]

我最近为一个客户实现了一个AWS站点到站点的VPN,将他们的本地网络连接到他们新部署的AWS帐户。

要求是从本地网络到管理VPC的网络级连接。生产虚拟专用网络资源的支持将从管理虚拟专用网络的堡垒主机上进行。

从AWS的角度来看,这个设置很简单。随着云的形成,我们部署了一个客户网关(CGW),使用他们的内部防火墙的IP地址,创建一个虚拟专用网关(VPG),然后是VPN网关(VPN)。


内部部署需要进行一些研究才能正确配置,但一旦正确配置,它就会按预期工作。

然而,部署后,确定需要内部部署服务器连接到生产vpc资源。

我们已经在管理和生产vpc之间建立了vpc对等连接,但是VPN只将流量路由到它所连接的VPC,并且VPC对等连接不是“可传递的”,


有关这方面的更详细解释,请参阅;https://docs.aws.amazon.com/vpc/latest/peering/invalid-peering-configurations.html

考虑到允许从本地访问生产vpc资源的解决方案有:

  • 创建从本地数据中心到生产vpc的另一个VPN连接
  • 在管理vpc中部署应用程序代理
  • 部署新发布的AWS传输网关服务

客户不想增加VPN连接,因为它会增加内部防火墙的配置和复杂性,我们不相信应用程序代理可以工作,所以我们决定采用新的过境网关服务。

AWS中转网关

AWS Transit Gateway于2018年底发布。它将允许我们的客户将其本地网络连接到他们的两个AWS VPC,以及任何未来的vpc,无需在本地防火墙上配置和支持多个VPN端点,也无需在AWS中支持多个VPN网关。


实现这一点的步骤相当简单,然而,云的形成并没有覆盖所有的步骤;

为vpc部署“传输网关”和“传输网关附件”

此云形成模板假定已经存在两个vpc,每个都有一个子网。
vpc和子网ID需要输入参数部分。本地VPN端点是在AWS VPN设置之后设置的,但是IP地址被添加到vpnadress参数中。这还假设一个非BGP本地端点。

{“AWSTemplateFormatVersion”:“2010-09-09”,“description”:“中转网关”,“参数”:“vpcidmgmt”:“type”:“字符串”,“description”:“管理vpc id”,“default”:“vpc-12345678901234567”}"VPCIdProd": {"Type": "String",“description”:“生产vpc id”,“默认”:“vpc - 9876543210987654”}"MgmtPrivateAzASubnetId": {"Type": "String","Description": "Az A Subnet in Mgmt VPC",“default”:“子网-234567890412345678”}“prodprivateazsubnetid”:“type”:“字符串”,“description”:“az生产VPC中的子网”,“默认”:“子网- 34567890123456789”}“vpnadress”:“type”:“字符串”,“Description”:“On-premise VPN端点”,“默认”:“201.65.1.1”},“resources”:“customergateway”:“type”:“aws::ec2::customergateway”,“properties”:“type”:“ipsec.1”,“bgpasn”:“65000”,“ipaddress”:“ref”:“vpnadress”}}},请"TransitGateway": {"Type": "AWS::EC2::TransitGateway",“属性”:“AmazonSideAsn”:65001,“defaultRouteTableAssociation”:“启用”,“defaultRouteTablePropagation”:“启用”,“description”:“中转网关”,“dnssupport”:“启用”,“vpnempsupport”:“启用”}},“transitgatewaymgmattachment”:“type”:“aws::ec2::transitgatewayattachment”,“properties”:“subnetid”:[“ref”:“mgmtprivateazsubnetid”}“transitgatewayid”:“ref”:“transitgateway”}“vpcid”:“ref”:“vpcidmgmt”}}},请“transitgatewayProdAttachment”:“type”:“aws::ec2::transitgatewayAttachment”,“properties”:“subnetids”:[“ref”:“prodprivateazsubnetid”}“transitgatewayid”:“ref”:“transitgateway”}"VpcId": {"Ref": "VPCIdProd"}}}},请" output ": {"CustomerGateway": {"Description": "CustomerGateway Id",“value”:“ref”:“客户组织方式”}"Export": {"Name": "TransitGateway-CustomerGatewayId"}},"TransitGateway": {"Description": "TransitGateway Id",“value”:“ref”:“transitgateway”}“export”:“name”:“transitgateway transitgatewayid”}}}}

在部署云形成堆栈之后,“输出”部分将列出customergatewayid和transitgatewayid,在接下来的步骤中需要这些

创建站点到站点VPN

此步骤在AWS CLI中完成,因为云形成尚不支持它。变化客户网关ID传输网关ID到云形成堆栈的输出部分的值,或者在AWS控制台中查找。

aws ec2 create vpn connection--客户网关ID cgw-045678901234567890--传输网关ID tgw-56789012345678901--ipsec.1类型--选项“\”staticroutesonly\“:true”

创建VPN中转网关路由

附加的vpc默认添加了路由,但由于我们使用的是非BGP内部部署端点,VPN需要特别添加路由。

我们在这里添加的路由是本地网络的CIDR,例如172.31.0.0/16

从“Transit Gateway Route Tables”和“Transit Gateway Attachments”下的AWS控制台获取“Transit Gateway Route Table”的ID和VPN的“Transit Gateway Attachment ID”。

AWS EC2创建过境网关路由——目的地CIDR区172.31.0.0/16——过境网关路由表ID TGW-RTB-67890123456789012——过境网关附件ID TGW-ATTACH-7890123456789012

配置VPC子网路由

您将看到在传输网关上配置的路由只在传输网关本身中使用。因此,我们现在需要手动添加路由到VPC子网,您想使用VPN。

在我们的例子中,我们将离开vpc-vpc通信来使用vpc对等机,并且只在子网路由中添加本地网络。

从云形成模板输出中获取传输网关ID,获取路由VPC子网的路由表ID;

AWS EC2创建路由--路由表ID RTB-89012345678901234--目标CIDR块172.31.0.0/16--传输网关ID TGW-56789012345678901

总结

通过允许一个VPN连接到可以连接到多个VPC的AWS,使用传输网关可以使站点到站点的VPN更简单、更简单。

一个重要的限制是,传输网关还不支持安全组。

如果通过vpc对等连接使用安全组,从VPC对等连接切换到中转站网关,您将看到您的安全组被列为“过时”,您需要将它们重新添加为基于IP的规则。

过境通道常见问题如下:

  • 问:第一个版本中不支持哪些Amazon VPC功能?
  • 答:启动时不支持在Amazon VPC上引用安全组。Spoke Amazon vpc不能引用连接到相同AWS传输网关的其他辐条中的安全组。

这意味着它将在未来得到支持,但目前,使用安全组的VPC之间的资源访问必须保持在VPC对等连接上。

有关中转网关的详细信息
https://docs.aws.amazon.com/vpc/latest/tgw/working-with-transit-gateways.html网站

类别:
亚马逊网络服务

留下答复

留下答复

订阅
最新 最老的 多数投票
通知
谢瓦拉
客人

杰出的。

迈克
客人
迈克

您是否考虑过将TGW路线创建“恢复”的自定义资源?CFN下?

雷吉
客人
雷吉

但假设您使用现有的和生产中的站点到站点连接,将其与您的中转网关关联。这会破坏站点到站点的连接吗?

跟着我们!

克劳德解决方案博客-关注我们!