创建虚拟网络接口
可以在不连接到目标的情况下创建虚拟网络接口。 因此,即使除去了虚拟网络接口的目标,也可以存在该虚拟网络接口。
例如,在 VPC 中,实例具有可从因特网访问实例的公共 IP 地址,以及可从 VPC 中的其他实例访问实例的专用 IP 地址。 您已使用定制安全组规则配置实例。 如果删除实例,那么将拆离公共 IP 地址和安全组。 将释放专用 IP 地址,并且可以由另一个资源再次保留。 如果要使用与已删除实例相同的公共 IP 地址,专用 IP 地址和安全组来创建新实例,那么必须再次保留专用 IP 地址,并单独连接先前的公共 IP 地址和安全组。
您可以使用虚拟网络接口来管理具有独立于实例的生命周期的单独资源中的 IP 地址和安全组。 创建具有专用 IP 地址,公共 IP 地址和安全组的虚拟网络接口。 然后,使用此虚拟网络接口创建实例。 稍后可以删除实例,保留虚拟网络接口,并创建具有相同虚拟网络接口的新实例。
准备工作
要创建虚拟网络接口,必须满足以下先决条件:
- VPC 实例
- 要在其中创建虚拟网络接口的子网
- 确保您具有相应的 IAM 许可权。 您必须具有 IAM 管理员角色许可权才能配置 IP 电子欺骗和基础架构 NAT。
您可以使用控制台、CLI、API 或 Terraform 创建虚拟网络接口。
在控制台中创建虚拟网络接口
要在控制台中创建虚拟网络接口,请按照以下步骤操作:
-
从浏览器打开 IBM Cloud 控制台并登录账户。
-
选择导航菜单
,然后单击基础结构 > 网络 > 虚拟网络接口。
-
在“VPC 的虚拟网络接口”页面上,单击 创建。
-
在“位置”部分中,根据需要编辑以下字段。
- 地理位置: 指示要在其中创建虚拟网络接口的地理位置。
- 区域: 指示要在其中创建虚拟网络接口的区域。
-
在详细信息部分,填写以下信息:
- 名称: 输入虚拟网络接口的唯一名称,例如
my-virtual-network-interface
。 - 资源组: 选择虚拟网络接口的资源组。
- 标签:(可选)添加标签,帮助您组织和查找资源。 以后可以添加更多标记。 有关更多信息,请参阅使用标记。
- 访问管理标记: (可选) 向资源添加访问管理标记以帮助组织访问控制关系。 访问管理标记唯一受支持的格式为
key:value
。 有关更多信息,请参阅 使用标记控制对资源的访问。
- 名称: 输入虚拟网络接口的唯一名称,例如
-
在“网络配置”部分中,完成以下信息:
-
虚拟私有云: 选择要在其中创建虚拟网络接口的 VPC。 如果需要创建 VPC,请单击 创建 VPC。
-
子网: 选择要在其中创建虚拟网络接口的子网。 如果需要创建子网,请单击 创建。
-
允许 IP 电子欺骗: 选择开关以启用或禁用 IP 电子欺骗。
- 禁用 IP 欺骗可使流量通过网络接口,而不是在网络接口结束。
- IP 电子欺骗仅支持虚拟服务器实例和裸机服务器。 不支持文件共享。
-
基础架构 NAT: 选择交换机以启用或禁用基础架构 NAT。
启用 IP 欺骗时,将启用基础结构 NAT。
-
已启用 包含一个浮动 IP 地址,并且支持虚拟服务器,裸机服务器和文件共享。
-
已禁用 仅在裸机服务器上支持多个浮动 IP 地址。 不支持将虚拟服务器和文件共享作为虚拟网络接口目标。
禁用时,虚拟服务器实例将接收同级发送的流量,而不使用 NAT。 目标 IP 地址是浮动 IP 地址,裸机服务器负责执行 NAT。
-
-
协议状态过滤方式: 选择单选按钮以设置方式:
-
自动 (缺省值): 根据虚拟网络接口的目标资源启用或禁用过滤。
- 裸机服务器 (已禁用)
- 虚拟服务器实例 (已启用)
- 文件共享安装 (已启用)
-
已启用:强制 TCP 连接与 RFC793 标准保持一致,并通过相应的安全组规则和网络 ACL 允许任何数据包。
-
已禁用:仅允许相应的安全组规则和网络 ACL 允许数据包。
-
-
-
在“主 IP”部分中,进行以下选择。
- 保留方法: 选择是要为您创建主 IP 地址,还是要手动指定主 IP 地址。 如果您指定自己的 IP 地址,请输入虚拟网络接口的现有保留 IP 地址,或者从现有保留 IP 列表菜单中选择一个 IP 地址。
- 自动发布: 单击交换机以启用或禁用此虚拟网络接口的自动发布。
-
在“浮动 IP”部分 (可选) 中,单击 连接。 在显示的侧面板中,您可以从浮动 IP 地址的现有列表中进行选择,或者选择 保留新的浮动 IP 并完成所请求的信息。
如果连接了浮动 IP ,那么将不接受虚拟网络接口作为文件共享安装目标。 如果启用了基础设施 NAT,最多只能连接一个浮动 IP。
-
在“辅助 IP”部分 (可选) 中,单击 连接。 选择保留方法,并指定是否启用自动发布。
虚拟网络接口附加的辅助 IP 不能被接受为文件共享挂载目标。
-
在“安全组”部分,选择至少一个、最多五个安全组来控制网络层面的流量。 您可以从列表中选择安全组,也可以通过单击 创建来创建安全组。 有关创建安全组的更多信息,请参阅 创建安全组。
-
查看“摘要”面板中的信息,然后单击 创建虚拟网络接口。
从 CLI 创建虚拟网络接口
开始之前,请 设置 CLI 环境。
export IBMCLOUD_IS_FEATURE_VNI_ENABLE_PROTOCOL_STATE_FILTERING=true
要从 CLI 创建虚拟网络接口,请输入以下命令:
ibmcloud is virtual-network-interface-create [--name NAME] [--allow-ip-spoofing false | true] [--auto-delete false | true] [--enable-infrastructure-nat false | true] [--protocol-state-filtering-mode auto | disabled | enabled] [[--rip RIP | [--rip-address RIP_ADDRESS --rip-auto-delete RIP_AUTO_DELETE --rip-name RIP_NAME]]] [--subnet SUBNET] [--ips RESERVED_IPS_JSON | @RESERVED_IPS_JSON_FILE] [--sgs SGS] [--resource-group-id RESOURCE_GROUP_ID | --resource-group-name RESOURCE_GROUP_NAME] [--vpc VPC] [--output JSON] [-q, --quiet]
其中:
--name
- 此虚拟网络接口的名称。
--allow-ip-spoofing
- 指示此接口上是否允许源 IP 电子欺骗。 如果
false
,则在此接口上防止源 IP 欺骗。 如果true
,则允许在此接口上欺骗源 IP。 其中一个:false
,true
。 --auto-delete
- 指示删除目标时是否将自动删除此虚拟网络接口。 如果虚拟网络接口未绑定,则必须为
false
。 其中一个:false
,true
。 --enable-infrastructure-nat
- 如果
true
,VPC 基础设施会执行任何所需的 NAT 操作。 如果false
,数据包将保持不变地传入/传出网络接口,允许工作负载执行任何所需的 NAT 操作。 其中一个:false
,true
。 --protocol-state-filtering-mode
- 协议状态过滤方式的状态。
auto
,enabled
和disabled
之一。- 自动 (缺省值): 根据虚拟网络接口的目标资源启用或禁用过滤。
- 裸机服务器 (已禁用)
- 虚拟服务器实例 (已启用)
- 文件共享安装 (已启用)
- 已启用:强制 TCP 连接与 RFC793 标准保持一致,并通过相应的安全组规则和网络 ACL 允许任何数据包。
- 已禁用:仅允许相应的安全组规则和网络 ACL 允许数据包。
- 自动 (缺省值): 根据虚拟网络接口的目标资源启用或禁用过滤。
--rip
- 要绑定到虚拟网络接口的预留 IP 的标识或名称。
--rip-address
- 要绑定到虚拟网络接口的预留 IP 的 IP 地址。
--rip-auto-delete
- 指示在删除目标或取消绑定预留 IP 时是否将自动删除此预留 IP。
--rip-name
- 要绑定到虚拟网络接口的此预留 IP 的名称。
--subnet
- 关联的子网。
--ips ips RESERVED_IPS_JSON | @RESERVED_IPS_JSON_FILE
- JSON 或 JSON 文件中的二级保留 IP 地址,用于绑定到虚拟网络接口。 有关数据模式,请查看 API 文档中的 IPs 属性。 其中一个:
RESERVED_IPS_JSON
,@RESERVED_IPS_JSON_FILE
。 --sgs
- 要用于虚拟网络接口的安全组的标识或名称。
--resource-group-id
- 资源组的标识。 该 ID 与
--resource-group-name
互斥。 --resource-group-name
- 资源组的名称。 该名称与
--resource-group-id
互斥。 --vpc
- 与此 VNI 关联的 VPC 的 ID 或名称。
--output
- 指定输出格式,仅支持 JSON。 以下项之一:
JSON
。 -q, --quiet
- 禁止详细输出。
命令示例
ibmcloud is virtual-network-interface-create --subnet 7208-d42716a5-6df2-416c-979d-f26330b9eod1
ibmcloud is virtual-network-interface-create --name cli-vni-1 --allow-ip-spoofing true --auto-delete true --enable-infrastructure-nat true --protocol-state-filtering-mode auto --rip 7208-d4c0abbe-3fc2-4696-9fe1-4eb3dc9af976 --ips '[{"id":"7208-d83b7e58-3c3d-47d0-89c5-02d9a20c72fd"},{"address":"10.240.64.13", "auto_delete": false, "name": "srip2"}]' --sgs r006-aa7c7658-e503-4456-b342-8d6a89e05115,r006-4fb388f1-2b6e-4013-b279-7a8748f4d6ca --resource-group-id 11caaa983d9c4beb82690daab08717e9
ibmcloud is virtual-network-interface-create --name cli-vni-2 --allow-ip-spoofing true --auto-delete true --enable-infrastructure-nat true --protocol-state-filtering-mode enabled --rip cli-rip-1 --subnet my-subnet --vpc vpc-cli-1 --ips '[{"id":"7208-d83b7e58-3c3d-47d0-89c5-02d9a20c72fd"},{"address":"10.240.64.14", "auto_delete": false, "name": "srip3"}]' --sgs cli-sg,sanctity-contest-only-filing --resource-group-name Default
ibmcloud is virtual-network-interface-create --name cli-vni-4 --allow-ip-spoofing false --auto-delete false --enable-infrastructure-nat false --protocol-state-filtering-mode disabled --subnet 7208-bfe017e7-6e71-415a-8615-0ee787fbeef9 --rip-address 10.240.64.15 --rip-auto-delete false --rip-name primar-ip-1 --ips '[{"id":"7208-2772a45f-c062-4e22-bafb-32ea792da56b"},{"address":"10.240.64.17", "auto_delete": false, "name": "sec-ip-2"}]' --sgs r006-aa7c7658-e503-4456-b342-8d6a89e05115,r006-4fb388f1-2b6e-4013-b279-7a8748f4d6ca --resource-group-id 11caaa983d9c4beb82690daab08717e9
ibmcloud is virtual-network-interface-create --name cli-vni-3 --allow-ip-spoofing true --auto-delete false --enable-infrastructure-nat true --protocol-state-filtering-mode auto --subnet my-subnet --vpc vpc-cli-1 --rip-address 10.240.64.18 --rip-auto-delete true --rip-name primar-ip-2 --ips '[{"id":"7208-d42716a5-6df2-416c-979d-f26330b9d0b1"},{"address":"10.240.64.19", "auto_delete": true, "name": "sec-ip-3"}]' --sgs cli-sg,sanctity-contest-only-filing --resource-group-name Default
使用 API 创建虚拟网络接口
要使用 API 创建虚拟网络接口,请执行以下步骤:
-
使用正确的变量 设置 API 环境。
-
存储要在 API 命令中使用的任何其他变量; 例如:
version
(字符串): API 版本,格式为YYYY-MM-DD
。
-
启动所有变量时,创建虚拟网络接口:
curl -X POST \ "$vpc_api_endpoint/v1/virtual_network_interfaces?version=$version&generation=2" \ -H "Authorization: Bearer $iam_token" \ -d '{ "name": "my-virtual-network-interface", "primary_ip": { "address": "10.0.0.5" }, "protocol_state_filtering_mode": "disabled", "security_groups": [ { "id": "be5df5ca-12a0-494b-907e-aa6ec2bfa271" }, { "id": "032e1387-71ba-4e83-b268-a53edf94af19" } ], "subnet": { "id": "032e1387-71ba-4e83-b268-a53edf94af19" } }'
使用 Terraform 创建虚拟网络接口
以下示例使用 Terraform 创建虚拟网络接口:
resource "ibm_is_virtual_network_interface" "is_virtual_network_interface_instance" {
allow_ip_spoofing = true
auto_delete = false
enable_infrastructure_nat = true
name = "my-virtual-network-interface"
subnet = "<SubnetId>"
protocol_state_filtering_mode = "auto"
}
有关更多信息,请参阅 Terraform 注册表。