在 Linux 中安装了redis 服务,当在客户端通过远程连接的方式连接时,报could not connect错误。
错误的原因很简单,就是没有连接上redis服务,由于redis采用的安全策略,默认会只准许本地访问。
需要通过简单配置,完成允许外网访问。
一。修改redis的配置文件,将所有bind信息全部屏蔽。
# bind 192.168.1.100 10.0.0.1
# bind 192.168.1.8
# bind 127.0.0.1
修改完成后,需要重新启动redis服务。
redis-server redis.conf
二。利用防火墙限制IP访问指定端口,centos7以上系统默认是没有装iptables的,要先yum install iptables,ubuntu 一般要先apt-get install 一下.
iptables防火墙相关操作
1.基本操作
# 查看防火墙状态
service iptables status
# 停止防火墙
service iptables stop
# 启动防火墙
service iptables start
# 重启防火墙
service iptables restart
# 永久关闭防火墙
chkconfig iptables off
# 永久关闭后重启
chkconfig iptables on
2、开启6379端口
如果iptables 没有开启6379端口,用这个方法开启端口
命令:
/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT
保存防火墙修改命令:
/etc/rc.d/init.d/iptables save
或用以下方式修改:
vim /etc/sysconfig/iptables
# 加入如下代码
-A INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT
保存退出后重启防火墙
service iptables restart
三。开启redis 允许外网IP 访问
通过iptables 允许指定的外网ip访问
修改 Linux 的防火墙(iptables),开启你的redis服务端口,默认是6379。
//只允许 192.168.0.101 访问6379
iptables -A INPUT -s 192.168.0.101 -p tcp --dport 6379 -j ACCEPT
//其他ip访问全部拒绝
iptables -A INPUT -p TCP --dport 6379 -j REJECT
是不是还蛮简单的?另外某云服务一般都有安全组的服务,那就更简单了,直接让redis所在服务器加入相关安全组,在安全组里面配置某端口只允许某IP访问就行了,某IP可以是公网或私网IP,用这可视化方式代替命令行配置也是十分简单明了。