使用 ClassicLink 进行 VPC 对等配置
我们即将停用 EC2-Classic。我们建议您从 EC2-Classic 迁移到 VPC。 |
如果您在两个 VPC 之间有 VPC 对等连接,而且存在一个或多个 EC2-Classic 实例(这些实例通过 ClassicLink 连接到这两个 VPC 中的一个或两个),则可以扩展 VPC 对等连接以启用 EC2-Classic 实例与 VPC 对等连接的另一端的 VPC 中的实例之间的通信。这将使 EC2-Classic 实例和 VPC 中的实例能够通过私有 IP 地址进行通信。为此,您允许本地 VPC 与对等 VPC 中链接的 EC2-Classic 实例进行通信,或者您允许本地链接的 EC2-Classic 实例与对等 VPC 中的 VPC 实例进行通信。
通过 ClassicLink 的通信仅在 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 对等连接选项:
-
美国东部(弗吉尼亚北部)
-
美国西部(北加利福尼亚)
-
美国西部(俄勒冈)
-
欧洲(爱尔兰)
-
亚太区域(东京)
-
亚太地区(新加坡)
-
南美洲(圣保罗)
-
亚太地区(悉尼)
启用 EC2-Classic 实例与对等 VPC 之间的通信
在这种情况下,我们存在以下情况:
-
为 ClassicLink 启用 VPC A,并使用 ClassicLink 将 EC2-Classic 实例 A 链接到 VPC A。
-
VPC B 在另一个 Amazon 账户中,并且与使用 VPC 对等连接
pcx-aaaabbbb
的 VPC A 对等。VPC 对等连接由 VPC A 请求并被 VPC B 接受。 -
VPC B 可以是支持 EC2-Classic 的账户中的 VPC 或仅支持 EC2-VPC 的账户。
使用以下路由表,以便实例 A 可以与 VPC B 中的实例通信,并且 VPC B 中的实例可以与实例 A 通信。
路由表 | 目的地 | 目标 | 注意 |
---|---|---|---|
VPC A | VPC A CIDR |
本地 | VPC A 的默认本地路由。 |
VPC B CIDR |
pcx-aaaabbbb | 为 VPC A 和 VPC B 之间的对等连接手动添加的路由。 | |
10.0.0.0/8 | 本地 | 为允许 ClassicLink 通信自动添加的路由 (在将实例链接到 VPC A 时添加)。 | |
VPC B | VPC B CIDR |
本地 | VPC B 的默认本地路由。 |
VPC A CIDR |
pcx-aaaabbbb | 为 VPC A 和 VPC B 之间的对等连接手动添加的路由。 |
VPC A 的拥有者必须修改 VPC 对等连接才能使实例 A 与 VPC B 进行通信,并更新主路由表。VPC B 的拥有者必须修改 VPC 对等连接才能使 VPC B 与实例 A 进行通信。
有关添加路由的更多信息,请参阅 Amazon VPC 用户指南 中的从路由表添加和删除路由。
修改 VPC A 的 VPC 对等连接
要允许从 EC2-Classic 实例到 VPC B 的通信,VPC A 的 Amazon 账户所有者必须修改 VPC 对等连接选项,以允许本地 ClassicLink 连接将流量发送至对等 VPC 中的实例。
使用控制台修改 VPC 对等连接
通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/
。 VPC A 的拥有者必须登录控制台。
在导航窗格中,选择 Peering Connections。
-
选择 VPC 对等连接,然后选择 Actions、Edit ClassicLink Settings。
-
选择允许本地链接的 EC2-Classic 实例与对等 VPC 通信的选项,然后选择 Save。
使用 Amazon CLI 修改 VPC 对等连接
您可以使用 modify-vpc-peering-connection-options 命令。在这种情况下,VPC A 是 VPC 对等连接的请求者;因此请按照下面的方法修改请求者选项:
aws ec2 modify-vpc-peering-connection-options --vpc-peering-connection-id
pcx-aaaabbbb
--requester-peering-connection-options AllowEgressFromLocalClassicLinkToRemoteVpc=true
修改 VPC B 的 VPC 对等连接
接下来,VPC B 的 Amazon 账户所有者必须修改 VPC 对等连接选项,以允许 VPC B 将流量发送到 EC2-Classic 实例 A。
使用控制台修改 VPC 对等连接
通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/
。 VPC B 的拥有者必须登录控制台。
在导航窗格中,选择 Peering Connections。
-
选择 VPC 对等连接,然后选择 Actions、Edit ClassicLink Settings。
-
选择允许本地 VPC 实例与对等 VPC 中的 EC2-Classic 实例通信的选项,然后选择 Save。
使用 Amazon CLI 修改 VPC 对等连接
VPC B 收到 VPC 对等连接;因此,请按照下面的方法修改接受方选项:
aws ec2 modify-vpc-peering-connection-options --vpc-peering-connection-id
pcx-aaaabbbb
--accepter-peering-connection-options AllowEgressFromLocalVpcToRemoteClassicLink=true
查看 VPC 对等连接选项
您可以使用 Amazon VPC 控制台或 Amazon CLI 查看接受者 VPC 和请求者 VPC 的 VPC 对等连接选项。
使用控制台查看 VPC 对等连接选项
通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/
。 在导航窗格中,选择 Peering Connections。
选择 VPC 对等连接,然后选择 ClassicLink。显示已启用或已禁用的 VPC 对等连接选项的相关信息。
使用 Amazon CLI 查看 VPC 对等连接选项
您可以使用 describe-vpc-peering-connections 命令:
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"
}
}
]
}