使用子網路
子網路可協助您的網路資料流量從原點到目的地傳輸更有效率的路徑。 您可以使用子網路的網路 ACL 來保護每個子網路內的資源。
開始之前
開始之前,您必須獲指派一個以上 IAM 存取角色,其中包括下列動作 (視任何列出的條件而定)。 您可以移至 使用者 > 使用者> 存取權來檢查您的存取權。
is.subnet.subnet.createis.public-gateway.public-gateway.operate(指定public_gateway時需要)is.network-acl.network-acl.operate
建立子網路
您可以使用主控台、CLI 或 API 建立子網路。
若您為子網使用 RFC 1918 所定義範圍(10.0.0.0/8、172.16.0.0/12 或 192.168.0.0/16 )以外的 IP 範圍,則連接到該子網的實例可能無法連通網際網路的部分區域。 如果您打算設定同時使用
non-RFC-1918 位址,並且也有公共連線(浮動 IP 位址或公共閘道)的 VPC,請務必使用 Delegate-VPC 動作設定自訂路由。
在控制台中建立子網
若要在主控台中建立子網路,請遵循下列步驟:
-
從瀏覽器中,開啟 IBM Cloud 主控台。
-
選擇導航
,然後點擊基礎設施
> 網路 > 子網路。
-
按一下 VPC 子網路清單表格上的建立。
-
在「地點」部分,請提供以下資訊:
- 地理:指示您要建立子網路的一般區域。
- 地區:表示您要建立子網路的區域。
- 區:指示要建立子網路的區域。
-
請在「詳細資訊」區段中提供以下資訊:
- 名稱: 輸入子網路的唯一 ID,例如
my-subnet。 - 資源群組:為子網選取一個資源群組。
- 標籤: 選擇性地新增任何相關標籤以協助將子網路分組。
- 存取管理標籤: 選擇性地將存取管理標籤新增至資源,以協助組織存取控制關係。 存取權管理標籤唯一支援的格式是
key:value。 如需相關資訊,請參閱 使用標籤控制對資源的存取權。 - 虛擬私有雲:選擇需要建立子網路的VPC。
- 名稱: 輸入子網路的唯一 ID,例如
-
在 IP 範圍選擇部分,提供下列資訊:
-
IP 範圍:自動為您的 IP 範圍計算最有效的位置。 如果您想要自訂 IP 範圍而非接受預設選項,請選取不同的位址字首、變更位址數目,或手動輸入 IP 範圍。
-
位址前綴:選取子網路的基本網路前綴。 這會決定分配子網路 IP 位址的較大 IP 範圍。 從 VPC 內的可用前綴中選擇。
-
IP 位址總數:選擇所需的 IPv4 位址總數。
-
位址空間:顯示 VPC 中所選前綴的完整 IP 位址範圍。 此範圍定義您可以分配子網路 IP 範圍的界限。
-
路由表:選擇您希望新子網路使用的路由表。
-
子網路存取控制清單: 選取您要新子網路使用的存取控制清單。
-
公用閘道: 將交換器切換至 連接,以指出您是否要子網路與公用網際網路進行通訊。
附加公用閘道會建立 浮動 IP 並產生費用。
-
-
在摘要面板中,按一下建立子網路。
附加的資源標籤
附加資源」標籤會列出附加到子網路的所有資源,並允許建立:
- 實例
- 裸機伺服器
- 實例範本
- 實例群組
- 負載平衡器
- VPN 閘道
- 虛擬端點閘道
- VPN 伺服器
按一下您要建立的資源的資源清單表格中的建立。 您將被引導至相應的建立資源工作流程頁面,即可開始建立資源的流程。
保留 IP 標籤
保留 IP 索引標籤列出子網路的所有保留 IP 位址。 如需詳細資訊,請參閱 管理 IP 位址。
透過 CLI 建立子網
若要從 CLI 建立子網路,請執行下列指令:
ibmcloud is subnet-create SUBNET_NAME VPC ((--zone ZONE_NAME --ipv4-address-count ADDR_COUNT) | --ipv4-cidr-block CIDR_BLOCK) [--acl ACL] [--pgw PGW] [--rt RT] [--resource-group-id RESOURCE_GROUP_ID | --resource-group-name RESOURCE_GROUP_NAME] {} [--output JSON] [-q, --quiet]
其中:
SUBNET_NAME- 子網路的名稱。
VPC- VPC 的 ID 或名稱。
--ipv4-cidr-block- 子網路的 IPv4 範圍。 此選項與
--ipv4-address-count互斥。 --ipv4-address-count- 所需地址 IPv4 的總數必須為2的冪次方,且最小值為8。 此選項與
--ipv4-cidr-block互斥。 --zone- 區域的名稱。
--acl- 網路 ACL 的 ID 或名稱。
--pgw- 公用閘道的 ID 或名稱。
--rt- 路由表的 ID 或名稱。 此選項也支援路由表的雲端資源名稱 (CRN)。
--resource-group-id- 資源群組的 ID。 此 ID 與
--resource-group-name互斥。 --resource-group-name- 資源群組的名稱。 此名稱與「
--resource-group-id」互斥。 --output- 指定輸出格式,只支援 JSON。 下列其中一項:
JSON。 -q, --quiet- 暫停詳細輸出。
使用 API 建立子網
請依照下列指示,使用 API 建立子網路:
- 設定 API 環境。
- 儲存要在 API 指令中使用的任何其他變數。
| 查詢參數 | 資訊 |
|---|---|
version必須 string |
要求以日期格式 YYYY-MM-DD. 指定 API 的版本。 可提供任何截至當前日期的日期。 請指定當前日期以請求最新版本。可能的值:值必須符合正規表達式 ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ |
generation所需 int32 |
基礎設施世代。 可能的值如下: 2 |
| 請求正文 Required |
子網原型物件。 |
vpc必須 string |
此子網路所在的 VPC。 以下任一項: VPCIdentityByCRN``VPCIdentityById VPCIdentityByHref |
ip_versionstring |
此子網應支援的 IP 版本。 允許值:[ipv4] |
name必須 string |
此子網的名稱。 該名稱不得由 VPC 中的其他子網使用。 若未指定,名稱將由隨機選取的詞彙以連字號連接而成。 可能的值:1 ≤ length ≤ 63,值必須符合正規表達式 ([a-z]|[a-z][-a-z0-9]*[a-z0-9])$示例: my-subnet |
network_aclstring |
此子網要使用的網路存取控制清單。 若未指定,則使用 VPC 的預設網路存取控制清單。 以下任一項: NetworkACLIdentityByCRN``NetworkACLIdentityById NetworkACLIdentityHref |
public_gatewaystring |
此子網域用於傳輸至網際網路流量的公共網關。 若未指定,子網將不會附加至公共閘道。 以下任一項: PublicGatewayIdentityByCRN``PublicGatewayIdentityById PublicGatewayIdentityByHref |
resource_groupResourceGroupIdentityById |
要使用的「資源群組」。 若未指定,則會使用該帳戶的 預設資源群組。 |
routing_tablestring |
此子網域應使用的路由表。 如果未指定,則會使用 VPC 的預設遞送表。 路由表屬性 route_direct_link_ingress, route_internet_ingress, route_transit_gateway_ingress, 及 route_vpc_zone_ingress 必須為 false。以下任一項: RoutingTableIdentityByCRN``RoutingTableIdentityById RoutingTableIdentityByHref |
SubnetByTotalCountint 64或 SubnetByCIDRstring |
請指定所需的 IPv4 總 SubnetByTotalCount 地址數量。 請指定子網的 IPv4 範圍,以 SubnetByCIDR CIDR 格式表示。 兩種選項皆需指定 zone 要建立子網的目標位置。 |
當所有變數都已起始時,請提交要求。
請參閱下列範例:
curl -X POST
"$vpc_api_endpoint/v1/subnets?version=2022-10-31&generation=2"
-H "Authorization: Bearer $iam_token"
-d '{
"name": "my-subnet-1",
"ipv4_cidr_block": "10.0.1.0/24",
"ip_version": "ipv4",
"zone": { "name": "us-south-1" },
"vpc": { "id": "a0819609-0997-4f92-9409-86c95ddf59d3" }
}'
在您起始要求之後,會顯示下列回應:
| 回應內文 | 詳細資料 |
|---|---|
available_ipv4_address_count永遠包含 int64 |
此子網路中未使用,且未被使用者或供應商保留的 IPv4 位址數量。 範例: 15 |
created_at永遠包含 date-time |
此子網的建立日期與時間。 |
crn永遠包含 string |
此子網段的網路路由器編號。 可能的值:9 ≤ length ≤ 512 示例: crn:v1:bluemix:public:is:us-south-1:a/123456::subnet:7ec86020-1c6e-4889-b3f0-a15f2e50f87e |
href永遠包括在內* string |
此子網路的 URL 可能的值:10 ≤ length ≤ 8000,值必須符合正規表達式 ^http(s)?://([^/?#]*)([^?#]*)(?([^#]*))?(#(.*))?$示例: https://us-south.iaas.cloud.ibm.com/v1/subnets/7ec86020-1c6e-4889-b3f0-a15f2e50f87e |
id永遠包含 string |
此子網路的唯一識別碼 可能的值:1 ≤ length ≤ 64,值必須符合正規表達式 ^[-0-9a-z_]+$示例: 7ec86020-1c6e-4889-b3f0-a15f2e50f87e |
ip_version永遠包含 string |
此子網段所支援的 IP 版本。 可能的值如下: [ipv4] |
ipv4_cidr_block永遠包含 string |
子網路的 IPv4 範圍,以 CIDR 格式表示。 可能的值:9 ≤ length ≤ 18,值必須符合正規表達式 ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(/(3[0-2]|[1-2][0-9]|[0-9]))$範例: 10.0.0.0/24 |
name永遠包含 string |
此子網的名稱。 此名稱在 VPC 內所有子網中均為唯一。 可能的值:1 ≤ length ≤ 63,值必須符合正規表達式 ^-?([a-z]|[a-z][-a-z0-9]*[a-z0-9]|[0-9][-a-z0-9]*([a-z]|[-a-z][-a-z0-9]*[a-z0-9]))$示例: my-subnet |
network_acl |
始終包含NetworkACLReference |
resource_group永遠包含 ResourceGroupReference |
此子網段的資源群組。 |
resource_type永遠包含 string |
資源類型。 可能的值:1 ≤ length ≤ 128,值必須符合正規表達式 ^[a-z][a-z0-9]*(_[a-z0-9]+)*$範例: subnet |
routing_table永遠包含 RoutingTableReference |
此子網段的路由表。 |
status永遠包含 string |
子網的狀態。 可能的值: available,deleting,failed、pending |
total_ipv4_address_count永遠包含 int64 |
|
vpc永遠包含 VPCReference |
此子網路所在的 VPC。 |
zone永遠包含 ZoneReference |
此子網所屬的區域。 |
public_gatewayPublicGatewayReference |
此子網域用於傳輸至網際網路流量的公共網關。 |
| 狀態碼 | 意義 |
|---|---|
201 |
已順利建立子網路。 |
400 |
提供了一個無效的子網原型物件。 |
409 |
子網原型物件與 VPC 中的另一子網發生衝突,或指定了超出 VPC 地址前綴範圍的 CIDR 區塊。 |
如需更多資訊(包括 Java、Node、Python 及 Go 範例),請參閱 VPC API 參考 文件中的建立子網方法。
檢視子網路
您可以使用使用者介面、API 或 CLI 來檢視 VPC 中子網路的詳細資料。
在主控台中檢視子網路
子網建立後,將出現在「VPC 的子網」清單中。
若要檢視控制台清單中子網格的詳細資訊,請點擊名稱欄位中的子網格連結。 「概述」標籤頁顯示您在子網建立過程中使用的資訊。
透過 CLI 檢視子網
若要從命令列介面檢視 VPC 中子網的詳細資訊,請執行以下指令:
ibmcloud is subnet SUBNET [--vpc VPC] [--show-attached] [--output JSON] [-q, --quiet]
其中:
SUBNET- 子網路的 ID 或名稱。
--vpc- VPC 的 ID 或名稱。 只需要在此 VPC 內按名稱指定唯一資源。
--show-attached- 檢視連接至子網路的資源(實例、負載平衡器、VPN 閘道)詳細資料。
--output- 指定輸出格式,只支援 JSON。 下列其中一項 :JSON。
-q, --quiet- 暫停詳細輸出。
使用 API 檢視子網段
若要呼叫此方法,您必須獲指派一個以上包含下列動作的 IAM 存取角色。 您可以前往 使用者 > 使用者 > 存取 檢查您的存取權限。
is.subnet.subnet.read
遵循下列指示,以使用 API 來擷取 VPC 中的子網路:
- 設定 API 環境。
- 儲存要在 API 指令中使用的任何其他變數。
| 查詢參數 | 資訊 |
|---|---|
id必須 string |
子網識別碼。 可能的值:1 ≤ length ≤ 64、值必須符合正規表達式 ^[-0-9a-z_]+$ |
version必須 string |
要求以日期格式 YYYY-MM-DD. 指定 API 的版本。 可提供任何截至當前日期的日期。 請指定當前日期以請求最新版本。可能的值:值必須符合正規表達式 ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ |
generation必須 int32 |
基礎設施世代。 容許值: 2 |
- 當所有變數都已起始時,請執行指令。
請參閱下列範例:
curl -X GET "$vpc_api_endpoint/v1/subnets/$subnet_id?version=2022-10-31&generation=2"
-H "Authorization: Bearer $iam_token"
在您起始要求之後,會顯示下列回應:
| 回應內文 | 詳細資料 |
|---|---|
available_ipv4_address_count永遠包含 int64 |
此子網路中未使用,且未被使用者或供應商保留的 IPv4 位址數量。 範例: 15 |
created_at總是包含 日期時間 |
此子網的建立日期與時間。 |
crn永遠包含 string |
此子網路的 CRN 可能的值:9 ≤ length ≤ 512 示例: crn:v1:bluemix:public:is:us-south-1:a/123456::subnet:7ec86020-1c6e-4889-b3f0-a15f2e50f87e |
href永遠包括在內* string |
此子網路的 URL 可能的值:10 ≤ length ≤ 8000,值必須符合正規表達式 ^http(s)?://([^/?#]*)([^?#]*)(?([^#]*))?(#(.*))?$示例: https://us-south.iaas.cloud.ibm.com/v1/subnets/7ec86020-1c6e-4889-b3f0-a15f2e50f87e |
id永遠包含 string |
此子網路的唯一識別碼 可能的值:1 ≤ length ≤ 64,值必須符合正規表達式 ^[-0-9a-z_]+$示例: 7ec86020-1c6e-4889-b3f0-a15f2e50f87e |
ip_version永遠包含 string |
此子網段所支援的 IP 版本。 可能的值如下: [ipv4] |
ipv4_cidr_block永遠包含 string |
子網的 IPv4 範圍,以CIDR格式表示。 可能的值:9 ≤ length ≤ 18,值必須符合正規表達式 ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(/(3[0-2]|[1-2][0-9]|[0-9]))$範例: 10.0.0.0/24 |
name永遠包含 string |
此子網的名稱。 此名稱在 VPC 內所有子網中均為唯一。 可能的值:1 ≤ length ≤ 63,值必須符合正規表達式 ^-?([a-z]|[a-z][-a-z0-9]*[a-z0-9]|[0-9][-a-z0-9]*([a-z]|[-a-z][-a-z0-9]*[a-z0-9]))$示例: my-subnet |
network_acl |
始終包含 NetworkACLReference |
resource_group總是包括 ResourceGroupReference |
此子網段的資源群組。 |
resource_type永遠包含 string |
資源類型。 可能的值:1 ≤ length ≤ 128,值必須符合正規表達式 ^[a-z][a-z0-9]*(_[a-z0-9]+)*$範例: subnet |
routing_table總是包括 RoutingTableReference |
此子網段的路由表。 |
status永遠包含 string |
子網的狀態。 可能的值: available,deleting,failed、pending |
total_ipv4_address_count永遠包含 int64 |
|
vpc永遠包含 VPCReference |
此子網路所在的 VPC。 |
zone總是包括 ZoneReference |
此子網所屬的區域。 |
public_gatewayPublicGatewayReference |
此子網域用於傳輸至網際網路流量的公共網關。 |
| 狀態碼 | 意義 |
|---|---|
200 |
已成功取得子網。 |
404 |
找不到具有指定識別碼的子網。 |
如需更多資訊(包括 Java、Node、Python 及 Go 範例),請參閱 VPC API 參考文件中的「檢索子網」。