描述您的 VPC 网络架构
通过使用 Amazon VPC,您可以在 Amazon 云内定义逻辑上隔离的虚拟网络,我们称之为虚拟私有云(VPC)。创建单独的 VPC,按工作负载或组织实体隔离基础设施。您可以通过选择 IP 地址范围、配置路由和添加网络网关来配置 VPC,从而将不同的 VPC 相互连接、将 VPC 连接到互联网或连接到您的企业网络。在 VPC 中可启动 Amazon 资源(如 EC2 实例或 RDS 实例)。
下表列出了 VPC 网络的关键特征。网络管理员可以使用本指南描述 VPC 网络的架构和配置。有了这些信息,他们就可以在本地或使用其他云提供商配置功能等效的网络。
| 特征 | 说明 |
|---|---|
| 地理位置 | Amazon VPC 在全球所有 Amazon 区域托管。您可以为 VPC 网络选择区域,让 Amazon 资源处于离客户最近的位置。 |
| 子网 | 您为 VPC 定义的子网会定义网络边界并确定 Amazon 资源的 IP 地址。您可以在多个可用区中添加子网来提高资源的可用性。 |
| 网络连接 | 您连接到 VPC 或子网的网关,用于在 VPC 网络与其他网络(例如其他 VPC 或子网、互联网或本地网络)之间提供连接。 |
| 安全控制措施 | 您为 VPC 创建的安全组可以控制出入已关联资源(如计算资源、数据库资源和负载均衡器)的流量。每个子网都有一个网络 ACL,用于控制出入子网的流量。 |
| 流量管理 | 路由规则可以控制子网、VPC 和外部位置之间的流量。Elastic Load Balancing 提供的负载均衡器会在多个目标(如 EC2 实例、容器和 Lambda 函数)之间分配传入的流量。 |
地理位置
Amazon VPC 在全球每个 Amazon 区域都可用。每个 区域都是一个单独的地理区域。在接近大多数用户的区域中为资源创建 VPC 可以降低网络延迟。
您可以使用 Amazon EC2 全局视图在图形用户界面中(没有等效的编程界面)列出所有区域中的 VPC。如果使用 Amazon VPC 控制台、Amazon API 和 Amazon 命令行界面,您必须单独列出每个区域的 VPC 和 VPC 资源。
这点为何如此重要
确定 VPC 的位置后,您可以视需求决定是在相同位置还是在不同位置配置功能等效的网络。
查看所有区域的 VPC 总览
-
通过以下网址打开 Amazon EC2 全局视图控制台:https://console.aws.amazon.com/ec2globalview/home
。 -
在区域资源管理器选项卡的摘要下,检查 VPC 的资源数量,包括 VPC 数量和区域数量。这包括 Amazon 代表您创建的默认 VPC 和您创建的非默认 VPC。单击带下划线的文本,查看 VPC 数量的跨区域分布情况。如果一个区域只有一个 VPC,这很可能是该区域的默认 VPC。
-
在全局搜索选项卡上,选择客户端筛选条件资源类型 = Vpc。可以通过指定区域或标签来进一步筛选结果。
使用 Amazon CLI 查看某个区域中的 VPC
使用以下 describe-vpcs 命令。必须在存在 VPC 的每个区域运行此命令。--query 参数在输出中仅包括 VPC ID。您可以包括所需的其他字段。
aws ec2 describe-vpcs \ --regionus-east-2\ --query "Vpcs[*].VpcId"
每个区域均带有默认 VPC。如果未使用默认 VPC,则可以通过添加以下筛选条件将其排除在结果之外。
--filters Name=is-default,Values=false
子网
子网是 VPC 中的逻辑网络边界。在创建子网时,您可以分配一个 IP 地址块。对于您启动到子网中的资源,将从该子网的 IP 地址块中为其分配 IP 地址。IP 地址让资源可以通过本地网络或互联网相互通信。
Amazon VPC 控制台中的资源地图提供了 VPC 子网的可视化表示。
这点为何如此重要
通过使用子网,网络管理员能实施安全边界并控制应用程序层之间的流量。通过记下子网的 IP 地址,您可以帮助确保功能等效的网络中的资源能与 VPC 网络中的相同客户端或应用程序通信。
使用资源地图查看 VPC 的子网
通过 https://console.aws.amazon.com/vpc/
打开 Amazon VPC 控制台。 -
在导航窗格中,选择 VPC。
-
选中该 VPC 的复选框。
-
选择资源地图选项卡。
-
在 VPC 窗格中,选择显示详细信息。子网窗格列出了 VPC 中的所有子网并显示了它们的 IP 地址范围。将鼠标悬停在子网上可突出显示其关联的路由表和网络连接。如需了解更多详细信息,请单击链接,打开子网详细信息页面。
使用 Amazon CLI 描述 VPC 的子网
使用以下 describe-subnets 命令。--filters 参数将搜索范围限定为描述指定 VPC 的子网。--query 参数在输出中仅包括指定的字段。您可以包括所需的其他字段。
aws ec2 describe-subnets \ --filters Name=vpc-id,Values=vpc-1234567890abcdef0\ --query Subnets[*].[SubnetId,AvailabilityZoneId,CidrBlock,Ipv6CidrBlockAssociationSet[0].Ipv6CidrBlock] \ --output table
下面是示例输出。各列是子网 ID、可用区 ID、IPv4 地址范围和第一个 IPv6 地址范围(如果有)。
---------------------------------------------------------------------------------------
| DescribeSubnets |
+---------------------------+-----------+----------------+----------------------------+
| subnet-0d2d1b81e0bc9c6d4 | usw2-az1 | 10.0.144.0/20 | 2600:1f14:1e6e:a003::/64 |
| subnet-0e01d500780bb7468 | usw2-az1 | 10.0.16.0/20 | 2600:1f14:1e6e:a001::/64 |
| subnet-0eb17d85f5dfd33b1 | usw2-az2 | 10.0.128.0/20 | 2600:1f14:1e6e:a002::/64 |
| subnet-0e990c67809773b19 | usw2-az2 | 10.0.0.0/20 | 2600:1f14:1e6e:a000::/64 |
+---------------------------+-----------+----------------+----------------------------+
网络连接
Amazon VPC 提供的连接选项能用于创建跨多个账户、区域和远程网络中 VPC 的网络。
您可以使用 Amazon VPC 控制台中的资源地图来了解 VPC 使用的是互联网网关、仅出口互联网网关、NAT 网关还是网关 VPC 端点。资源地图未显示正在使用任何中转网关、对等连接、虚拟专用网关或其他类型的 VPC 端点。如果要获取 VPC 的完整网关和对等连接列表,您可以使用控制台、API 或命令行界面逐一描述 VPC 的网关和对等连接。
这点为何如此重要
了解 VPC 网络提供的连接后,便可确保功能等效网络中的资源能与相同的本地和远程资源进行通信。
使用资源地图查看 VPC 的网络连接
通过 https://console.aws.amazon.com/vpc/
打开 Amazon VPC 控制台。 -
在导航窗格中,选择 VPC。
-
选中该 VPC 的复选框。
-
选择资源地图选项卡。
-
在 VPC 窗格中,选择显示详细信息。网络连接窗格列出了所有互联网网关、仅出口互联网网关、NAT 网关和网关 VPC 端点。如果资源类型不清楚,请将鼠标悬停在网络连接的链接图标上,然后查看生成的 URL。此 URL 是指向控制台中资源的链接,它包含资源类型和资源 ID(例如 internetGatewayId=igw-0123456780abcdef)。
使用 Amazon CLI 查看 VPC 的网络连接
-
使用以下 describe-internet-gateways 命令查看指定区域的互联网网关。
--query参数在输出中仅包括指定的字段。您可以包括所需的其他字段。aws ec2 describe-internet-gateways \ --regionus-east-2\ --query InternetGateways[*].[Attachments[0].VpcId,InternetGatewayId] \ --output table下面是示例输出。各列显示了 VPC ID 和互联网网关 ID。
---------------------------------------------------- | DescribeInternetGateways | +------------------------+-------------------------+ | None | igw-04c61dba10EXAMPLE | | vpc-0bf4c2739bEXAMPLE | igw-09737a4029EXAMPLE | | vpc-060415a18fEXAMPLE | igw-0c562bd22aEXAMPLE | | vpc-0ea9d41094EXAMPLE | igw-0e06f7033dEXAMPLE | | vpc-03b86de356EXAMPLE | igw-0a9ff72d05EXAMPLE | +------------------------+-------------------------+ -
使用以下 describe-egress-only-internet-gateways 命令查看指定区域的仅出口互联网网关。
--query参数在输出中仅包括指定的字段。您可以包括所需的其他字段。aws ec2 describe-egress-only-internet-gateways \ --regionus-east-2\ --query EgressOnlyInternetGateways[*].[Attachments[0].VpcId,EgressOnlyInternetGatewayId] \ --output table下面是示例输出。各列显示了 VPC ID 和仅出口互联网网关 ID。
----------------------------------------------------- | DescribeEgressOnlyInternetGateways | +------------------------+--------------------------+ | vpc-060415a18fEXAMPLE | eigw-0b8ca558acEXAMPLE | +------------------------+--------------------------+ -
使用以下 describe-nat-gateways 命令查看指定区域的 NAT 网关。
--query参数在输出中仅包括指定的字段。您可以包括所需的其他字段。aws ec2 describe-nat-gateways \ --regionus-east-2\ --query NatGateways[*].[VpcId,NatGatewayId,SubnetId] \ --output table下面是示例输出。各列显示了 VPC ID、NAT 网关 ID 和子网 ID。
--------------------------------------------------------------------------------- | DescribeNatGateways | +------------------------+-------------------------+----------------------------+ | vpc-060415a18fEXAMPLE | nat-026316334aEXAMPLE | subnet-0eb17d85f5EXAMPLE | | vpc-060415a18fEXAMPLE | nat-0f08bc5f52EXAMPLE | subnet-0d2d1b81e0EXAMPLE | +------------------------+-------------------------+----------------------------+ -
使用以下 describe-transit-gateway-vpc-attachments 命令查看指定区域的中转网关 VPC 附加项。
--query参数在输出中仅包括指定的字段。您可以包括所需的其他字段。aws ec2 describe-transit-gateway-vpc-attachments \ --regionus-east-2\ --query TransitGatewayVpcAttachments[*].[VpcId,TransitGatewayId,length(SubnetIds[])] \ --output table下面是示例输出。各列显示了 VPC ID、中转网关 ID 和子网数量。
--------------------------------------------------------- | DescribeTransitGatewayVpcAttachments | +------------------------+-------------------------+----+ | vpc-0bf4c2739bEXAMPLE | tgw-055dc4e47bEXAMPLE | 4 | | vpc-0ea9d41094EXAMPLE | tgw-055dc4e47bEXAMPLE | 2 | +------------------------+-------------------------+----+ -
使用以下 describe-vpc-peering-connections 命令查看指定区域中的 VPC 对等连接。
--query参数在输出中仅包括指定的字段。您可以包括所需的其他字段。aws ec2 describe-vpc-peering-connections \ --regionus-east-2\ --query VpcPeeringConnections[*].[AccepterVpcInfo.VpcId,RequesterVpcInfo.VpcId] \ --output table下面是示例输出。各列显示了接受方 VPC ID、接受方 VPC 所有者、请求方 VPC ID 和请求方 VPC 所有者。
------------------------------------------------------------------------------------ | DescribeVpcPeeringConnections | +------------------------+---------------+------------------------+----------------+ | vpc-0ea9d41094EXAMPLE | 123456789012 | vpc-03b86de356EXAMPLE | 123456789012 | +------------------------+---------------+------------------------+----------------+ -
使用以下 describe-vpn-gateways 命令查看指定区域的虚拟专用网关。
--query参数在输出中仅包括指定的字段。您可以包括所需的其他字段。aws ec2 describe-vpn-gateways \ --regionus-east-2\ --query VpnGateways[*].[VpcAttachments[0].VpcId,VpnGatewayId] \ --output table下面是示例输出。各列显示了 VPC ID 和虚拟专用网关 ID。
---------------------------------------------------- | DescribeVpnGateways | +------------------------+-------------------------+ | vpc-0bf4c2739bEXAMPLE | vgw-0cb3226c4aEXAMPLE | +------------------------+-------------------------+ -
使用以下 describe-vpc-endpoints 命令查看指定区域的 VPC 端点。
--query参数在输出中仅包括指定的字段。您可以包括所需的其他字段。aws ec2 describe-vpc-endpoints \ --regionus-east-2\ --query 'VpcEndpoints[*].[VpcId,VpcEndpointType,ServiceName||ServiceNetworkArn||ResourceConfigurationArn]' \ --output table下面是示例输出。第一列显示了 VPC ID,第二列显示了 VPC 端点类型。第三列会显示服务名称、资源配置 ARN 或服务网络 ARN,具体取决于端点类型。
---------------------------------------------------------------------------------------------------------------------------------------- | DescribeVpcEndpoints | +------------------------+-----------------+-------------------------------------------------------------------------------------------+ | vpc-060415a18fcc9afde | Interface | com.amazonaws.vpce.us-west-2.vpce-svc-007832a03d60fc387 | | vpc-060415a18fcc9afde | Interface | com.amazonaws.vpce.us-west-2.vpce-svc-007832a03d60fc387 | | vpc-0bf4c2739bc05a694 | Gateway | com.amazonaws.us-west-2.s3 | | vpc-0ea9d410947d27b7d | Interface | com.amazonaws.us-west-2.logs | | vpc-0bf4c2739bc05a694 | Resource | arn:aws:vpc-lattice:us-east-2:123456789012:resourceconfiguration/rcfg-07129f3acded87625 | | vpc-0bf4c2739bc05a694 | ServiceNetwork | arn:aws:vpc-lattice:us-east-2:123456789012:servicenetwork/sn-0808d1748faee0c1e | | vpc-0bf4c2739bc05a694 | ServiceNetwork | arn:aws:vpc-lattice:us-east-2:123456789012:servicenetwork/sn-0808d1748faee0c1e | +------------------------+-----------------+-------------------------------------------------------------------------------------------+
安全控制措施
Amazon VPC 提供的安全控制措施决定了对 VPC 和 VPC 中所部署资源的网络访问权限。
这点为何如此重要
确定允许传入子网和资源的入站流量以及允许从子网和资源传出的输出流量之后,您可以规划功能等效网络所需的防火墙规则。
安全组
安全组可允许资源级别的特定入站和出站流量。安全组是用来控制对 VPC 资源的访问的主要机制。
查看 VPC 的安全组
使用以下 describe-security-groups 命令来显示指定 VPC 的安全组。
aws ec2 describe-security-groups \ --filters Name=vpc-id,Values=vpc-1234567890abcdef0\ --query SecurityGroups[*].GroupId
查看安全组的入站规则
使用以下 describe-security-group-rules 命令来显示指定安全组的规则,其中 IsEgress 是 false。
aws ec2 describe-security-group-rules \ --filters Name=group-id,Values=sg-0abcdef1234567890\ --query 'SecurityGroupRules[?IsEgress==`false`]'
查看安全组的出站规则
使用以下 describe-security-group-rules 命令来显示指定安全组的规则,其中 IsEgress 是 true。
aws ec2 describe-security-group-rules \ --filters Name=group-id,Values=sg-0abcdef1234567890\ --query 'SecurityGroupRules[?IsEgress==`true`]'
网络 ACL
网络访问控制列表(ACL)可允许或拒绝子网级别的特定入站或出站流量。如果部署资源时没有设置正确的安全组,则可以使用网络 ACL 作为深度防御机制。
查看子网的网络 ACL
使用以下 describe-network-acls 命令来显示指定 VPC 的网络 ACL 及其子网关联。
aws ec2 describe-network-acls \ --filters Name=vpc-id,Values=vpc-1234567890abcdef0\ --query "NetworkAcls[*].{ID:NetworkAclId,Subnets:Associations[].SubnetId}"
查看网络 ACL 的入站规则
使用以下 describe-network-acls 命令来显示指定网络 ACL 的规则,其中 Egress 是 false。
aws ec2 describe-network-acls \ --network-acl-idsacl-0abcdef1234567890\ --query 'NetworkAcls[*].Entries[?Egress==`false`]'
查看网络 ACL 的出站规则
使用以下 describe-network-acls 命令来显示指定网络 ACL 的规则,其中 Egress 是 true。
aws ec2 describe-network-acls \ --network-acl-idsacl-0abcdef1234567890\ --query 'NetworkAcls[*].Entries[?Egress==`true`]'
流量管理
有效的流量管理可将路由表提供的网络级路由决策与负载均衡提供的应用程序级分配策略相结合。
这点为何如此重要
网络管理员必须设计子网、路由、DNS 解析和负载均衡,以优化流量,同时保持安全边界并满足性能要求。通过记下 VPC 网络中这些组件的配置,您可以帮助确保功能等效的网络中的资源能与 VPC 网络中的相同客户端或设备通信。
路由表
路由表会确定网络流量如何跨网络边界(例如子网、VPC、本地网络和互联网)进行传输。
Amazon VPC 控制台中的资源地图提供了 VPC 路由表的可视化表示。
使用资源地图查看 VPC 的路由表
通过 https://console.aws.amazon.com/vpc/
打开 Amazon VPC 控制台。 -
在导航窗格中,选择 VPC。
-
选中该 VPC 的复选框。
-
选择资源地图选项卡。
-
路由表窗格列出了 VPC 的所有路由表。将鼠标悬停在路由表上可突出显示其关联的子网和网络连接。如需了解更多详细信息,请单击链接,打开路由表详细信息页面。
描述路由表
使用 describe-route-tables 命令来描述指定 VPC 的路由表及其子网关联。
aws ec2 describe-route-tables \ --filters Name=vpc-id,Values=vpc-1234567890abcdef0\ --query "RouteTables[*].{ID:RouteTableId,Subnets:Associations[].SubnetId}"
查看路由表的路由
使用 describe-route-tables 命令来描述指定路由表的路由。
aws ec2 describe-route-tables \ --route-table-idsrtb-02ec01715bEXAMPLE\ --query RouteTables[*].Routes
DHCP 选项集
您的 VPC 有一个 DHCP 选项集,可用于配置各种网络设置。例如,您可以配置自定义 DNS 服务器,以便 EC2 实例可以使用现有的 DNS 基础设施解析内部主机名。有关更多信息,请参阅 DHCP 选项集概念。
为您的 VPC 指定 DHCP 选项
使用 describe-dhcp-options 命令描述指定的 DHCP 选项。该示例还使用 describe-vpcs 命令获取指定 VPC 的 DHCP 选项 ID。
aws ec2 describe-dhcp-options \ --dhcp-options-id "$(aws ec2 describe-vpcs \ --vpc-idvpc-1234567890abcdef0\ --query Vpcs[].DhcpOptionsId --output text)"
以下是使用默认 DHCP 选项的 VPC 的输出示例。
{
"DhcpOptions": [
{
"OwnerId": "415546850671",
"Tags": [],
"DhcpOptionsId": "dopt-1234567890abcdef0",
"DhcpConfigurations": [
{
"Key": "domain-name",
"Values": [
{
"Value": "us-west-2.compute.internal"
}
]
},
{
"Key": "domain-name-servers",
"Values": [
{
"Value": "AmazonProvidedDNS"
}
]
}
]
}
]
}
负载均衡器
负载均衡会将来自客户端的传入流量分配到多个目标。负载均衡器会监控目标的运行状况,并自动将运行状况不佳的目标从流量分配中移除,确保仅使用运行状况良好的目标。这有助于提高应用程序的可用性和性能,优化资源利用率。有关更多信息,请参阅 Elastic Load Balancing 用户指南。
描述负载均衡器
使用 describe-load-balancers 命令来显示指定 VPC 的负载均衡器。
aws elbv2 describe-load-balancers \ --query 'LoadBalancers[?VpcId==`vpc-1234567890abcdef0`].LoadBalancerArn'
相关资源
以下是您可能在 VPC 网络中使用的可选服务或功能: