很多人配 Redis 都不理解 bind 的真正含义。
你这个服务器 IP 是:
10.26.200.82
我们直接对比:
一、bind 0.0.0.0 是什么意思?
bind 0.0.0.0
意思是:
监听本机所有网卡的所有 IP 地址
如果这台服务器有:
127.0.0.1
10.26.200.82
192.168.x.x
公网 IP
Redis 都会监听。
等价于:
监听所有入口
二、bind 10.26.200.82 是什么意思?
bind 10.26.200.82
意思是:
只监听这个 IP 的网络请求
Redis 只会接受发往:
10.26.200.82:6379
的连接。
三、核心区别
四、举个实际例子
假设服务器有两个 IP:
10.26.200.82 (内网)
8.8.8.8 (公网)
情况 1
bind 0.0.0.0
Redis 同时对:
10.26.200.82:6379
8.8.8.8:6379
开放。
如果公网没防火墙 → 危险 ⚠
情况 2
bind 10.26.200.82
Redis 只监听内网。
公网 IP 访问不了。
✔ 安全很多
五、金融/银行系统推荐写法
既然你是做银行系统的,建议:
bind 127.0.0.1 10.26.200.82
protected-mode yes
requirepass 强密码
意思:
本机可访问
内网可访问
公网不可访问
六、一个容易忽略的细节
如果你写:
bind 10.26.200.82
然后你在服务器本机执行:
redis-cli
可能会连不上。
因为 redis-cli 默认连:
127.0.0.1
而你没监听 127.0.0.1。
解决方式:
redis-cli -h 10.26.200.82
或者:
bind 127.0.0.1 10.26.200.82
七、底层原理(你会更清晰)
Redis 是通过 socket 绑定网卡的。
0.0.0.0 = INADDR_ANY(所有网卡)
指定 IP = 绑定到特定网络接口
这是 Linux 网络层的机制,不是 Redis 特有。
八、总结一句话
0.0.0.0 = 全开
指定IP = 精准开放
生产环境推荐指定IP
教你一个命令:
ss -lntp | grep 6379
可以直接看到 Redis 实际监听在哪些地址。
这个对排查线上问题非常有用。