控制入站流量和出站流量

本页面介绍如何为 VPN 隧道配置入站和出站流量。

按项目控制 VPN 隧道的出站和入站流量。

  • 默认情况下,所有项目都会拒绝来自 VPN 隧道的入站流量。
  • 默认情况下,启用了数据渗漏防护的项目会拒绝流向 VPN 隧道的出站流量。

按照以下说明更改项目的默认 VPN 流量出站和入站规则。

准备工作

如需为 VPN 隧道配置入站和出站流量,您必须具备以下条件:

  • 现有 VPN 隧道。如需了解详情,请参阅创建 VPN 隧道
  • 必要的身份和访问权限角色:

    • VPN 管理员:拥有对所有 VPN 相关资源的读写权限。请让您的组织 IAM 管理员向您授予 VPN 管理员 (vpn-admin) 角色。
    • VPN Viewer:拥有对所有 VPN 相关资源的读取权限。请让您的组织 IAM 管理员向您授予 VPN Viewer (vpn-viewer) 角色。
    • Project NetworkPolicy Admin:管理项目命名空间中的项目网络政策。请让您的组织 IAM 管理员向您授予 Project NetworkPolicy Admin (project-networkpolicy-admin) 角色。
    • 如需了解详情,请参阅角色定义

配置入站流量

默认情况下,所有项目都会拒绝来自 VPN 隧道的入站流量。如需使项目允许来自 VPN 隧道的流量,请使用 ProjectNetworkPolicy 对象,该对象以通过 VPN 隧道上使用的边界网关协议 (BGP) 会话接收的路由为目标:

如需启用项目以允许来自 VPN 隧道的流量,请按以下步骤操作:

  1. VPNBGPPeer 状态检索所有已接收的路由:

    kubectl --kubeconfig MANAGEMENT_API_SERVER get -n platform vpnbgppeer VPN_BGP_PEER_NAME -ojson | jq '.status.received'
    

    替换以下内容:

    • MANAGEMENT_API_SERVER:区域 API 服务器的 kubeconfig 路径。如果您尚未为目标地区中的 API 服务器生成 kubeconfig 文件,请参阅登录了解详情。
    • VPN_BGP_PEER_NAME:您的 VPN BGP 会话的名称。

    如需了解详情,请参阅创建 VPN BGP 会话

    输出类似于以下示例:

    [
      {
        "prefix": "192.168.100.0/24"
      },
      {
        "prefix": "192.168.101.0/24"
      }
    ]
    
  2. VPNBGPPeer 状态中的所有接收到的路由添加到项目的命名空间中的 ProjectNetworkPolicy 对象:

    kubectl --kubeconfig GLOBAL_API_SERVER create -n PROJECT_NAME -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      name: allow-ingress-vpn-traffic
    spec:
      policyType: Ingress
      subject:
        subjectType: UserWorkload
      ingress:
      - from:
        - ipBlocks:
          - cidr: 192.168.100.0/24
          - cidr: 192.168.101.0/24
    EOF
    

    替换以下内容:

    • GLOBAL_API_SERVER:全局 API 服务器的 kubeconfig 路径。如需了解详情,请参阅全球 API 服务器资源
    • PROJECT_NAME:您的 GDC 项目的名称。

配置出站流量

默认情况下,启用了数据渗漏防护的项目会拒绝向 VPN 发送流量。

您可以为项目停用数据渗漏防护功能,从而允许项目将流量发送到 VPN 隧道。如需了解详情,请参阅防止数据渗漏

后续步骤