本文总结使用过程中的常见问题,帮助定位、排查并解决相关问题。
使用与配置
实例配置
为什么某些可用区无法购买NAT网关?
由于资源建设原因,NAT网关在某些可用区尚未部署。可以调用ListEnhanhcedNatGatewayAvailableZones查询支持创建NAT网关的可用区。
虽然某些可用区无法创建,但可以在任意已部署NAT网关的可用区创建NAT网关,从而为整个VPC内任意可用区的实例或资源提供公网访问服务。
NAT网关实例是否支持切换所属交换机和私网IP地址?
不支持。如需变更部署的交换机,只能创建新的NAT网关并修改路由条目。
NAT网关是否支持处理分片数据包?
支持处理TCP、UDP以及ICMP分片数据包。
NAT 网关是否可以脱离 VPC 单独使用?
不可以,NAT 网关无法脱离 VPC 单独部署。创建公网 NAT 网关或 VPC NAT 网关时,均需指定所属的 VPC。NAT 网关通过与 VPC 内的交换机、ECS 实例等资源协同,为 VPC 内的资源提供地址转换服务。
SNAT 配置
当多条SNAT条目的源网段重叠时,如何匹配SNAT条目的优先级?
系统会根据最长掩码匹配规则确定优先为哪一条SNAT条目提供互联网代理服务。
ECS粒度的SNAT条目:源网段的子网掩码为
/32,长度最长,优先级最高,优先匹配。其他粒度的SNAT条目:根据源网段的子网掩码长度进行匹配,长度越长,优先级越高,越先匹配。
NAT网关的SNAT连接空闲超时时间是多少?
TCP协议:900秒。
UDP协议:60秒。
ECS实例可以通过公网NAT实例中的SNAT访问同一个NAT实例上的DNAT服务吗?
NAT网关切换至NAT模式后,当公网NAT网关实例上同时创建了SNAT和DNAT,该公网NAT网关实例支持通过SNAT能力去访问同公网NAT网关实例内的DNAT服务。
如何确认NAT网关是否为NAT模式?
调用DescribeNatGateways查询
EipBindMode字段返回NAT,则为NAT模式。如何切换至NAT模式?
调用ModifyNatGatewayAttribute
EipBindMode字段传入NAT。
ECS 实例通过SNAT访问公网时,出口带宽由什么决定?
ECS 实例通过 SNAT 访问公网时,访问公网的出口带宽由 NAT 网关绑定的EIP带宽决定,不受 ECS 实例自身公网带宽的限制。例如,当ECS实例的公网带宽为1 Mbps,而 NAT 网关绑定的EIP带宽为100 Mbps时,ECS 通过 SNAT 访问公网的最大带宽可达100 Mbps。
ECS 公网带宽仅影响 ECS 实例通过自身公网 IP 直接访问公网的场景,不影响 SNAT 出口带宽。当多台 ECS 通过同一 SNAT 条目共享同一 EIP 时,所有 ECS 共享该 EIP 的带宽,单台 ECS 的可用带宽会因其他ECS的流量而减少。
DNAT 配置
如果ECS实例绑定了EIP,是否支持为该ECS实例创建DNAT条目?
支持,但是外部用户无法通过此条目访问该ECS实例。如需通过DNAT条目访问该ECS实例,需要先解绑ECS实例的EIP。
DNAT是否支持基于域名的请求分发?
不支持。DNAT 仅对IP地址和端口进行目的地址转换,将公网IP和端口映射到私网IP和端口。DNAT不解析应用层报文,无法识别域名、HTTP Host头或TLS SNI信息,因此无法实现基于域名的请求分发。
如需基于域名的请求分发,建议使用以下方案:
使用阿里云应用型负载均衡ALB。ALB工作在应用层,支持基于域名和路径的转发规则,并提供HTTPS证书的SNI多域名托管能力,适合HTTP/HTTPS服务的七层分发。
在ECS实例上自建Nginx等反向代理服务,根据域名进行请求分发。
通过 DNAT 提供服务与 ECS 直绑 EIP 的区别
两者核心区别如下:
维度 | 通过 DNAT 提供服务 | ECS 直绑 EIP |
流量路径 | 入向流量经 NAT 网关,ECS 不直接持有公网 IP。 | EIP 直接绑定 ECS,入向流量直达 ECS。 |
端口控制 | 可仅暴露指定端口,端口级精细控制。 | 暴露所有安全组放行的端口。 |
EIP 用量 | 多台 ECS 可通过端口复用共享同一 EIP,节省 EIP 用量 | 每台 ECS 需独立 EIP,EIP数量 |
适用场景 | 多台 ECS 共享公网入口,需端口级控制。 | 单台 ECS 独立对外提供服务。 |
同一 ECS 实例无法同时使用两种方案,ECS 绑定 EIP 后 DNAT 条目不生效,需先解绑 EIP。
EIP 配置
创建NAT条目时,为什么在公网IP地址列表中找不到已创建的EIP?
创建的EIP和NAT网关不在同一地域。请选择与NAT网关同一地域下的EIP,或在NAT网关地域重新创建EIP。
NAT网关可以将一个EIP或NAT IP同时用于DNAT和SNAT条目吗?
可以。但是当DNAT条目粒度为任意端口时,该EIP或NAT IP将无法再用于创建其他DNAT或SNAT条目。当DNAT条目粒度为具体端口时,如果端口号大于1024, 则可能会和SNAT端口冲突, 可能会有闪断。
公网NAT网关绑定EIP的两种模式有什么区别?
通过控制台创建的公网NAT网关默认为NAT模式,多EIP网卡可见模式仅可通过调用CreateNatGateway并指定EipBindMode创建。
如需结合 IPv4 网关使用,必须使用NAT模式。
如需更高的EIP管理灵活性,可以选择多EIP网卡可见模式。
绑定模式 | NAT模式 | 多EIP网卡可见模式 |
切换绑定模式 | 不支持切换至多EIP网卡可见模式。 |
说明
|
在扩充公网NAT网关的EIP时,是否会消耗NAT网关所在交换机内的可用IP地址 |
|
|
是否支持IPv4网关 | 支持开启。 | 不支持开启。 |
ECS实例是否可以通过公网NAT实例中的SNAT访问同一NAT实例上的DNAT服务 | 可以访问。 | 无法访问。 |
创建方式 |
| 调用CreateNatGateway指定 |
网络连通性排查
无法通过SNAT访问公网
检查指向NAT的默认路由配置:
在公网 NAT 网关实例详情页查看指向NAT的专有网络路由信息,确认是否有指向该公网NAT网关的路由条目。如缺失,需在相关路由表配置目标网段为
0.0.0.0/0的路由指向该公网NAT网关。验证SNAT规则配置:
在公网 NAT 网关实例详情页的SNAT管理页签,确认SNAT条目的状态为可用。
确认访问公网的源地址在源网段内。
排查非NAT问题:
跨境访问:访问线路不稳定。
域名访问:检查域名备案解析是否正常。
访问控制:检查访问对端是否配置了访问控制策略或将实例绑定的EIP加入了白名单。
检查是否配置IPv4网关:与 IPv4 网关结合使用时,确保NAT网关为NAT模式,并正确配置路由。
新建ECS无法通过SNAT访问公网
当VPC内新建交换机的ECS实例无法通过SNAT访问公网,而其他交换机下的ECS实例可以正常访问时:
确认 SNAT 条目中是否包含新建的交换机的网段:
NAT 网关不会为新建的交换机配置SNAT条目,需在实例详情页的SNAT管理页签检查已有SNAT条目的源网段是否包含新建交换机的网段。如果未包含,需手动配置SNAT条目。
如果新建交换机绑定了自定义路由表,确认是否配置目标网段为
0.0.0.0/0,下一跳为NAT网关的路由条目,可手动添加对应的路由条目。
多个NAT网关共存时某个ECS无法访问公网
该 VPC 仅使用系统路由表,且只有一条目标网段为0.0.0.0/0的路由条目指向其中一个NAT网关,当该NAT网关的SNAT条目的源网段不包含某交换机的网段时,该交换机下的ECS实例无法访问公网。
如果无需使用多个NAT网关,建议删除无需使用的NAT网关,并为保留的NAT网关增加SNAT条目,覆盖交换机的网段。
如果需要使用多个NAT网关,可参考单可用区公网 NAT 网关高可用部署配置。
使用SNAT访问FTP服务端访问失败
可能原因如下:
FTP模式为主动模式:配置SNAT条目的NAT网关仅支持主动出向访问,FTP主动模式下数据连接的建立将因SNAT无法支持主动入向而导致失败。需使用FTP被动模式连接FTP服务器。
SNAT条目选择了多个EIP:FTP控制连接和数据连接在SNAT后可能使用了不同的EIP,导致FTP无法正常交互。需开启SNAT规则的EIP亲和性能力,确保来自同一客户端的连接始终使用相同的EIP。也可以为FTP客户端设置独立的SNAT规则,并绑定单一EIP。
配置DNAT条目后无法被公网访问
检查指向NAT的默认路由配置:
DNAT条目中配置的实例被访问后回复响应报文时,也需要有去往NAT网关的路由。需确认使用的系统路由表或自定义路由表中是否配置目标网段为
0.0.0.0/0的路由指向该NAT网关,可手动添加对应的路由条目。验证DNAT规则配置:
在公网 NAT 网关实例详情页的DNAT管理页签,确认DNAT条目的状态为可用。
确认DNAT规则配置的端口、协议、目标地址等参数正确。
检查安全组、防火墙配置和服务端口开启状态:
在同VPC内的其他ECS实例执行
telnet <ECS实例私网IP地址> <私网端口>命令,确认DNAT条目中配置的ECS实例的私网端口是否可被访问。如果回显
unable connect to remote host: Connection timed out,则私网端口不可被私网访问,则也不可被公网访问。如果回显
Connected to <ECS实例私网IP地址>,则私网端口可被访问。
私网端口可被访问时,需确认ECS实例的安全组规则是否允许公网访问对应端口,以及防火墙是否开放对应端口。
排查域名解析问题:如果通过域名访问不通,但通过EIP可以直接访问,检查域名解析设置和备案状态。
检查是否配置IPv4网关:与 IPv4 网关结合使用时,确保NAT网关为NAT模式,并正确配置路由。
验证网卡一致性:当ECS有多个网卡时,需检查数据的入网卡和出网卡是否一致,可参考统一公网出口IP进行配置。
与 IPv4 网关结合使用
IPv4网关与NAT网关的区别
IPv4 网关和公网 NAT 网关可结合使用。参考公网访问,详细了解相关网络组件之间的关系。
网络组件 | IPv4网关 | 公网NAT网关 |
功能定位 | VPC边界上的公网IPv4流量控制组件 | VPC内部的网络地址转换设备 |
使用场景 | 集中控制公网访问流量 | 统一公网流量出口 |
是否提供公网访问能力 | 不提供,仅控制公网流量 | 通过绑定EIP提供公网访问能力 (公网访问能力是由EIP提供的,NAT网关本身不提供公网访问能力) |
创建 IPv4 网关后,交换机可区分为:
公有交换机:绑定的路由表中存在目标网段为
0.0.0.0/0,下一跳为IPv4网关的路由,其中的资源绑定公网IP即可访问公网。私有交换机:绑定的路由表中不存在指向IPv4网关的路由,其中的资源绑定公网IP后无法直接访问公网。
结合公网NAT网关使用时,需要将公网NAT网关部署在公有交换机,部署在私有交换机的ECS实例配置路由指向公网NAT网关,将访问公网的流量路由至公网NAT网关,再使用公网NAT网关绑定的公网IP访问公网。需注意:
确保公网NAT网关的
EipBindMode为NAT模式,兼容IPv4网关。控制台创建的公网NAT网关默认为
NAT模式,调用CreateNatGateway创建时,EipBindMode需传入NAT。创建完成后,可以调用ModifyNatGatewayAttribute调整EipBindMode。如果已创建
EipBindMode为MULTI_BINDED模式的公网NAT网关,由于不兼容IPv4网关,将无法创建IPv4网关。如果已创建IPv4网关,调用CreateNatGateway创建
EipBindMode为MULTI_BINDED模式的公网NAT网关,将无法绑定EIP。
为避免激活IPv4网关后私有交换机中的资源无法访问公网,确保在激活IPv4网关前完成路由配置。
切换公网NAT网关为NAT模式的影响
切换后,公网 NAT 网关可以和 IPv4 网关结合使用。当实例同时创建SNAT和DNAT时,支持通过SNAT能力去访问同公网NAT网关实例内的DNAT服务。
计费影响:切换过程免费,不会产生额外费用。
业务影响:切换过程中网络连接会出现秒级闪断,闪断次数与绑定的EIP数量有关。
配置影响:
不改变公网出口IP地址和原有的配置。
绑定一个EIP将占用NAT网关所在交换机的一个私网IP,需确保NAT网关所在交换机的私网IP充足。
切换后不支持关闭兼容IPv4网关模式。
性能与监控
客户端访问公网服务时连接超时、下载速度慢
流量数据监控
查看NAT网关绑定的弹性公网IP监控,检查是否存在超带宽限制丢包。如有,建议升级EIP的带宽。
ECS实例较多不便排查ECS实例的异常流量情况时,使用NAT网关流量监控来排查异常流量来源。
Linux内核优化
问题原因:如果存在多台Linux操作系统的ECS实例通过NAT网关并发访问Linux操作系统服务端,由于Linux操作系统内核实现的原因,可能存在TCP连接请求被Linux操作系统内核丢弃而导致连接超时或失败的情况。具体原因,可参考Linux内核协议栈丢弃SYN报文的主要场景剖析。
问题解决:建议关闭服务端
Linux net.ipv4.tcp_tw_recycle选项,或关闭客户端Linux net.ipv4.tcp_timestamps选项。
NAT网关端口分配失败丢失数的含义
含义:通过NAT网关访问目的地址时,由于并发连接数过高,导致分配的TCP或UDP端口失败,从而造成连接被丢弃的数量。
问题原因:单个EIP或NAT IP可提供SNAT分配的端口数量有限。当访问同一个目的地址的会话数量过多而配置的SNAT规则使用的EIP或NAT IP数量过少时,会造成端口分配失败。
问题解决:当端口分配失败丢失数持续增长时,增加SNAT规则中配置的EIP或NAT IP数量。
计费与配额
公网NAT网关实例计费类型转换
当前支持的计费类型:仅支持后付费按使用量计费。
已停止新购的计费类型:预付费包年包月计费、后付费按固定规格计费。
存量实例转换:
存量的后付费按固定规格和存量包年包月的NAT网关实例,可以转换为后付费按使用量计费。
按固定规格计费转换为按使用量付费不支持回退,请谨慎操作。
NAT 网关的费用突然增加
NAT 网关为按量付费产品,费用增加通常意味着通过 NAT 网关处理的流量增多。可通过以下方式排查:
NAT 网关资源包退订
NAT网关资源包支持五天未使用退订和非全额退订,具体请参见退订规则。
删除NAT网关后依旧出账
删除NAT网关实例后依旧收到账单,是由计费系统的延迟出账机制导致。收到的账单是针对实例删除前所产生的资源使用费用,可以在账单详情中查看具体的消费时间段,以确认费用的归属周期。
每个账号可创建的NAT网关数量
不针对阿里云账号限制创建NAT网关的数量。