本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
描述 VPC 網路架構
Amazon VPC 可讓您在 AWS 雲端中定義邏輯隔離的虛擬網路,稱為虛擬私有雲端 (VPC)。建立單獨的 VPC,依工作負載或組織實體來隔離基礎結構。您可以選取 IP 位址範圍、設定路由以及新增網路閘道 (VPC 互連的網路閘道、VPC 與網際網路連線的網路閘道、VPC 與您自己的企業網路連線的網路閘道),來設定 VPC。您可以在 VPCs 中啟動 AWS 資源,例如 EC2 執行個體或 RDS 執行個體。
下表描述了 VPC 網路的關鍵特性。網路管理員可依據此指引來描述 VPC 網路的架構與組態。掌握這些資訊,管理員便能在內部部署環境或透過其他雲端服務供應商,建立功能等效的網路。
| 特性 | Description |
|---|---|
| 地理位置 | Amazon VPC 託管於全球所有 AWS 區域。您可以為您的 VPC 網路選取最接近您客戶的 AWS 資源區域。 |
| 子網路 | 您為 VPCs 定義的子網路會定義網路邊界,並判斷 AWS 資源的 IP 地址。您可以在多個可用區域中新增子網路,提高資源的可用性。 |
| 網路連線 | 您連接至 VPC 或子網路的閘道,可提供 VPC 網路與其他網路 (例如其他 VPC 或子網路、網際網路或內部部署網路) 之間的連線能力。 |
| 安全控制項 | 您為 VPC 建立的安全群組會控管進出相關聯資源 (例如運算資源、資料庫資源與負載平衡器) 的流量。每個子網路皆具備網路 ACL,可控管進出子網路的流量。 |
| 流量管理 | 路由規則可控管子網路、VPC 與外部位置之間的流量傳輸。Elastic Load Balancing 提供的負載平衡器會將傳入流量分配至多個目標,例如 EC2 執行個體、容器與 Lambda 函式。 |
地理位置
Amazon VPC 適用於全球每個 AWS 區域。各個 區域為獨立的地理區域。當您在接近大多數使用者的區域中為資源建立 VPC 時,可降低網路延遲。
您可以使用 Amazon EC2 全域檢視功能,透過圖形化使用者介面列出所有區域中的 VPC (目前沒有等效的程式設計介面)。使用 Amazon VPC 主控台、 AWS API 和 AWS 命令列界面,您必須個別列出每個區域的 VPCs 和 VPC 資源。
為什麼這很重要
確認 VPC 的部署位置後,您可根據需求決定是否在相同或不同位置設定功能等效的網路環境。
跨所有區域取得 VPC 的摘要資訊
-
前往 https://console.aws.amazon.com/ec2globalview/home
開啟 Amazon EC2 全域檢視主控台。 -
在區域總管索引標籤的摘要下,查看 VPC 的資源數量,其中包括 VPC 數量與區域數量。這包括代表您 AWS 建立的預設 VPCs,以及您建立的非預設 VPCs。點選帶有底線文字,即可查看 VPC 數量在各區域的分佈情況。如果某個區域只有一個 VPC,該 VPC 很可能是該區域的預設 VPC。
-
在全域搜尋索引標籤上,選取用戶端篩選條件資源類型 = Vpc。您可以透過指定區域或標籤進一步篩選結果。
使用 取得區域中VPCs AWS CLI
使用如下 describe-vpcs 命令。您必須在每個您有 VPC 的區域中執行此命令。--query 參數僅包含輸出中的 VPC ID。您可以視需要包含其他欄位。
aws ec2 describe-vpcs \ --regionus-east-2\ --query "Vpcs[*].VpcId"
每個區域均附帶預設 VPC。如果不使用預設 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 主控台。 -
在導覽窗格中,選擇 VPCs (VPC)。
-
選取 VPC 的核取方塊。
-
選擇資源地圖索引標籤。
-
在 VPC 窗格中,選擇顯示詳細資訊。子網路窗格會列出 VPC 中的所有子網路,也會顯示各子網路的 IP 位址範圍。將滑鼠游標暫留在子網路上,可反白顯示其相關聯的路由表與網路連線。如需詳細資訊,請按一下連結以開啟子網路詳細資訊頁面。
使用 描述 VPC 的子網路 AWS CLI
使用如下 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 的網路連線
在 https://console.aws.amazon.com/vpc/
開啟 Amazon VPC 主控台。 -
在導覽窗格中,選擇 VPCs (VPC)。
-
選取 VPC 的核取方塊。
-
選擇資源地圖索引標籤。
-
在 VPC 窗格中,選擇顯示詳細資訊。網路連線窗格會列出所有網際網路閘道、僅限輸出網際網路閘道、NAT 閘道與閘道 VPC 端點。如果資源類型不明確,將滑鼠游標暫留在網路連線的連結圖示上,即可檢視對應的 URL。此 URL 是該資源在主控台中的連結,包含資源類型與資源 ID (例如 internetGatewayId=igw-0123456780abcdef)。
使用 取得 VPCs的網路連線 AWS CLI
-
使用如下 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 中部署的資源。
重要性說明
確定允許抵達子網路與資源的傳入流量,以及允許離開子網路與資源的傳出流量後,即可規劃功能等效網路所需的防火牆規則。
Security groups (安全群組)
安全群組允許在資源層級控管特定的傳入與傳出流量。安全群組是控制存取 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 主控台。 -
在導覽窗格中,選擇 VPCs (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 網路中可能正在使用的選用服務或功能: