IP白名单配置错误会导致数据库连接不成功,本文介绍如何排查IP白名单的问题。
如何判断IP白名单配置正确
您可以通过Telnet工具检查IP白名单配置是否正确。Telnet信息如下所示:
$telnet 11.xxx.xxx.22 4444
Trying 11.xxx.xxx.22...
Connected to 11.xxx.xxx.22.
Escape character is '^]'.
N
5.7.32-logc"B%0f7%0`I++'EVdWSB3mysql_native_password
^]
若客户端收到数据库服务返回的MySQL handshake报文信息,并且报文中显示了MySQL的版本号(如上述输出中的5.7.32),则IP白名单配置正确。否则,表示IP白名单未配置正确,您可以参考设置白名单中的内容来正确配置白名单。
IP白名单配置错误的排查方法
在连接数据库集群时,您可以首先验证是否能连接主地址。如果主地址无法连接,很可能是IP白名单的问题,您可以通过Telnet、tcpdump工具排查具体原因。
访问企业版集群公网VIP地址的白名单不正确
-
现象:用户访问企业版集群公网VIP地址,Telnet不通,现象如下所示:
[xxx /xxx/gitlab/aegis/src] $telnet 11.xxx.xxx.93 3306 Trying 11.xxx.xxx.93... -
如果在客户端抓包,会看到TCP三次握手的SYN报文一直在重传。
访问企业版集群的VPC地址或标准版集群的所有地址(公网和VPC)的白名单不正确
-
现象:用户访问企业版集群的VPC地址或标准版集群的所有地址(公网和VPC),Telnet通,但收不到数据库服务返回的MySQL handshake报文。
[xxx /u01/mysql80_current] $telnet 11.xxx.xxx.22 4444 Trying 11.xxx.xxx.22... Connected to 11.xxx.xxx.22. Escape character is '^]'. -
如果在客户端抓包,会看到TCP三次握手的第二个SYN + ACK报文和最后一个ACK报文一直在重新响应。
如何解决IP白名单问题
您可以先临时添加一个0.0.0.0/0的网段,尝试一下业务是否可以访问,如果可以访问说明是白名单配置问题。
然后,您需要正确地添加白名单,并把临时添加的0.0.0.0/0网段删除掉。设置白名单的方法请参见设置白名单。
该文章对您有帮助吗?