Amazon Virtual Private Cloud
VPC 对等指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

使用 ClassicLink 进行配置

如果您在两个 VPC 之间有 VPC 对等连接,而且存在一个或多个 EC2-Classic 实例 (这些实例通过 ClassicLink 连接到这两个 VPC 中的一个或两个),则可以扩展 VPC 对等连接以启用 EC2-Classic 实例与 VPC 对等连接的另一端的 VPC 中的实例之间的通信。这将使 EC2-Classic 实例和 VPC 中的实例能够通过私有 IP 地址进行通信。为此,您允许本地 VPC 与对等 VPC 中链接的 EC2-Classic 实例进行通信,或者您允许本地链接的 EC2-Classic 实例与对等 VPC 中的 VPC 实例进行通信。

重要

无法启用 EC2-Classic 实例进行 IPv6 通信。您可以在 VPC 对等连接的任一侧启用 VPC 实例,以通过 IPv6 相互通信;但是,通过 ClassicLink 与 VPC 链接的 EC2-Classic 实例只能通过 IPv4 与 VPC 对等连接任一侧的 VPC 实例进行通信。

要启用 VPC 对等连接以便与链接的 EC2-Classic 实例进行通信,则必须修改申请方 VPC 对等选项 (如果您是 VPC 对等连接的申请方) 且必须修改接受方 VPC 对等选项 (如果您是 VPC 对等连接的接受方)。您可以使用 describe-vpc-peering-connections 命令来验证哪种 VPC 是 VPC 对等连接的接受方和申请方。

您可以修改 VPC 对等连接选项,如下所示:

  • 使本地链接的 EC2-Classic 实例能够与对等 VPC 中的实例进行通信

    在这种情况下,您需修改 VPC 对等连接选项以允许本地 ClassicLink 连接与 VPC 对等连接另一侧的对等 VPC 之间的出站通信。对等 VPC 的所有者可修改 VPC 对等连接选项来允许本地 VPC 与远程 ClassicLink 连接之间的出站通信。

  • 使本地 VPC 能够与对等 VPC 中已链接的 EC2-Classic 实例进行通信

    在这种情况下,您需修改 VPC 对等连接选项以允许本地 VPC 与 VPC 对等连接另一侧的远程 ClassicLink 连接之间的出站通信。具有链接的 EC2-Classic 实例的对等 VPC 的所有者修改 VPC 对等连接选项,允许从本地 ClassicLink 连接到远程 VPC 的出站通信。

当您允许本地链接的 EC2-Classic 实例与对等 VPC 中的实例进行通信时,必须手动将路由添加到具有对等 VPC CIDR 块的目的地和 VPC 对等连接的目标的本地 VPC 的主路由表。链接的 EC2-Classic 实例未与 VPC 中的任何子网关联;它依赖主路由表来与对等 VPC 进行通信。

重要

VPC 对等连接的路由必须添加到主路由表,不管带对等连接的现有路由的任何自定义路由表如何。如果没有,则 EC2-Classic 实例无法与对等 VPC 进行通信。

当您启用本地 VPC 以便通过远程 ClassicLink 连接进行通信时,路由将自动添加到所有本地 VPC 路由表,其目的地为 10.0.0.0/8,目标为 Local。这将允许与远程链接的 EC2-Classic 实例进行通信。如果您的路由表已具有 10.0.0.0/8 IP 地址范围 (包括 VPC 对等连接路由) 内的静态路由,则无法启用本地 VPC 以通过远程 ClassicLink 连接进行通信。

注意

您可以修改以下区域中的 VPC 对等连接选项:

  • 美国东部(弗吉尼亚北部)

  • 美国西部(加利福尼亚北部)

  • 美国西部(俄勒冈)

  • 欧洲(爱尔兰)

  • 亚太区域(东京)

  • 亚太区域(新加坡)

  • 南美洲(圣保罗)

  • 亚太区域(悉尼)

在以下方案中,为 ClassicLink 启用 VPC A,并通过使用 ClassicLink 将实例 A 链接到 VPC A。VPC B 在另一个 AWS 账户中,并且与使用 VPC 对等连接 pcx-aaaabbbb 的 VPC A 对等。VPC 对等连接已由 VPC A 请求并且已由 VPC B 接受。您希望实例 A 通过私有 IP 与 VPC B 中的实例进行通信,并且希望 VPC B 中的实例通过私有 IP 与实例 A 进行通信。

注意

在此方案中,VPC B 可以是支持 EC2-Classic 的账户中的 VPC 或仅支持 EC2-VPC 的账户。

 与本地 ClassicLink 对等的 VPC

VPC A 的路由表包含本地 VPC 流量的路由和用来支持与链接的 EC2-Classic 实例的通信的路由。VPC A 的自定义路由表包含两种路由,一种路由允许子网中的实例通过 VPC 对等连接与对等 VPC 进行通信,另一种路由可将所有 Internet 流量路由至 Internet 网关。VPC B 的自定义路由表包含一种路由,该路由允许子网中的实例通过 VPC 对等连接与对等 VPC 进行通信。

路由表 目标 目标 备注
VPC A 自定义 172.31.0.0/16 本地 VPC A 的默认本地路由。
192.168.0.0/16 pcx-aaaabbbb 为 VPC A 和 VPC B 之间的对等连接手动添加的路由。
10.0.0.0/8 本地 为允许 ClassicLink 通信自动添加的路由 (在将实例链接到 VPC A 时添加)。
0.0.0.0/0 igw-11aa22bb 为将 Internet 流量路由至 Internet 网关而手动添加的路由。
VPC A 主 172.31.0.0/16 本地 VPC A 的默认本地路由。
10.0.0.0/8 本地 为允许 ClassicLink 通信自动添加的路由 (在将实例链接到 VPC A 时添加)。
VPC B 自定义 192.168.0.0/16 本地 VPC B 的默认本地路由。
172.31.0.0/16 pcx-aaaabbbb 为 VPC A 和 VPC B 之间的对等连接手动添加的路由。

VPC A 的所有者必须修改 VPC 对等连接才能使实例 A 与 VPC B 进行通信,并更新主路由表。VPC B 的所有者必须修改 VPC 对等连接才能使 VPC B 与实例 A 进行通信。

修改 VPC A 的 VPC 对等连接

要允许从 EC2-Classic 实例到 VPC B 的通信,VPC A 的 AWS 账户所有者必须修改 VPC 对等连接选项,以允许本地 ClassicLink 连接将流量发送至对等 VPC 中的实例。您可以使用 Amazon VPC 控制台或 AWS CLI 修改 VPC 对等连接。

使用控制台修改 VPC 对等连接

  1. 打开 Amazon VPC 控制台 https://console.amazonaws.cn/vpc/

    VPC A 的所有者必须登录控制台。

  2. 在导航窗格中,选择 Peering Connections

  3. 选择 VPC 对等连接,然后选择 ActionsEdit ClassicLink Settings

  4. 选择允许本地链接的 EC2-Classic 实例与对等 VPC 通信的选项,然后选择 Save

使用 AWS CLI 修改 VPC 对等连接

您可以使用 modify-vpc-peering-connection-options 命令。在这种情况下,VPC A 是 VPC 对等连接的请求者;因此请按照下面的方法修改请求者选项:

Copy
aws ec2 modify-vpc-peering-connection-options --vpc-peering-connection-id pcx-aaaabbbb --requester-peering-connection-options AllowEgressFromLocalClassicLinkToRemoteVpc=true

更新主路由表

未对 VPC B 的路由表或 VPC A 的自定义路由表进行任何更改。VPC A 的所有者必须向主路由表手动添加路由,以允许链接的 EC2-Classic 实例通过 VPC 对等连接进行通信。

目标 目标
172.31.0.0/16 本地
10.0.0.0/8 本地
192.168.0.0/16 pcx-aaaabbbb

有关添加路由的更多信息,请参阅 Amazon VPC 用户指南 中的在路由表添加和删除路由

修改 VPC B 的 VPC 对等连接

接下来,VPC B 的 AWS 账户所有者必须修改 VPC 对等连接选项,以允许 VPC B 将流量发送到 EC2-Classic 实例 A。

使用控制台修改 VPC 对等连接

  1. 打开 Amazon VPC 控制台 https://console.amazonaws.cn/vpc/

    VPC B 的所有者必须登录控制台。

  2. 在导航窗格中,选择 Peering Connections

  3. 选择 VPC 对等连接,然后选择 ActionsEdit ClassicLink Settings

  4. 选择允许本地 VPC 实例与对等 VPC 中的 EC2-Classic 实例通信的选项,然后选择 Save

使用 AWS CLI 修改 VPC 对等连接

VPC B 收到 VPC 对等连接;因此,请按照下面的方法修改接受方选项:

Copy
aws ec2 modify-vpc-peering-connection-options --vpc-peering-connection-id pcx-aaaabbbb --accepter-peering-connection-options AllowEgressFromLocalVpcToRemoteClassicLink=true

未对 VPC A 的路由表进行任何更改。新的路由将自动添加到 VPC B 的路由表,从而允许 VPC B 中的实例与 VPC A 中链接的 EC2-Classic 实例进行通信。

路由表 目标 目标 备注
VPC A 自定义 172.31.0.0/16 本地 VPC A 的默认本地路由。
192.168.0.0/16 pcx-aaaabbbb 为 VPC A 和 VPC B 之间的对等连接手动添加的路由。
10.0.0.0/8 本地 为允许 ClassicLink 通信自动添加的路由 (在将实例链接到 VPC A 时添加)。
0.0.0.0/0 igw-11aa22bb 为将 Internet 流量路由至 Internet 网关而手动添加的路由。
VPC A 主 172.31.0.0/16 本地 VPC A 的默认本地路由。
10.0.0.0/8 本地 为允许 ClassicLink 通信自动添加的路由 (在将实例链接到 VPC A 时添加)。
192.168.0.0/16 pcx-aaaabbbb 为允许链接的 EC2-Classic 实例通过 VPC 对等连接与 VPC B 进行通信而手动添加的路由。
VPC B 自定义 192.168.0.0/16 本地 VPC B 的默认本地路由。
172.31.0.0/16 pcx-aaaabbbb 为 VPC A 和 VPC B 之间的对等连接手动添加的路由。
10.0.0.0/8 本地 为允许 ClassicLink 与 VPC A 中链接的实例进行通信而自动添加的路由。

查看 VPC 对等连接选项

您可以使用 Amazon VPC 控制台或 AWS CLI 查看接受方 VPC 和申请方 VPC 的 VPC 对等连接选项。

使用控制台查看 VPC 对等连接选项

  1. 打开 Amazon VPC 控制台 https://console.amazonaws.cn/vpc/

  2. 在导航窗格中,选择 Peering Connections

  3. 选择 VPC 对等连接,然后选择 ClassicLink。显示已启用或已禁用的 VPC 对等连接选项的相关信息。

使用 AWS CLI 查看 VPC 对等连接选项

您可以使用 describe-vpc-peering-connections 命令:

Copy
aws ec2 describe-vpc-peering-connections --vpc-peering-connection-id pcx-aaaabbbb
{
    "VpcPeeringConnections": [
        {
            "Status": {
                "Message": "Active", 
                "Code": "active"
            }, 
            "Tags": [
                {
                    "Value": "MyPeeringConnection", 
                    "Key": "Name"
                }
            ], 
            "AccepterVpcInfo": {
                "PeeringOptions": {
                    "AllowEgressFromLocalVpcToRemoteClassicLink": true, 
                    "AllowEgressFromLocalClassicLinkToRemoteVpc": false,
                    "AllowDnsResolutionFromRemoteVpc": false
                }, 
                "OwnerId": "123456789101", 
                "VpcId": "vpc-80cb52e4", 
                "CidrBlock": "172.31.0.0/16"
            }, 
            "VpcPeeringConnectionId": "pcx-aaaabbbb", 
            "RequesterVpcInfo": {
                "PeeringOptions": {
                    "AllowEgressFromLocalVpcToRemoteClassicLink": false, 
                    "AllowEgressFromLocalClassicLinkToRemoteVpc": true,
                    "AllowDnsResolutionFromRemoteVpc": false
                }, 
                "OwnerId": "111222333444", 
                "VpcId": "vpc-f527be91", 
                "CidrBlock": "192.168.0.0/16"
            }
        }
    ]
}