当前位置:首页 > 问答 > 正文

Redis怎么快速查绑定IP,顺便拿到节点信息小技巧分享

有朋友在后台问,说他们用的Redis,有时候需要查一下现在这个Redis实例到底绑定了哪些IP地址,顺便还想看看这个节点的其他一些基本信息,这个需求其实挺常见的,比如做安全审计、网络排查或者单纯就是想了解一下现状,我自己也经常遇到,所以这里就把我知道的几个直接有效的小技巧分享一下,不用记太多复杂命令,也不用深究那些晦涩的配置。

第一招:最直接的办法,问Redis它自己——用INFO命令

这个是最简单、最应该首先尝试的方法,Redis提供了一个万能的INFO命令,就像问一个人“你的基本情况怎么样?”它会给你回复一大堆信息,我们只需要从这里面把关于网络和服务器的部分挑出来就行。

具体操作就是,用你的Redis客户端(比如命令行工具redis-cli)连上Redis服务器,然后输入命令:INFO SERVER,回车之后,你会看到一长串信息,别慌,我们只找我们关心的,这里面有两个关键行:

  1. tcp_port:6379 这一行告诉你Redis服务监听在哪个端口上,通常默认是6379。
  2. 寻找与bindinterface相关的行,INFO命令的输出可能不会直接显示配置文件中那个原始的bind配置项,更可靠的是看它实际监听的地址,你可以仔细浏览输出,寻找类似 listen_addresses 或者直接看它表示的监听接口的信息,但有时候这里显示的不够直观。

一个更精准的子命令是 INFO REPLICATION,如果你这个Redis是主节点,这一部分信息里通常会有一行叫 master_host:,如果是哨兵或者集群模式,也会有类似的信息,这能告诉你它对外宣称的地址是什么,但这个更多是用于复制的地址,不一定是绑定的所有IP。

INFO命令是个很好的起点,能拿到很多周边信息,比如Redis版本、运行天数、内存使用情况等,这些都属于“节点信息小技巧”的一部分,但如果你想要最精确的绑定IP列表,可能还得看下一招。

(信息来源:基于Redis官方文档对INFO命令的描述和实际操作经验)

第二招:直捣黄龙,看Redis的配置文件

这是最准确无误的方法,Redis的所有行为,包括绑定哪个IP,都是由它的配置文件(通常是redis.conf)决定的,只要你能找到这个文件并且有读取权限,答案就在里面。

怎么找这个配置文件呢?有几个线索:

  • 常规位置:Linux系统上,它可能在 /etc/redis/redis.conf 或者 /etc/redis.conf,如果你是用包管理工具(比如apt或yum)安装的,大概率就在这。
  • 问Redis进程:如果找不到文件,可以问问Redis进程自己,使用命令 ps -ef | grep redis,在输出的结果里,找一行包含redis-server的命令,看后面是不是跟着一个以.conf结尾的文件路径,比如看到 redis-server /path/to/your/redis.conf,那这个/path/to/your/redis.conf就是我们要找的配置文件。
  • 通过客户端查询:在Redis客户端里,可以用 CONFIG GET dir 获取工作目录,有时候配置文件就在这个目录的同级或父级目录,更直接的是用 CONFIG GET requirepass 这类命令试试,如果能返回配置,说明可以通过CONFIG命令获取,但安全起见,生产环境可能禁用了。

找到配置文件后,用文本编辑器(如vim、nano)或者cat命令打开它,然后搜索bind这个关键字,你会看到类似这样的一行:

bind 127.0.0.1 192.168.1.100

或者

bind 0.0.0.0

这一行配置的意思非常明确:

  • bind 127.0.0.1 表示只允许本机连接。
  • bind 127.0.0.1 192.168.1.100 表示允许本机和内网IP168.1.100连接。
  • bind 0.0.0.0 这是一个比较常见的配置,表示绑定在所有网络接口上,允许任何IP地址来连接(当然还会受防火墙限制),从外部访问通常需要这个设置。

通过看配置文件,你不仅能100%确定绑定了哪些IP,还能看到端口号、密码、持久化策略等一系列重要的节点信息,这招是最根本的。

(信息来源:Redis官方配置文件redis.conf的注释和说明)

第三招:系统工具辅助,看网络连接

如果上面两招因为权限问题用不了,或者你想从系统层面验证一下Redis到底在监听什么,可以用操作系统自带的网络工具。

在Linux上,最常用的就是netstat命令或者它的升级版ss命令,它们能列出当前系统上所有网络连接和监听端口的信息。

你可以尝试这个命令:sudo netstat -tulnp | grep redis 或者 sudo ss -tulnp | grep redis

  • -t 表示TCP协议。
  • -u 表示UDP协议(Redis通常用TCP)。
  • -l 表示只显示监听状态的端口。
  • -n 表示用数字显示地址和端口(不解析成主机名和服务名)。
  • -p 表示显示占用该端口的进程名称(需要sudo权限)。

执行后,你可能会看到这样一行输出:

tcp    0    0 0.0.0.0:6379    0.0.0.0:*    LISTEN    1234/redis-server

或者

tcp    0    0 127.0.0.1:6379    0.0.0.0:*    LISTEN    1234/redis-server

关键看第三列 0.0.0:6379 还是 0.0.1:6379

  • 0.0.0:6379 表示Redis正在所有可用的IP地址上监听6379端口。
  • 0.0.1:6379 表示Redis只在本机回环地址上监听6379端口。

这个方法是从系统网络层看到的实际情况,也是一个非常有力的证据。

(信息来源:Linux man手册对netstat和ss命令的说明)

小技巧总结

简单总结一下:

  1. 初步探查:先用INFO SERVERINFO REPLICATION命令,快速了解概况,顺带拿到进程ID、版本号等一堆有用信息。
  2. 精准定位:要确切的绑定IP列表,直接去读redis.conf配置文件里的bind指令,这是黄金标准。
  3. 系统验证:用netstatss命令从系统层面看一眼,确认监听状态,还能排除防火墙等其他网络问题。

这几个方法结合起来用,基本上就能把Redis的IP绑定情况和节点信息摸得清清楚楚了,希望这点小分享能帮到你。

Redis怎么快速查绑定IP,顺便拿到节点信息小技巧分享