本地设备通过公网无法连接Redis的常见问题排查

本地设备无法通过公网远程连接Redis的原因可能是使用了错误的连接地址,未将本地设备的公网IP添加到Redis白名单,未使用正确的账号密码等。本文介绍本地设备通过公网连接Redis的常见问题与解决办法。

本地设备公网连接问题排查流程图

image

步骤一:报错信息是否为invalid passwordWRONGPASSNOAUTH Authentication required

如果报错信息为connection timed out或者无明确的报错信息,请跳过步骤一,直接查看步骤二。

报错说明

报错信息为invalid passwordWRONGPASS invalid username-password pair或者NOAUTH Authentication required,说明账号密码错误。

解决方法

  • 使用<user>:<password>格式的密码重新连接。例如自定义账号为testaccount,密码为Rp829dlwa,密码需填写为testaccount:Rp829dlwa

  • 如果使用<user>:<password>格式的密码重新连接,仍然提示密码错误,可能是密码记错了,请重置密码后使用新密码连接。重置密码,请参见修改或重置密码

步骤二:使用ping命令检测本地设备与Redis的网络是否连通

操作方法

在本地设备执行ping命令。

ping <host>

示例:ping r-bp1zx****.redis.rds.aliyuncs.com

结果说明

  • 如果Ping通(如下所示),说明网络连通,可参考步骤三继续排查。

    返回结果图示

    Linux

    Linux系统执行该命令后将会持续发送Ping请求,您可以按下键盘上的Ctrl+C键停止执行并统计结果,如下图。

    image

    Windows

    Windows系统会在4次Ping之后显示测试结果,如下图。

    image

  • 如果返回信息类似0 packets received,100.0% packet loss,说明网络未连通。

    请检查您使用的连接地址是否为实例的公网访问连接地址。

  • 如果返回信息类似Unknown hostName or service not known,说明地址解析出现问题。

    请检查您使用的连接地址是否有拼写错误。

常见原因

  • 使用了专有网络地址连接云数据库Redis实例。

    本地设备连接云数据库Redis实例,需要使用公网访问地址。

  • 连接地址拼写错误

    连接地址拼写错误或域名解析失败,导致无法解析出IP地址。

解决方法

  1. 云数据库Redis控制台实例信息页面连接信息区域,查看云数据库Redis实例的公网访问连接地址。复制公网访问的连接地址,重新执行ping命令。

    image

    重要
    • 如果控制台未显示公网访问的连接地址,请先申请连接地址。具体操作请参见申请公网连接地址

    • 云原生版集群架构直连模式实例不支持申请公网地址。

  2. 如果使用了公网访问连接地址且连接地址拼写正确,仍无法ping通,请检查是否域名解析失败,具体操作请参见解决因域名解析失败导致的连接问题

步骤三:使用telnet命令检测服务端口是否可用

操作方法

在本地设备执行telnet命令。

telnet <host> <port>

示例:telnet r-bp1zx****.redis.rds.aliyuncs.com 6379

结果说明

如果返回Connected to ...或显示telnet界面(如下所示),说明已建立连接。

重要

如果实例为经典实例,telnet成功后,依然需要检查白名单,在白名单中的IP才能访问数据库,排查白名单的步骤,请参见步骤四:检查白名单

返回结果图示

Linux

Linux系统telnet连接成功显示界面。

image

Windows

Window系统telnet连接成功显示界面。

image

如果显示Connection timed out或Connect failed,表示连接失败。

常见原因和解决方法

白名单配置错误或未配置白名单。具体请参见步骤四:检查白名单

步骤四:检查白名单

白名单错误或未配置白名单是连接失败的常见原因。如果出现以下两种现象,建议您排查白名单。

  • 域名可以ping通,但telnet失败。

  • 如果您在本地设备使用redis-cli连接Redis公网地址,报错(error) ERR illegal address(error) ERR client ip is not in whitelist

常见原因

  • 白名单配置错误,即未将本地设备的公网IP配置到白名单中。

  • 未配置白名单。

解决方法

  1. 查询本地设备的公网IP。

    • Linux操作系统:打开终端,输入curl ifconfig.me命令后回车。

    • Windows操作系统:打开命令提示符,输入curl ip.me命令后回车。

    • macOS操作系统:打开终端,输入curl ifconfig.me命令后回车。

  2. 将查到的公网IP添加到Redis白名单中。具体操作请参见设置白名单