调整 NAT 配置
设置 Cloud NAT 网关配置(Public NAT 或 Private NAT)后,您可以根据要求修改配置。本页列出了您可以执行的用于调整 Cloud NAT 配置的任务。
修改配置可能会中断连接,并导致现有的网络地址转换 (NAT) 连接中断。如需详细了解调整 Cloud NAT 配置的影响,请参阅调整 NAT 配置对现有 NAT 连接的影响。
查看端口用量
在修改每个虚拟机的端口用量下限之前,请查看每个虚拟机的端口用量。您可以使用 compute.googleapis.com/nat/port_usage
指标来获取此信息。
在 Google Cloud 控制台中,转到 Monitoring 页面。
在导航窗格中,选择 Metrics Explorer 。
展开选择指标菜单,然后使用子菜单选择
compute.googleapis.com/nat/port_usage
指标:- 对于资源,请选择虚拟机实例。
- 对于指标类别,请选择 NAT。
- 对于指标,选择端口用量。
点击应用。
如需选择 Cloud NAT 网关,请使用过滤条件字段。
在分组依据部分中,针对标签,选择 instance_id。
在分组函数列表中,选择 Max。
展开更多选项,然后将校准器字段设置为最大值。
如需查看过去 30 天的用量,请指定
30d
。
如需详细了解如何使用 Metrics Explorer,请参阅使用 Metrics Explorer 时选择指标。
选择每个虚拟机的端口数下限
选择适当的端口数下限有很重要,这可帮助您最大限度地提高 NAT IP 地址用量。
在增加每个虚拟机的端口数之前,请考虑其他减少端口用量的策略。
如果您需要增加每个虚拟机的端口数,请先考虑网关中每个虚拟机的端口用量。如需了解如何查找此数据,请参阅查看端口用量。
查看过去 30 天或您认为代表 Cloud NAT 网关的其他时间段的端口用量上限。
执行下列其中一项操作:
如果您使用的是静态端口分配,请配置每个虚拟机的端口数,以使最小值等于当前的峰值端口用量。
如果您使用的是动态端口分配,请配置每个虚拟机的端口数,使最小值低于峰值端口用量,且最大值高于峰值端口用量。
更改按虚拟机分配的默认端口数下限
如需有关确定如何配置每个虚拟机的端口数下限的帮助,请参阅选择每个虚拟机的端口数下限。
如需了解更改端口数下限分配的结果,请参阅以下部分:
如果您的 Cloud NAT 网关已配置动态端口分配,请参阅配置动态端口分配时更改最小或最大端口数。
控制台
在 Google Cloud 控制台中,转到 Cloud NAT 页面。
点击您的 Cloud NAT 网关。
点击
修改。点击高级配置。
修改每个虚拟机实例的端口数下限字段。
点击保存。
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 网关配置与该端口分配类型兼容。如果配置不兼容,则更改将会失败。
对于动态端口分配,请检查端点独立映射是否已停用。
检查每个虚拟机实例的端口数下限为 2 的幂,并且介于 32 和 32768 之间。
控制台
在 Google Cloud 控制台中,转到 Cloud NAT 页面。
点击您的 Cloud NAT 网关。
点击
修改。点击高级配置。
选择或取消选择启用动态端口分配。
如果需要,请调整每个虚拟机实例的端口数下限和每个虚拟机实例的端口数上限的值。
点击保存。
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
的幂,并且可以介于32
和32768
之间。MAX_PORTS
:为每个虚拟机分配的端口数上限。MAX_PORTS
必须是2
的幂,并且可以介于64
和65536
之间。MAX_PORTS
必须大于MIN_PORTS
。默认值为65536
。
配置动态端口分配时更改最小或最大端口数
配置动态端口分配后,您可以更改每个虚拟机分配的端口数下限或上限。
如需有关确定如何配置每个虚拟机的端口数下限的帮助,请参阅选择每个虚拟机的端口数下限。
如需了解更改端口数下限分配的结果,请参阅以下部分:
控制台
在 Google Cloud 控制台中,转到 Cloud NAT 页面。
点击您的 Cloud NAT 网关。
点击
修改。点击高级配置。
调整每个虚拟机实例的端口数下限和每个虚拟机实例的端口数上限字段。
点击保存。
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
的幂,并且可以介于32
和32768
之间。MAX_PORTS
:为每个虚拟机分配的端口数上限。MAX_PORTS
必须是2
的幂,并且可以介于64
和65536
之间。MAX_PORTS
必须大于MIN_PORTS
。
修改 NAT 超时
以下部分介绍了 NAT 超时以及如何修改 NAT 超时:
NAT 超时
Cloud NAT 针对协议连接使用以下超时。除非另有说明,否则这些超时设置同时适用于 Public NAT 和 Private 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 连接在到期后保留在 Cloud NAT 映射中的秒数。 TCP TIME_WAIT 超时可保护内部端点,使其不会接收属于已关闭 TCP 连接并重新发送的无效数据包。 您可以减少超时值以改善 Cloud NAT 端口的重复使用,但代价是可能会接收来自已关闭的不相关连接的重新传输的数据包。 |
120 秒 注意:无论您为此超时设置的值如何,Cloud NAT 可能还需要 30 秒才能使用 Cloud NAT 来源 IP 地址和来源端口元组处理新连接。如果您使用的是动态端口分配,请将此超时设置为 30 秒或更长时间,以避免丢包。 |
是 |
ICMP 映射空闲超时 RFC 5508 REQ-2 |
指定多少秒以后关闭没有任何流量的互联网控制消息协议 (ICMP) Cloud NAT 映射。 ICMP 映射空闲超时影响端点的情况:端点的响应时间比指定的时间长或网络延迟增加。 |
30 秒 | 是 |
更改 NAT 超时
控制台
在 Google Cloud 控制台中,转到 Cloud NAT 页面。
点击您的 Cloud NAT 网关。
点击
修改。点击高级配置。
修改您要更改的所有超时值。
点击保存。
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 超时重置为默认值
控制台
在 Google Cloud 控制台中,转到 Cloud NAT 页面。
点击您的 Cloud NAT 网关。
点击
修改。点击高级配置。
移除您要重置的任何用户配置的值。
点击保存。
已移除的值会重置为默认值。
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 超时设置 | 否 |
停用动态端口分配 | 是 |
后续步骤
- 为 Cloud NAT 配置日志记录和监控。
- 排查 NAT 配置的常见问题。