通过网络策略控制虚拟机网络请求

平台的虚拟机方案基于开源组件 KubeVirt 实现,实际上运行在 Pod 中。通过利用网络策略的功能,可以控制虚拟机的入站和出站请求。

操作步骤

  1. 进入 容器平台

  2. 在左侧导航栏点击 网络 > 网络策略

  3. 点击 创建网络策略

  4. 根据需要配置以下参数。

    参数说明
    关联方式
    • 计算组件:根据需要选择目标计算组件,建议选择 全部 作为目标计算组件。
    • 标签选择器:根据 Pod 的标签进行匹配。
    方向
    • 入站:从外部发送到 Pod 的请求。
    • 出站:从 Pod 发送到外部的请求;如果禁止虚拟机请求某个外部地址,选择此项。
    协议选择 TCP 或 UDP。

    注意
    • 虚拟机中使用域名请求外部服务时,需要添加 UDP 协议白名单,因为 DNS 协议使用 UDP。
    • 表单不支持配置 ICMP 协议;一旦启用白名单规则,ICMP 协议将被禁用,导致无法进行 Ping 操作。
    访问端口指定允许入站或出站的端口流量。如果此项为空,默认允许所有端口的流量。

    注意:此处需允许 1053 和 53 端口的 UDP 和 TCP 协议,以允许 DNS 流量出站,否则域名解析将失败。
    远程类型指定允许访问的远程类型,选项包括:计算组件、命名空间和 IP 段。
    排除远程当远程类型为 IP 段 时,从白名单中移除指定 IP(即禁止访问)。单个 IP 可输入为 IP/32

    注意:此项仅支持输入 IP;若域名对应的 IP 不明确,可使用命令 curl -vvv <domain> 请求该域名,从返回信息中获取对应 IP 地址。
  5. 点击 创建

结果验证

本文以虚拟机访问 www.example.com 进行验证。

第一步:创建虚拟机及允许所有流量通过的网络策略

  1. 创建虚拟机,详细步骤请参考 创建虚拟机

  2. 在虚拟机所在命令空间配置网络策略,添加 TCP 和 UDP 协议的白名单规则,参数如下:

    • TCP 协议白名单:

      参数说明
      关联方式选择 计算组件
      目标计算组件选择 全部
      方向选择 出站
      协议选择 TCP
      远程类型选择 IP 段
      远程输入 0.0.0.0/0,表示允许所有流量出站。
    • UDP 协议白名单规则:

      参数说明
      方向选择 出站
      协议选择 UDP
      远程类型选择 IP 段
      远程输入 0.0.0.0/0,表示允许所有流量出站。
  3. 网络策略创建完成后,登录虚拟机,执行以下命令请求 www.example.com

    curl www.example.com
  4. 请求成功。

第二步:更新网络策略,将 www.example.com 从白名单中移除

  1. 执行以下命令获取 www.example.com 的 IP 地址,得到 IP 为 93.184.215.14。

    curl -vvv www.example.com
  2. 更新第一步创建的网络策略,更新参数如下:

    参数说明
    排除远程在 TCP 协议白名单规则中,排除远程参数填写 93.184.215.14/32,表示将 IP 地址 93.184.215.14 从白名单中移除。
  3. 更新网络策略后,登录虚拟机,执行以下命令请求 www.example.com

    curl www.example.com
  4. 请求超时,表示排除远程功能生效。