将一个区域中的 VPC 之间的流量路由到另一个区域中的 VPC

将一个区域中的 VPC 之间的流量路由到另一个区域中的 VPC

为了让俄勒冈州(us-west-2)的 VPC 中的实例能够联系爱尔兰另一个 VPC(eu-west-1)上的实例,我在两个区域都安装了 OpenSwan 网关机器,并在两个区域之间建立了正常运行的 IPSEC 隧道。

Details:
Oregon VPC CIDR: 172.31.0.0/16
Ireland VPC CIDR: 172.91.0.0/16

在爱尔兰,我使用自己编写的 CloudFormation 模板创建了一个新堆栈,该堆栈除其他内容外还创建了一个新的隔离 VPC,而 CloudFormation 正在运行的任务之一是在默认的爱尔兰 VPC 和新创建的(隔离)VPC 之间进行对等。

The new isolated VPC CIDR: 172.52.0.0/16.

目前,如果我从位于俄勒冈州默认 VPC(172.31.xx)中的实例向位于爱尔兰默认 VPC(172.91.xx)中的实例运行 ping 命令,它会非常有效。

接下来,我希望新的独立 VPC(172.52.xx)中的机器能够访问俄勒冈州默认 VPC(172.31.xx)中的实例。

与俄勒冈州的默认 VPC 关联的路由表配置为路由流量:

to: 172.52.0.0/16 GW: Interface of the OpenSwan server in Oregon.
to: 172.91.0.0/16 GW: Interface of the OpenSwan server in Oregon.

与爱尔兰默认 VPC 关联的路由表配置为路由流量:

to: 172.31.0.0/16 GW: Interface of the OpenSwan server in Ireland.
to: 172.52.0.0/16 GW: The peering connection ID (between 172.52.x.x and 172.91.x.x)

附属于 OpenSwan 实例@Oregon 的安全组:

Allows all traffic to 172.52.x.x/16, 172.91.x.x/16, 172.31.x.x/16.
Allows UDP 500 and 4500 to the EIP of the OpenSwan instance in Ireland.

附属于爱尔兰的 OpenSwan 实例的安全组:

Allows all traffic to 172.52.x.x/16, 172.91.x.x/16, 172.31.x.x/16.
Allows UDP 500 and 4500 to the EIP of the OpenSwan instance in Oregon.

ipsec.conf:

version 2.0     # conforms to second version of ipsec.conf specification

# basic configuration
config setup
        protostack=netkey
        nat_traversal=yes
        virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:172.91.0.0/16,%v4:172.52.0.0/16,%v4:25.0.0.0/8,%v4:172.31.0.0/16,%v4:172.59.0.0/20,%v6:fd00::/8,%v6:fe80::/10
        oe=off

include /etc/ipsec.d/*.conf

我能够从每台 OpenSwan 机器(俄勒冈/爱尔兰) ping 通位于俄勒冈默认 VPC 中的实例,反之亦然,但我无法从位于 172.52.xx/16 子网中的实例 ping 通该实例。

您认为我遗漏了哪条路线?我需要允许爱尔兰独立 VPC 中的实例到达俄勒冈州的默认 VPC。

答案1

您的配置将无法工作,因为 VPC 对等连接不具有传递性,请参阅:http://docs.aws.amazon.com/AmazonVPC/latest/PeeringGuide/invalid-peering-configurations.html#transitive-peering请参阅官方文档。对于您的设置,这意味着只有爱尔兰默认 VPC 和爱尔兰隔离 VPC 之间的流量会流动(172.91.0.0/16 <-> 172.91.0.0/16)

即使您在隔离 VPC 和默认 VPC 路由表中都添加了路由,从俄勒冈发往隔离 VPC(172.31.0.0/16 <-> 172.52.0.0/16)的数据包也将被对等链接丢弃,但我认为您遗漏了这一点。

如果您只需要一个方向的连接(即俄勒冈州的隔离 VPN 客户端中的服务器。您可以让 openVPN 实例爱尔兰 NAT 流量从俄勒冈州流向隔离 VPC。这将使跨对等链路的流量来自允许的 172.91.0.0/16。

如果 NAT 不起作用,您需要在隔离 VPC 和俄勒冈 VPC 之间建立直接连接,可以使用更多 VPN 隧道或新的跨区域对等连接https://aws.amazon.com/about-aws/whats-new/2017/11/announcing-support-for-inter-region-vpc-peering/ (请注意,我还没有使用它,所以我不知道它可能有哪些额外的限制)

答案2

好吧,看来亚马逊听到了我的呼声,扩展了当前的“create-vpc-peering”命令几天前刚刚发布,现在它允许跨不同区域对等 VPC。

目前它似乎还不受 AWS Cloud Formation 支持,但可以通过 UI 和 Cli 完成。

如果你看看亚马逊的官方文档-create-vpc-peering,你会看到一个新的开关:

[--peer-region <value>]

因此,不再需要区域之间的 VPN,因为我可以使用此跨区域对等功能来实现在爱尔兰的隔离 VPC 和俄勒冈的管理 VPC 之间建立网络的目标。

相关内容