公网NAT网关配置完成后,网络不通如何处理?
问题描述
您创建了一个公网NAT网关,并按照步骤配置了SNAT、DNAT规则,但是您的云主机不能访问互联网或不能为互联网提供服务。配置了公网NAT网关的网络是否可以连通互联网与路由表配置、安全组配置、网络ACL配置等多个环节相关联。任意一个环节出现问题,都会导致网络不通。本节操作介绍公网NAT网关配置完成后,网络不通时的排查思路。
排查思路
以下排查思路根据原因的出现概率进行排序,建议您从高频率原因往低频率原因排查,从而帮助您快速找到问题的原因。
如果解决完某个可能原因仍未解决问题,请继续排查其他可能原因。
 
  | 可能原因 | 处理措施 | 
|---|---|
| 路由表配置不正确 | 请在路由表中添加指向公网NAT网关的默认路由或路由,详细操作请参考检查路由表是否配置指向公网NAT网关网关的默认路由。 | 
| 弹性云服务器绑定了弹性公网IP | 请为弹性云服务器解绑弹性公网IP,详细操作请参考检查弹性云服务器是否绑定了弹性公网IP。 | 
| 安全组规则未放通 | 请放通弹性云服务器对应的安全组规则,详细操作请参考检查安全组规则。 | 
| 网络ACL配置不正确 | 请配置网络ACL规则放通子网流量,详细操作请参考检查网络ACL是否放通子网流量。 | 
| 弹性IP的带宽超限 | 请扩大EIP带宽,详细操作请参考检查弹性公网IP的带宽是否超限。 | 
| 公网NAT网关业务量超过规格上限 | 请提升公网NAT网关规格,详细操作请参考检查公网NAT网关业务量是否超过规格上限。 | 
| 公网NAT网关的状态异常 | 请确保公网NAT网关资源状态为“运行中”,详细操作请参考检查公网NAT网关状态是否异常。 | 
| 弹性云服务器端口未监听 | 请重新开启弹性云服务器端口,详细操作请参考检查弹性云服务器端口。 | 
检查路由表是否配置指向公网NAT网关网关的默认路由
- 登录管理控制台。
- 在管理控制台左上角单击 ,选择区域和项目。 ,选择区域和项目。
- 在系统首页,选择“网络 > 虚拟私有云”。
- 在左侧导航栏选择“路由表”。
- 在路由表列表中,单击公网NAT网关所在VPC的路由表名称。
- 检查路由列表中是否存在指向公网NAT网关的默认路由(0.0.0.0/0)。
    - 如果未存在默认路由,请在路由表中添加指向公网NAT网关的默认路由。
      - 单击“添加路由”,按照提示配置参数。 
        表2 参数说明 参数 参数说明 目的地址 目的地址网段。 配置为0.0.0.0/0。 下一跳类型 下一跳资源类型选择“NAT网关”。 下一跳 下一跳资源选择创建的公网NAT网关。 描述 路由的描述信息,非必填项。 描述信息内容不能超过255个字符,且不能包含“<”和“>”。 
- 单击“确定”,完成添加。
 
- 单击“添加路由”,按照提示配置参数。 
        
- 如果存在默认路由,但是未指向公网NAT网关,请在路由表中添加指向公网NAT网关的路由或者新增路由表并添加指向公网NAT网关的默认路由。
      - 路由表中添加指向公网NAT网关的路由详细步骤:
        - 单击“添加路由”,按照提示配置参数。 
          表3 参数说明 参数 参数说明 目的地址 目的地址网段。 下一跳类型 下一跳资源类型选择“NAT网关”。 下一跳 下一跳资源选择创建的公网NAT网关。 描述 路由的描述信息,非必填项。 描述信息内容不能超过255个字符,且不能包含“<”和“>”。 
- 单击“确定”,完成添加。
 
- 单击“添加路由”,按照提示配置参数。 
          
- 新增路由表并添加指向公网NAT网关的默认路由:
        - 在路由表列表页面右上角,单击“创建路由表”,按照提示配置参数。 
          表4 参数说明 参数 说明 取值样例 路由表名称 路由表的名称,必填项。 路由表的名称只能由中文、英文字母、数字、“_”、“-”和“.”组成,且不能有空格,长度不能大于64个字符。 rtb-001 所属VPC 选择路由表归属的VPC,必填项。 vpc-001 描述 路由表的描述信息,非必填项。 描述信息内容不能超过255个字符,且不能包含“<”和“>”。 - 添加路由 路由规则信息。 路由规则可以在此处添加,单击“继续添加”。 添加目的地址为“0.0.0.0/0”,下一跳资源类型选择“NAT网关”,下一跳资源选择创建的公网NAT网关。 - 
- 单击“确定”,完成创建。
- 单击“关联子网”,进入路由表详情页面的“关联子网”页签。
- 单击“关联子网”,选择需要关联的子网。
- 单击“确定”,完成关联。
 
- 在路由表列表页面右上角,单击“创建路由表”,按照提示配置参数。 
          
 
- 路由表中添加指向公网NAT网关的路由详细步骤:
        
 
- 如果未存在默认路由,请在路由表中添加指向公网NAT网关的默认路由。
      
检查弹性云服务器是否绑定了弹性IP
当同一个弹性云服务器同时设置了SNAT和弹性IP时,会优先使用弹性IP进行转发。
当同一个弹性云服务器同时设置了DNAT和弹性IP时,入云方向的弹性IP取决于客户端用户的自主选择(DNAT规则绑定的弹性IP或ECS直接绑定的弹性IP),而出云方向优先使用弹性云服务器直接绑定的弹性IP,所以如果入云和出云使用的弹性IP不一致,流量会不通。
如果弹性云服务器绑定了弹性IP,请为弹性云服务器解绑弹性IP。
- 登录管理控制台。
- 在管理控制台左上角单击 ,选择区域和项目。 ,选择区域和项目。
- 选择“计算 > 弹性云服务器”。
- 在弹性云服务器列表,查看“IP地址”列,检查弹性云服务器是否绑定了弹性IP。
    - 如果弹性云服务器未绑定弹性IP,请检查下一项。
- 如果弹性云服务器绑定了弹性IP,请为弹性云服务器解绑弹性IP。
      为弹性云服务器解绑弹性IP详情请参见《虚拟私有云用户指南》中的“解绑定和释放弹性云服务器的弹性IP”章节。 
 
检查安全组规则
- 登录管理控制台。
- 在管理控制台左上角单击 ,选择区域和项目。 ,选择区域和项目。
- 选择“计算 > 弹性云服务器”。
- 在弹性云服务器列表,单击待检查安全组规则的弹性云服务器名称。
- 选择“安全组”页签,展开安全组规则。
- 检查入方向规则和出方向规则是否已经配置放行弹性云服务器使用端口的规则。
     - 如果已配置放行弹性云服务器使用端口规则,请检查下一项。
- 如果未配置放行弹性云服务器使用端口的规则,请单击“配置规则”,进入安全组详情页。
       在安全组详情页,单击“入方向规则”或“出方向规则”,分别根据弹性云服务器使用的端口添加入方向规则或出方向规则。入方向和出方向规则参数详情请参见《虚拟私有云用户指南》中的“添加安全组规则”章节。 
 
检查网络ACL是否放通子网流量
检查VPC的子网是否关联了网络ACL,如果关联了网络ACL,请检查“ 网络ACL”规则。
- 登录管理控制台。
- 在管理控制台左上角单击 ,选择区域和项目。 ,选择区域和项目。
- 在系统首页,选择“网络 > 虚拟私有云”。
- 在左侧导航栏选择“子网”。
- 查看NAT网关对应的子网是否关联了网络ACL。
    显示具体的网络ACL名称说明已关联网络ACL。 
- 单击网络ACL名称查看网络ACL的详细信息。
- 检查入方向规则和出方向规则是否添加了放通子网流量的规则。
    如果未添加放通子网流量的规则,请添加入方向、出方向规则放通子网流量或者将网络ACL与子网取消关联。 详情请参见《虚拟私有云用户指南》中的“添加网络ACL”章节和《虚拟私有云用户指南》中的“解除关联子网”章节。  需要注意“网络ACL”的默认规则是丢弃所有出入方向的包,若关闭“网络ACL”后,其默认规则仍然生效。 
检查公网NAT网关业务量是否超过规格上限
- 登录管理控制台。
- 在管理控制台左上角单击 ,选择区域和项目。 ,选择区域和项目。
- 选择“管理与监管 > 云监控服务”。
- 单击页面左侧的“云服务监控”,选择“NAT网关”。
- 单击“操作”列的“查看监控指标”,查看公网NAT网关的监控指标详情。
- 检查公网NAT网关SNAT连接数是否超过NAT网关规格上限。
    - 如果SNAT连接数未超过公网NAT网关规格上限,请检查下一项。
- 如果SNAT连接数超过公网NAT网关规格上限,请提升公网NAT网关规格。
      提升公网NAT网关规格请参见《NAT网关用户指南》中的“修改NAT网关”章节。 
 
检查公网NAT网关状态是否异常
- 登录管理控制台。
- 在管理控制台左上角单击 ,选择区域和项目。 ,选择区域和项目。
- 选择“网络 > NAT网关”。
- 在公网NAT网关列表,检查公网NAT网关状态是否异常。
    - 如果公网NAT网关状态为“运行中”,请检查下一项。
- 如果公网NAT网关状态不是“运行中”,主要有以下情况:
      - 因使用云平台资源违反了相关安全要求或法律法规,导致您的账号账号或资源被冻结。如果您在整改期限内完成整改并达到相关安全和法律要求,那么就可以解冻您的账号和资源;如果您在整改期限内未完成整改,那么将删除您的资源。
 
 
检查弹性云服务器端口
确保弹性云服务器端口正常工作,处于LISTEN状态。表5为常见TCP状态。
- Linux操作系统云服务器端口通信问题排查
    使用netstat -antp命令检查服务的状态,确认端口是否正常监听。 例如:netstat -ntulp |grep 80图2 查看端口监听状态_linux  如果端口没有被正常监听,请重新开启弹性云服务器端口。 
- Windows操作系统云服务器端口通信问题排查
    
    - 打开CMD命令行窗口。
- 执行netstat -ano | findstr “PID”命令查看进程使用的端口号。
      例如:netstat -ano | findstr “80”图3 查看端口监听状态_windows  如果端口没有被正常监听,请重新开启弹性云服务器端口。 
 
| TCP状态 | 说明 | 对应场景 | 
|---|---|---|
| LISTEN | 侦听来自远方的TCP端口的连接请求 | 正常TCP服务端 | 
| ESTABLISHED | 代表一个打开的连接 | 正常TCP连接 | 
| TIME-WAIT | 等待足够的时间以确保远程TCP接收到连接中断请求的确认 | 已关闭的TCP连接,一般1分钟后清除。 | 
| CLOSE-WAIT | 等待从本地用户发来的连接中断请求 | 应用程序BUG,没有关闭socket。出现在网络中断后。一般是进程死循环或等待其他条件。可以重启对应进程。 | 
| FIN-WAIT-2 | 从远程TCP等待连接中断请求 | 网络中断过,需要12分钟左右自行恢复。 | 
| SYN-SENT | 再发送连接请求后等待匹配的连接请求 | TCP连接请求失败。一般是服务端CPU占用率过高,处理不及时导致。DDos攻击也会出现此情况。 | 
| FIN-WAIT-1 | 等待远程TCP连接中断请求,或先前的连接中断请求的确认 | 网络中断过,此状态可能不会自行修复(等15分钟以上确认),如果长期占用端口需要重启OS恢复。 | 
 
    