windows访问虚拟机中的redis、mysql相关配置

1、概述

前阵子在虚拟机中安装了docker,在其中有几个容器,包括redis、mysql,想着在idea中配置文件使用虚拟机对应的ip跟端口号,但ping通了虚拟机中的ip,端口号不通,最后解决了问题,特此记录(直接在虚拟机中安装mysql和redis也是类似的)

2、环境说明

  • 主机环境为win10
  • 虚拟机VMware 16
  • Linux为centos 7
    需要先配置好windows和虚拟机之间的网络互通,Windows能ping通虚拟机中的ip,同理,虚拟机也能ping通主机的ip,方便下一步的端口访问。
    这里我电脑与虚拟机是用nat模式进行,主机网段192.168.1.0,虚拟机是192.168.118.0,子网掩码都是255.255.255.0。这一块的网络配置可以去网络搜一下,有很多相关教程,这里贴图给各位看看
    第一张图片,window中本地ip和Vnet8的ip
    在这里插入图片描述

虚拟机中进行nat网络连接的ens33适配器ip配置在这里插入图片描述本地主机和虚拟机的互通在这里插入图片描述

3、端口配置

3.1 关闭linux中的防火墙

需要先关闭防火墙,防止拦截。

centos中的命令:(Ubuntu有些命令不同,可另行百度命令进行对照)

#查看防火墙状态
systemctl status firewalld     
#关闭防火墙
systemctl stop firewalld        

关闭后的状态如下:Active变为inactive(dead)在这里插入图片描述
docker中的端口号映射虚拟机对应的端口号。PS:如果直接在虚拟机安装数据库,redis,默认就是3306、6379,不需要管,确保能正常运行即可
在这里插入图片描述

3.2 端口配置

1、先安装iptables

yum install iptables-services -y 
#安装完成,设置开机自启
 systemctl enable iptables	

2、接着进入对应的iptables配置路径中,ls命令列出文件,找到文件iptables。我的虚拟机一开始没有这个iptables文件,但大部分应该是有的才对,没有也没关系,下面编辑新创建一个就好。

cd /etc/sysconfig/

在这里插入图片描述
3、直接用如下命令,编辑iptables配置文件

vim iptables
#sample configuration for ip6tables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6379 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

如果没有iptables文件的,直接将上面整块复制放进去,保存配置就可以。
其中的3306、6379端口号,刚好对应我们的mysql和redis,以后想要配置其他的端口号,按照上面的文件去配置就可以,so easy
4、配置完成后,重启iptables即可。并设置iptables开机自启动

#重启
systemctl restart iptables
#开机自启
systemctl enable iptables

到这里,iptables配置完成

3.3 服务去除ip限制

由于redis中的配置文件会限制ip地址(mysql也有ip限制),所以需要在redis配置文件修改下。
由于我是docker安装的redis和mysql。需要修改docker映射的相关文件
在这里插入图片描述

如果是直接安装的redis,按照下面命令,然后找到bind的这行,修改127.0.0.1为0.0.0.0就可以

vi /etc/redis.conf

在这里插入图片描述
接着重启redis,即可完成访问。如果是docker中的容器,需要重启docker服务

 systemctl restart docker

不然docker会报错,无法映射之前配置好的redis或mysql容器,报错如下:

docker: Error response from daemon: driver failed programming external connectivity on endpoint redis (容器ID): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 6379 -j DNAT --to-destination 172.17.0.2:6379 ! -i docker0: iptables: No chain/target/match by that name.
(exit status 1)).

这是因为我们前面虽然停止已经先停止了firewall,但是后面我们又安装了iptables来进行数据过滤。这与docker的端口映射起了冲突,重启docker就可以。

3.4 验证

在window使用任意的redis客户端(mysql客户端)进行验证
ip为虚拟机中的ip,端口号6379.
在这里插入图片描述
在这里插入图片描述
在Linux中登录redis,贴图为docker登录redis在这里插入图片描述
不同的网段,也能成功访问到,Lucky!

4、总结

在配置中,可能会出现不同的问题,但总的步骤如前面所说,即可成功。
过程注意几点:

  1. 关闭防火墙
  2. iptables相关配置
  3. 相关服务去除ip访问/登录限制
  4. 重启服务
    友情提示:使用虚拟机的小伙伴,可以使用快照功能,保存好配置,出了问题,可以快速回到之前状态

参考文章:
https://www.freesion.com/article/5403428698/
https://blog.csdn.net/weixin_65690979/article/details/127966265
https://blog.csdn.net/weixin_46244732/article/details/127969872

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值