1. 检查并配置CentOS防火墙
CentOS使用firewalld而不是ufw:
bash
# 检查防火墙状态 sudo systemctl status firewalld # 如果防火墙运行,开放Redis端口 sudo firewall-cmd --permanent --add-port=6379/tcp sudo firewall-cmd --reload # 确认端口已开放 sudo firewall-cmd --list-ports
如果不想使用防火墙临时测试:
bash
# 临时关闭防火墙 sudo systemctl stop firewalld # 永久关闭防火墙(不推荐生产环境) sudo systemctl disable firewalld
2. 检查SELinux状态
SELinux可能会阻止外部连接:
bash
# 检查SELinux状态 getenforce # 如果是Enforcing模式,临时禁用 sudo setenforce 0 # 或者永久禁用(编辑配置文件) sudo nano /etc/selinux/config # 修改为:SELINUX=disabled
3. 修改Redis配置文件
编辑Redis配置文件:
bash
sudo nano /etc/redis.conf
找到并修改以下关键配置:
conf
# 注释掉绑定本地,或改为 0.0.0.0 # bind 127.0.0.1 bind 0.0.0.0 # 关闭保护模式 protected-mode no # 如果需要密码认证(推荐) # requirepass yourpassword # 确保不是以守护进程方式运行(如果连接还有问题) daemonize no
4. 重启Redis服务
bash
# 重启Redis服务 sudo systemctl restart redis # 检查服务状态 sudo systemctl status redis # 设置开机自启 sudo systemctl enable redis
5. 检查网络监听
bash
# 检查Redis是否在正确端口监听 sudo netstat -tlnp | grep redis # 或使用ss命令 sudo ss -tlnp | grep redis # 应该看到:0.0.0.0:6379
6. 获取CentOS虚拟机IP地址
bash
# 查看IP地址 ip addr show # 或 hostname -I
记下IP地址(通常是192.168.x.x或10.0.x.x)。
7. 测试本地连接
在CentOS虚拟机上测试Redis:
bash
# 本地连接测试 redis-cli ping # 应该返回:PONG # 如果设置了密码 redis-cli -a yourpassword ping
8. 从宿主机测试连接
在您的本地电脑上测试:
bash
# 使用redis-cli redis-cli -h <CentOS_IP> -p 6379 ping # 如果连接成功,返回PONG # 如果设置了密码 redis-cli -h <CentOS_IP> -p 6379 -a yourpassword ping
9. CentOS专用诊断脚本
在CentOS虚拟机上运行这个完整的诊断脚本:
bash
#!/bin/bash echo "=== CentOS Redis连接诊断 ===" echo "1. Redis服务状态:" sudo systemctl status redis --no-pager -l echo -e "\n2. 防火墙状态:" sudo systemctl status firewalld --no-pager -l echo "开放端口:" sudo firewall-cmd --list-ports echo -e "\n3. SELinux状态:" getenforce echo -e "\n4. 网络监听:" sudo netstat -tlnp | grep redis echo -e "\n5. 虚拟机IP地址:" ip addr show | grep inet echo -e "\n6. 测试本地Redis连接:" redis-cli ping echo -e "\n诊断完成"
10. 如果仍有问题,检查虚拟机网络设置
VirtualBox:
-
网络适配器选择"桥接网卡"
-
或设置端口转发:
-
设置 → 网络 → 高级 → 端口转发
-
添加规则:主机端口6379 → 客户机端口6379
-
VMware:
-
网络适配器选择"桥接模式"
-
或配置NAT端口转发
11. 安全建议
生产环境中建议:
conf
# 在redis.conf中 bind <虚拟机具体IP> # 而不是0.0.0.0 requirepass 强密码 rename-command FLUSHDB "" rename-command FLUSHALL ""
按照以上步骤操作,应该能解决CentOS虚拟机上的Redis连接问题。最常见的原因是防火墙、SELinux和Redis绑定配置。

被折叠的 条评论
为什么被折叠?



