调整 NAT 配置

设置 Cloud NAT 网关配置(公共 NAT 或专用 NAT)后,您可以根据自己的需求修改配置。本页面列出了在调整 Cloud NAT 配置时可以执行的任务。

修改配置可能会造成中断,并可能导致现有的网络地址转换 (NAT) 连接中断。如需详细了解调整 Cloud NAT 配置的影响,请参阅调整 NAT 配置对现有 NAT 连接的影响

查看端口用量

在修改每个虚拟机的端口用量下限之前,请查看每个虚拟机的端口用量。您可以使用 compute.googleapis.com/nat/port_usage 指标来获取此信息。

  1. 在 Google Cloud 控制台中,转到 Monitoring 页面。

    进入 Monitoring

    1. 在导航窗格中,选择 Metrics Explorer

    2. 展开选择指标菜单,然后使用子菜单选择 compute.googleapis.com/nat/port_usage 指标:

      • 对于资源,请选择虚拟机实例
      • 对于指标类别,请选择 NAT
      • 对于指标,选择端口用量
    3. 点击应用

    4. 如需选择 Cloud NAT 网关,请使用过滤条件字段。

    5. 分组依据部分中,对于标签,选择 instance_id

    6. 分组函数列表中,选择最大值

    7. 展开更多选项,并将校准器字段设置为 max

    8. 如需查看过去 30 天的用量,请指定 30d

    如需详细了解如何使用 Metrics Explorer,请参阅使用 Metrics Explorer 时选择指标

选择每个虚拟机的端口数下限

选择适当的端口数下限有很重要,这可帮助您最大限度地提高 NAT IP 地址用量。

在增加每个虚拟机的端口数之前,请考虑其他减少端口用量的策略。

如果您需要增加每个虚拟机的端口数,请先考虑网关中每个虚拟机的端口用量。如需了解如何查找此数据,请参阅查看端口用量

查看过去 30 天或您认为代表您的 Cloud NAT 网关的其他时间段的最大端口用量。

执行下列其中一项操作:

更改为每个虚拟机分配的默认端口数下限

如需有关确定如何配置每个虚拟机的端口数下限的帮助,请参阅选择每个虚拟机的端口数下限

如需了解更改端口数下限分配的结果,请参阅以下部分:

如果您的 Cloud NAT 网关已配置动态端口分配,请参阅配置动态端口分配时更改最小或最大端口数

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud NAT 页面。

    进入 Cloud NAT

  2. 点击您的 Cloud NAT 网关。

  3. 点击修改

  4. 点击高级配置

  5. 修改每个虚拟机实例的端口数下限字段。

  6. 点击保存

gcloud

此命令会使 Cloud NAT 配置中的其他字段保持不变。

gcloud compute routers nats update NAT_CONFIG \
    --router=ROUTER_NAME \
    --region=REGION \
    --min-ports-per-vm=128

替换以下内容:

  • NAT_CONFIG:您的 Cloud NAT 配置的名称。
  • ROUTER_NAME:您的 Cloud Router 路由器的名称。
  • REGION:要更新的 Cloud NAT 区域。如果未指定,系统可能会提示您选择一个区域(仅限互动模式)。

更改端口分配方法

静态端口分配动态端口分配具有不同的配置要求。

在更新现有 Cloud NAT 网关上的端口分配类型之前,请确保 Cloud NAT 网关配置与该端口分配类型兼容。如果配置不兼容,则更改将会失败。

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud NAT 页面。

    进入 Cloud NAT

  2. 点击您的 Cloud NAT 网关。

  3. 点击修改

  4. 点击高级配置

  5. 选择或取消选择启用动态端口分配

  6. 如果需要,请调整每个虚拟机实例的端口数下限每个虚拟机实例的端口数上限的值。

  7. 点击保存

gcloud

此命令会使 Cloud NAT 配置中的其他字段保持不变。

gcloud compute routers nats update NAT_CONFIG \
    --router=ROUTER_NAME \
    --region=REGION \
    --enable-dynamic-port-allocation | --no-enable-dynamic-port-allocation \
    [ --min-ports-per-vm=MIN_PORTS ] \
    [ --max-ports-per-vm=MAX_PORTS ]

替换以下内容:

  • NAT_CONFIG:您的 Cloud NAT 配置的名称。
  • ROUTER_NAME:您的 Cloud Router 路由器的名称。
  • REGION:要更新的 Cloud NAT 区域。如果未指定,系统可能会提示您选择一个区域(仅限互动模式)。
  • MIN_PORTS:要为每个虚拟机分配的端口数下限。如果启用了动态端口分配,则 MIN_PORTS 必须是 2 的幂,并且可以介于 3232768 之间。
  • MAX_PORTS:为每个虚拟机分配的端口数上限。MAX_PORTS 必须是 2 的幂,并且可以介于 6465536 之间。MAX_PORTS 必须大于 MIN_PORTS。默认值为 65536

配置动态端口分配时更改最小或最大端口数

配置动态端口分配后,您可以更改每个虚拟机分配的端口数下限或上限。

如需有关确定如何配置每个虚拟机的端口数下限的帮助,请参阅选择每个虚拟机的端口数下限

如需了解更改端口数下限分配的结果,请参阅以下部分:

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud NAT 页面。

    进入 Cloud NAT

  2. 点击您的 Cloud NAT 网关。

  3. 点击修改

  4. 点击高级配置

  5. 调整每个虚拟机实例的端口数下限每个虚拟机实例的端口数上限字段。

  6. 点击保存

gcloud

此命令会使 Cloud NAT 配置中的其他字段保持不变。

gcloud compute routers nats update NAT_CONFIG \
    --router=ROUTER_NAME \
    --region=REGION \
    --min-ports-per-vm=MIN_PORTS \
    --max-ports-per-vm=MAX_PORTS

替换以下内容:

  • NAT_CONFIG:您的 Cloud NAT 配置的名称。
  • ROUTER_NAME:您的 Cloud Router 路由器的名称。
  • REGION:要更新的 Cloud NAT 区域。如果未指定,系统可能会提示您选择一个区域(仅限互动模式)。
  • MIN_PORTS:要为每个虚拟机分配的端口数下限。如果启用了动态端口分配,则 MIN_PORTS 必须是 2 的幂,并且可以介于 3232768 之间。
  • MAX_PORTS:为每个虚拟机分配的端口数上限。MAX_PORTS 必须是 2 的幂,并且可以介于 6465536 之间。MAX_PORTS 必须大于 MIN_PORTS

修改 NAT 超时

以下部分介绍了 NAT 超时及其修改方法:

NAT 超时

Cloud NAT 对协议连接使用以下超时时间。除非另有说明,否则这些超时同时适用于公共 NAT 和专用 NAT。您可以修改默认超时值,以降低或提高端口重复使用速率。每个超时值都在 Cloud NAT 资源的有效使用与活跃连接、流或会话的可能中断之间实现平衡。

超时 说明 Cloud NAT 默认值 可配置

UDP 映射空闲超时

RFC 4787 REQ-5

指定多长时间(以秒为单位)之后,UDP 流必须停止向端点发送流量以便移除 Cloud NAT 映射。

UDP 映射空闲超时会影响两个端点,这些端点会停止互相发送流量。它还会影响响应时间更长的端点,或者网络延迟时间是否增加。

您可以增加指定的超时值,以降低端口重用的速率。超时值越大,意味着端口会被保留更长时间的连接,并且可防止通过特定 UDP 套接字的流量出现暂停。

30 秒

TCP 已建立的连接空闲超时

RFC 5382 REQ-5

指定在移除 Cloud NAT 映射之前连接闲置的时间(以秒为单位)。

TCP 已建立连接空闲超时会影响响应时间更长或者网络延迟时间增加的端点。

如果您希望打开 TCP 连接并长时间保持连接打开,而无需部署 keepalive 机制,可以增加超时值。

1200 秒(20 分钟)

TCP 临时连接空闲超时

RFC 5382 REQ-5

指定在删除 Cloud NAT 映射之前 TCP 连接可以保持半打开状态的时间(以秒为单位)。

TCP 临时连接空闲超时影响端点的情况:外部端点花费的时间超过指定时间或网络延迟增加。与 TCP 已建立的连接空闲超时不同,TCP 临时连接空闲超时仅影响半开连接。

30 秒

注意:无论您为此超时设置的值是什么,Cloud NAT 可能都需要再等待最多 30 秒,才能使用 Cloud NAT 来源 IP 地址和来源端口元组来处理新连接。

TCP TIME_WAIT 超时

RFC 5382 REQ-5

指定完全关闭的 TCP 连接在连接过期后在 Cloud NAT 映射中保留的时间(以秒为单位)。

TCP TIME_WAIT 超时可保护您的内部端点,避免接收属于已关闭的 TCP 连接且应重新传输的无效数据包。

您可以缩短超时值以改善 Cloud NAT 端口的重复使用情况,但代价是可能会收到来自先前关闭的无关连接并传送的数据包。

120 秒

注意:无论您为此超时设置的值是什么,Cloud NAT 可能都需要额外最多 30 秒才能使用 Cloud NAT 来源 IP 地址和来源端口元组来处理新连接。

ICMP 映射空闲超时
(仅适用于公共 NAT)

RFC 5508 REQ-2

指定没有任何流量流的互联网控制消息协议 (ICMP) Cloud NAT 映射关闭的时间(以秒为单位)。

如果端点响应时间超过指定时间,或者网络延迟时间增加,则 ICMP 映射空闲超时会影响端点。

30 秒

更改 NAT 超时

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud NAT 页面。

    进入 Cloud NAT

  2. 点击您的 Cloud NAT 网关。

  3. 点击修改

  4. 点击高级配置

  5. 修改您要更改的所有超时值。

  6. 点击保存

gcloud

使用带有以下标志的 gcloud compute routers nats update 命令更改这些超时值:

  • UDP 映射空闲超时:--udp-idle-timeout
  • TCP 已建立连接空闲超时:--tcp-established-idle-timeout
  • TCP 临时连接空闲超时:--tcp-transitory-idle-timeout
  • TCP TIME_WAIT 超时:--tcp-time-wait-timeout
  • ICMP 映射空闲超时:--icmp-idle-timeout

此命令会使 NAT 配置中的其他字段保持不变。

例如,以下命令会更改 UDP 映射空闲超时值。

gcloud compute routers nats update NAT_CONFIG \
    --router=ROUTER_NAME \
    --region=REGION \
    --udp-idle-timeout=VALUE

替换以下内容:

  • NAT_CONFIG:您的 Cloud NAT 配置的名称。
  • ROUTER_NAME:您的 Cloud Router 路由器的名称。
  • REGION:要更新的 Cloud NAT 区域。如果未指定,系统可能会提示您选择一个区域(仅限互动模式)。
  • VALUE:超时值(以秒为单位)

将 NAT 超时重置为默认值

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud NAT 页面。

    进入 Cloud NAT

  2. 点击您的 Cloud NAT 网关。

  3. 点击修改

  4. 点击高级配置

  5. 移除您要重置的任何用户配置的值。

  6. 点击保存

已移除的值会重置为默认值。

gcloud

此命令会使 Cloud NAT 配置中的其他字段保持不变。

gcloud compute routers nats update NAT_CONFIG \
    --router=ROUTER_NAME \
    --region=REGION \
    --clear-udp-idle-timeout \
    --clear-icmp-idle-timeout \
    --clear-tcp-established-idle-timeout \
    --clear-tcp-time-wait-timeout \
    --clear-tcp-transitory-idle-timeout

替换以下内容:

  • NAT_CONFIG:您的 Cloud NAT 网关的名称。
  • ROUTER_NAME:您的 Cloud Router 路由器的名称。
  • REGION:要更新的 Cloud NAT 区域。如果未指定,系统可能会提示您选择一个区域(仅限互动模式)。

调整 NAT 配置对现有 NAT 连接的影响

下表总结了调整 Cloud NAT 配置对现有连接的影响:

调整操作 连接中断
停用端点独立映射
降低每个虚拟机的端口数下限,同时启用动态端口分配:
每个虚拟机的最大端口数 >= 每个虚拟机的端口数下限以及
每个虚拟机的最大端口数 >= 1024
在已启用动态端口分配的情况下,增加每个虚拟机的端口数下限
在已启用动态端口分配的情况下,减少每个虚拟机的端口数下限
在已停用动态端口分配的情况下,增加每个虚拟机的端口数下限
在已停用动态端口分配的情况下,减少每个虚拟机的端口数下限
增加每个虚拟机的端口数上限
减少每个虚拟机的端口数上限(如果已启用动态端口分配)
在启用或停用动态端口分配后更改 Cloud NAT 超时
停用动态端口分配

后续步骤