调整 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. 分组函数列表中,选择 Max

    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

指定 TCP 连接在 处于半开状态,然后才能删除 Cloud NAT 映射。

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

30 秒

注意:无论您为此超时设置的值如何,Cloud NAT 可能还需要 30 秒才能使用 NAT 来源 IP 地址和来源端口元组处理新连接。

TCP TIME_WAIT 超时

RFC 5382 REQ-5

指定完全关闭的 TCP 连接保持的时长(以秒为单位) 出现故障。

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

您可以减小超时值,以提高 Cloud NAT 的重复使用率 但代价是可能会收到 之前已关闭的无关连接。

120 秒

注意:无论您为此超时设置的值是什么, Cloud NAT 最长可能需要 30 秒的时间才能 可以使用 Cloud NAT 来源 IP 地址和来源端口元组 处理新连接。如果您使用的是动态端口分配,请将此超时设置为 30 秒或更长时间,以避免丢包。

ICMP 映射空闲超时
(仅适用于 Public 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 超时设置
停用动态端口分配

后续步骤