如何从远程客户端连接Windows 10 WSL中的Redis服务?
WSL Ubuntu Redis 远程连接超时排查方案
1. 修正Redis绑定地址
你的Redis配置里bind设置的172.22.23.51 172.22.23.55既不是Windows主机IP(172.22.23.112),也不是WSL的IP(172.22.160.1),Redis只会监听配置中指定的IP,导致远程请求无法触达服务。
- 修改
redis.conf的bind字段:要么设为bind 0.0.0.0(允许监听所有网卡),要么明确绑定WSL和Windows主机的IP:bind 127.0.0.1 172.22.160.1 172.22.23.112 - 重启Redis服务:
sudo systemctl restart redis-server
2. 配置Windows到WSL的端口转发
WSL2采用NAT网络模式,默认不会将WSL内的端口暴露到Windows主机的公网网卡,需要手动添加端口转发规则:
- 以管理员身份打开Windows命令提示符(CMD),执行:
netsh interface portproxy add v4tov4 listenaddress=172.22.23.112 listenport=6379 connectaddress=172.22.160.1 connectport=6379 - 验证转发规则是否生效:
netsh interface portproxy show v4tov4 - 注意:WSL重启后IP可能变动,若出现IP变化,需先删除旧规则再添加新规则:
netsh interface portproxy delete v4tov4 listenaddress=旧WindowsIP listenport=6379
3. 验证Redis监听状态
在WSL Ubuntu中执行以下命令,确认Redis确实在监听6379端口,且监听地址包含0.0.0.0或你配置的正确IP:
ss -tulpn | grep 6379
正常输出应包含类似LISTEN 0 511 0.0.0.0:6379或指定绑定IP的监听记录。
4. 逐步测试连通性
- 先在Windows主机上用Redis客户端连接WSL的IP:
redis-cli -h 172.22.160.1 -p 6379,确认本地连通正常 - 再在Windows主机上连接自身IP:
redis-cli -h 172.22.23.112 -p 6379,验证端口转发生效 - 最后用远程客户端连接Windows主机IP(172.22.23.112:6379),测试远程连通性
5. 额外注意事项
- WSL2的IP地址每次重启可能变更,若不想手动重复配置转发规则,可以编写脚本自动获取WSL IP并更新端口转发
- 确认你的网络环境中没有其他设备(如路由器)的防火墙/端口过滤规则限制6379端口的访问
内容的提问来源于stack exchange,提问作者Andreas Zeiner
相关产品推荐
相关产品推荐

