随着虚拟化技术的应用,很多环境配置都是在虚拟机中进行的,比如前几天我搭建的 Git 服务器,就是在一个物理机的虚拟机上搭建的,一方面可以做环境隔离,另一方面也方便管理,但是这样会带来另一个新的问题:网络访问。
我的多个物理机的网段是相通的,但是虚拟机和其所在物理机使用的是 NAT 模式,所以虚拟机和非其所在的物理机没法直接连通,可以使用如下命令确认下:
代码语言:javascript复制> telnet 192.168.252.129 22正在连接192.168.252.129...无法打开到主机的连接。在端口 22: 连接失败
下面要介绍的就是如果如何通过 VMware 自身提供的端口转发机制来实现通讯.
环境
物理机:10.13.11.12
物理机:10.13.11.13
虚拟机 IP:搭建在 10.13.11.12 上,IP 为 192.168.252.129
虚拟机:VMware 14
开始设置
查看虚拟机 IP
需要先查看当前的虚拟机 IP,因为后面映射的时候,需要填写 IP 和端口信息:
设置入口
通过 菜单 -> 编辑 -> 虚拟网络编辑器 入口打开设置界面:
提权
我当前使用的是 Windows 7 系统,如果当前用户不是系统的那种 administrator 并且系统开启了 UAC 的话,需要先进行操作提权,才能进行设置,提权操作如下:
NAT 设置入口
提权成功后,需要选择当前虚拟机对应的网络,然后点击「NAT 设置」进入详细设置界面:
添加端口转发
在打开的「NAT 设置」界面,点击「添加」来添加对应的转发端口信息:
设置映射
在弹出的对话框,填入物理机的映射端口,注意不能填已经被占用的端口,然后填写虚拟机的 IP 和要转发的端口,比如我要转发的是 git 默认的 ssh 端口,所以填的 22:
确认连接
填写完成后,一路确定下去,直到完成,然后可以在另一台物理机上验证连通性了:
代码语言:javascript复制> telnet 10.13.11.12 10001
确认是可以访问的,这时候在 ssh 配置文件 config 中配置了上述配置后,使用 git 也确认是可以连接到虚拟机的 git 服务器的。
以上,我详细记录了通过虚拟机端口映射的方式,解决虚拟机和非宿主机的连接问题,不知道你是否有其他的解决方案,欢迎留言讨论。