文档首页/ NAT网关 NAT/ 常见问题/ SNAT规则/ 通过公网NAT网关访问远端服务器概率性失败该如何处理?
更新时间:2022-09-30 GMT+08:00

通过公网NAT网关访问远端服务器概率性失败该如何处理?

弹性云服务器通过SNAT访问公网上服务器,出现TCP建链失败的情况,可通过以下方法进行排查。

  1. 执行以下命令,查看远端服务器是否开启了“tcp_tw_recycle”。

    sysctl -a|grep tcp_tw_recycle

    tcp_tw_recycle取值为1时,表示开启。

  2. 执行以下命令,查看远端服务器内核丢包数量。

    cat /proc/net/netstat | awk '/TcpExt/ { print $21,$22 }'

    如果ListenDrops数值非0,表示存在丢包,即存在网络问题。

处理方法:

方法一:修改远端服务器的内核参数

  • 临时修改参数方法(重启远端服务器后该设置失效),设置如下:

    sysctl -w net.ipv4.tcp_tw_recycle=0

  • 永久修改参数方法:
    1. 执行以下命令,修改“/etc/sysctl.conf”文件。

      vi /etc/sysctl.conf

      在该文件中添加以下内容:

      net.ipv4.tcp_tw_recycle=0

    2. 按“Esc”输入“:wq!”,保存后退出文件。
    3. 执行以下命令,生效配置。

      sysctl -p

方法二:修改本地客户端的内核参数

  • 临时修改参数方法(重启本地客户端后该设置失效),设置如下:

    sysctl -w net.ipv4.tcp_timestamps=0

  • 永久修改参数方法:
    1. 执行以下命令,修改“/etc/sysctl.conf”文件。

      vi /etc/sysctl.conf

      在该文件中添加以下内容:

      net.ipv4.tcp_timestamps=0

    2. 按“Esc”输入“:wq!”,保存后退出文件。
    3. 执行以下命令,生效配置。

      sysctl -p