IBM Cloud Docs
管理网络接口

管理网络接口

创建虚拟服务器实例后,可以添加两种样式的新网络接口 (子网络接口和虚拟网络接口) 或编辑已与该实例关联的接口。 编辑网络接口时,可以更改其名称,关联或取消关联浮动 IP 地址,或者访问与接口关联的安全组。

关于网络接口

网络接口用于将虚拟服务器实例连接到网络。 创建虚拟服务器实例时,您可以使用网络接口分配多个IP地址。

以下列表重点介绍了网络接口与实例的配合方式。

  • 您可以为每个虚拟服务器实例创建和分配多个网络接口。 可以分配给虚拟服务器实例的网络接口数取决于用于供应实例的 概要文件 中包含的 vCPU 计数。
    • 2 - 16 vCPUs: 多达五个网络接口
    • 17 - 48 vCPUs: 多达 10 个网络接口
    • 49 个或更多 vCPUs: 最多 15 个网络接口
  • 您可以将每个网络接口连接到同一区域的不同子网。
  • 为每个网络分配了唯一且不可改变的介质访问控制 (MAC) 地址,并从子网范围接收专用 IP 地址。
  • 您可以为虚拟服务器实例上的每个网络接口分配一个浮动IP地址。 在数据路径中,网络地址转换(NAT)应用于浮动IP地址和网络接口的主IP地址之间。
  • 默认情况下,IBM Cloud 控制台中的主要界面为 eth0。 默认情况下,次要接口为 eth1eth2 等。
  • 您可以为每个网络接口分配安全组。
  • 您可以更改任何现有网络接口的名称。

带宽分配给连接到虚拟服务器实例的网络接口。 有关更多信息,请参阅 带宽分配

如果在虚拟服务器实例运行时将新的网络接口分配给该实例,那么必须配置该网络接口以供该实例使用。 您可以停止然后重新启动实例,也可以在访客操作系统中手动配置接口。 例如,在基于 Linux的操作系统上,可以使用 ip link set dev <interface> up 来检索接口的 IP 地址配置。

添加或编辑网络接口

要添加或编辑与虚拟服务器实例关联的网络接口,请完成以下步骤。

  1. 在 IBM Cloud 控制台中,转到 导航菜单 图标 菜单图标 基础架构 VPC 图标 计算 > 虚拟服务器实例
  2. 单击包含要编辑的网络接口的虚拟服务器实例的名称。 或者,可以向虚拟服务器实例添加网络接口。
  3. 在“实例详细信息”页面上,找到 网络接口 部分。
  4. 有关添加浮动 IP 地址或添加网络接口的特定步骤,请参阅以下部分。

添加浮动IP地址

如果您想在网络接口上添加浮动 IP 地址,以便互联网上的流量能够访问您的虚拟服务器实例,请完成以下步骤。

  1. 如果您是第一次向虚拟服务器实例添加浮动 IP 地址,请在实例详细信息页面的 网络接口部分确定一个网络接口。 通常情况下,实例的主网络接口用于连接浮动IP。 默认情况下,在访客操作系统中,第一个界面的名称为 eth0。 最初将浮动 IP 地址与主网络接口相关联有助于建立数据路径。 稍后,您可以将浮动 IP 关联到实例上的其他网络接口,或将多个浮动 IP 关联到辅助网络接口。
  2. 单击 Edit 图标 Edit 图标 编辑主网络接口。
  3. 在“编辑网络接口”页面上,找到 浮动 IP 地址 字段。 您可以选择 保留新的浮动 IP,也可以选择现有浮动 IP 地址。
  4. 选择完成后,点击保存

添加网络接口

根据实例概要文件中包含的 vCPU 计数,最多可以向虚拟服务器实例添加 15 个网络接口。 网络接口建立唯一的 IP 地址,为虚拟服务器实例提供多个 IP 地址的选项。 在开始添加接口之前,请确保已创建要与新网络接口关联的唯一子网。 每个网络接口必须位于同一专区中的不同子网上。

要向虚拟服务器实例添加网络接口,请完成以下步骤。

  1. 在“实例详细信息”页面的 网络接口 部分中,单击 新建接口
  2. 在“新建网络接口”页面上,接口名称缺省为递增数字。 如果此实例是主接口之后的第一个新接口,那么缺省名称为 eth1。 你可以根据需要更改名称。
  3. 从分配给现有网络接口的子网中选择唯一子网。
  4. 选择要与网络接口关联的安全组。
  5. 单击创建
  6. 如果在添加网络接口时虚拟服务器实例正在运行,那么必须为该实例配置网络接口。 您可以停止然后重新启动实例,也可以在访客操作系统中手动配置接口。 例如,在基于 Linux的操作系统上,可以使用 ip link set dev <interface> up 来检索接口的 IP 地址配置。

添加虚拟网络接口

您可以创建虚拟网络接口,而不将其连接到目标。 即使除去了虚拟网络接口的目标,该虚拟网络接口也可以存在。 有关更多信息,请参阅 使用虚拟网络接口

虚拟网络接口可以连接到新的虚拟服务器实例,并且不能添加到具有子网络接口的现有虚拟服务器实例。

![虚拟服务器实例网络附加装置](images/vni-vsi-arch.svg "带有网络附加装置的虚拟服务器实例带有连接到虚拟" caption-side="bottom"}的网络附加装置的虚拟服务器实例"){: caption="

  1. 在 IBM Cloud 控制台中,转到 导航菜单 图标 菜单图标 基础架构 VPC 图标 计算 > 虚拟服务器实例
  2. 单击 创建 以开始创建能够使用虚拟网络接口的新虚拟服务器实例。
  3. 联网 部分中,选择是否创建下列其中一项:
    • 具有虚拟网络接口的网络连接: 具有其他功能的网络接口,例如辅助 IP 地址和独立于要创建的虚拟服务器实例的生命周期。
    • 实例网络接口: 子网络接口。

配置具有多个接口的虚拟服务器实例

有时,虚拟服务器实例通过多个网络接口与其他实例进行通信,例如,将不同的子网用于不同的通信目的。 您可能需要一个子网用于数据通信,另一个子网用于控制通信。 由于虚拟服务器实例配置有与主网络接口关联的单个缺省路由,因此其他接口上的通信最初可能无法工作。 (出于安全目的的 IP 电子欺骗检查还可以阻止非主网络接口上的通信流。)

您可以使用下列其中一个选项为辅助网络接口建立通信。 这些示例适用于 Linux 平台,例如 Ubuntu

  • 为第二个子网添加静态路由。
  • 为第二个子网添加单独的路由表。

缺省情况下,将在供应实例时生成虚拟服务器实例的路由表。 修改生成的路由表是一项不重要的任务。 如果需要修改虚拟服务器实例的路由表,那么在供应实例时,可以包含用户数据来描述和重新配置实例的路由表。 另一个选项是使用定制映像来供应实例并控制为多个网络接口创建的内容。 使用缺省映像来供应实例时,将为您创建网络配置。 您对生成的内容的控制有限。

以下部分将详细介绍这些解决方案。

虚拟服务器设置示例:

  • 两个虚拟服务器 (Virtual-server-1Virtual-server-2),其中两个虚拟服务器都属于同一 VPC。

  • 每个虚拟服务器都具有来自两个子网的两个接口:

    • Virtual-server-1 具有来自 net_1_0 的接口 eth0 和来自 net_1_1 的接口 eth1
    • Virtual-server-2 具有来自 net_2_0 的接口 eth0 和来自 net_2_1 的接口 eth1
  • 每个虚拟服务器的 net_*_0 都设置了缺省路由。

  • 每个子网的网关 IP 和 CIDR 已知。

    此处使用字母名称。 实际网关标识将类似于 192.168.100.1,CIDR 192.168.100.0/24 和 IP 地址 192.168.100.6

具有多个接口的虚拟服务器实例示例
Subnet 网关 IP 子网 CIDR 接口 IP
net_1_0 gw_ip_1_0 cidr_1_0 ip_1_0
net_1_1 gw_ip_1_1 cidr_1_1 ip_1_1
net_2_0 gw_ip_2_0 cidr_2_0 ip_2_0
net_2_1 gw_ip_2_1 cidr_2_1 ip_2_1

为第二个接口添加静态路由

此解决方案使一个子网成为缺省网关 (通过创建虚拟服务器实例自动),并为第二个子网添加静态路由:

  • Virtual-server-1 上:

    ip route add cidr_2_1 via gw_ip_1_1 dev eth1
    
  • Virtual-server-2 上:

    ip route add cidr_1_1 via gw_ip_2_1 dev eth1
    

为第二个接口添加单独的路由表

  • Virtual-server-1 上:
   echo 201 eth1tab >> /etc/iproute2/rt_tables
   ip route add cidr_1_1 dev eth1 proto kernel scope link src ip_1_1 table eth1tab
   ip route add default via gw_1_1 dev eth1 table eth1tab
  • Virtual-server-2 上:
echo 201 eth1tab >> /etc/iproute2/rt_tables
ip route add cidr_2_1 dev eth1 proto kernel scope link src ip_2_1 table eth1tab
ip route add default via gw_2_1 dev eth1 table eth1tab
ip rule add from ip_2_1 table eth1tab

尽管此方法比添加静态路由更复杂一些,但它提供了一种针对不同接口定制路由策略的方法。

从 CLI 创建虚拟网络接口

虚拟网络接口可以连接到新的虚拟服务器实例,并且不能添加到具有子网络接口的现有虚拟服务器实例。

您可以使用命令行界面 (CLI) 创建虚拟网络接口。 有关功能,规划注意事项,入门和用例的更多信息,请参阅 关于虚拟网络接口

要使用 CLI 创建虚拟网络接口,请使用 ibmcloud is virtual-network-interface-create 命令。

ibmcloud is virtual-network-interface-create [--name NAME] [--allow-ip-spoofing false | true] [--auto-delete false | true] [--enable-infrastructure-nat false | true] [[--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]

以下示例创建基于保留 IP 设置的虚拟网络接口。 虚拟网络接口名称为 cli-vni-1。 保留 IP 地址的标识为 7208-d4c0abbe-3fc2-4696-9fe1-4eb3dc9af976。 主保留 IP 地址的标识为 7208-d83b7e58-3c3d-47d0-89c5-02d9a20c72fd。 辅助保留 IP 地址为 10.240.64.13。 要与虚拟网络接口关联的安全组标识为 r134-aa7c7658-e503-4456-b342-8d6a89e05115r134-4fb388f1-2b6e-4013-b279-7a8748f4d6ca。 在其中创建虚拟网络接口的资源组的标识为 11caaa983d9c4beb82690daab08717e9

ibmcloud is virtual-network-interface-create --name cli-vni-1 --allow-ip-spoofing true --auto-delete false --enable-infrastructure-nat true --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 r134-aa7c7658-e503-4456-b342-8d6a89e05115,r134-4fb388f1-2b6e-4013-b279-7a8748f4d6ca --resource-group-id 11caaa983d9c4beb82690daab08717e9

有关更多信息,请参阅 VPC CLI 参考页面中的 ibmcloud is virtual-network-interface-create

创建具有现有虚拟网络接口的虚拟服务器

您可以使用命令行界面 (CLI) 来创建使用现有虚拟网络接口的虚拟服务器实例。

要使用 CLI 创建具有现有虚拟网络接口的虚拟服务器实例,请使用 ibmcloud is instance-create 命令。

以下示例创建包含现有虚拟网络接口的虚拟服务器。 虚拟服务器名称为 my-instance-name。 VPC 的标识为 72b27b5c-f4b0-48bb-b954-5becc7c1dcb8。 区域名称为 us-south-1。 虚拟服务器的概要文件为 bx2-2x8。 子网为 72b27b5c-f4b0-48bb-b954-5becc7c1dcb8。 主网络连接名称为 cli-pnac-1。 与主网络接口关联的虚拟网络接口的标识为 7322-1293a27a-7178-4e62-ba5b-272623c989aa。 网络连接配置包含名称 instance-snac-1 和虚拟网络接口标识 02h7-56705448-c9d9-43dc-aa11-20d42333cd87。 虚拟服务器的映像标识为 r123-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8

ibmcloud is instance-create my-instance-name 72b27b5c-f4b0-48bb-b954-5becc7c1dcb8 us-south-1 bx2-2x8 72b27b5c-f4b0-48bb-b954-5becc7c1dcb8 --pnac-name cli-pnac-1 --pnac-vni 7322-1293a27a-7178-4e62-ba5b-272623c989aa --network-attachments [{"name": "instance-snac-1","virtual_network_interface": {"id":"02h7-56705448-c9d9-43dc-aa11-20d42333cd87"}}] --image r123-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8

有关更多信息,请参阅 VPC CLI 参考页面中的 ibmcloud is instance-create

使用 API 创建虚拟网络接口

虚拟网络接口可以连接到新的虚拟服务器实例,并且不能添加到具有子网络接口的现有虚拟服务器实例。

您可以使用 API 来创建虚拟网络接口。 有关功能,规划注意事项,入门和用例的更多信息,请参阅 关于虚拟网络接口

要使用 API 创建虚拟网络接口,请执行以下步骤:

  1. 使用正确的变量 设置 API 环境。

  2. 存储要在 API 命令中使用的任何其他变量; 例如:

    • version (字符串): API 版本,格式为 YYYY-MM-DD
  3. 启动所有变量时,请创建虚拟网络接口。 以下示例包含主 IP 地址,安全组和子网的样本信息。

    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"
          },
          "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" "my_virtual_network_interface_instance" {
  allow_ip_spoofing = true
  auto_delete = false
  enable_infrastructure_nat = true
  name = "my-virtual-network-interface"
  subnet = ibm_is_subnet.my_subnet.id
}

有关更多信息,请参阅 Terraform 注册表

如果要将虚拟网络接口连接到新的虚拟服务器实例,请参阅 Terraform 注册表