使用VirtualBox很久了,很多用法都没有深钻,真的是不虚心学习啊。

       由于默认的方式是用NAT来做虚拟机网络的,因此如果从外网想访问虚拟机的应用会比较麻烦。以前一直用桥接的方式,但IP有限,自己指定的IP可能会和局域网的IP冲突,而用DHCP方式获取的IP又可能会发生变化导致不确定,怎么办?网上查了一下,简单有效的解决方法就是用VirtualBox的“端口映射”功能。

下面结合实例来讲讲怎么操做:


应用场景:要将虚拟机的Web 80端口从外面能访问到。


1. 首先要知道虚拟机网卡的“大”IP,惦记网卡查看网络共享中心。

windows 端口转发mysql 数据库端口转发_windows 端口转发mysql



看VirtualBox Host-Only Network的属性,看到了吧分配给它的IP是 192.168.56.1,记住这个地址。

打开CMD窗口ping 192.168.56.1看到可以ping通


2.配置端口转发,打开虚拟机,选中需要访问的虚拟机,点“设置”-“网络”

windows 端口转发mysql 数据库端口转发_mysql_02



点“端口转发”,添加Web80项目如图所示,看到没有主机IP填写的是192.168.56.1,子系统IP需要在虚拟机的系统中通过命令查看如Linux中使用ifconfig查看获知。

需要说明的是主机端口可以和子系统端口不一致,比如以上图的Mysql为例,如果把主机的端口配置为6033的话,那么从外网访问虚拟机的MySQL数据库地址就是192.168.56.1 ,端口就是6033,虚拟机会自动转发给子系统中的3306端口(MySQL的默认端口),这样做有利于保护子系统的应用端口不直接暴露给外面。


再说一点题外话,连MySQL时,虽然创建的mysql账号是允许外部连接的,但还是连不上,这时候进入/etc/mysql/my.cnf文件进行编辑。注释掉 # bind-address = 127.0.0.1

然后重新启动mysql,这样就可以从外部连接上了。


另外补充一下,192.168.这个网段没有起作用,需要查看虚拟机的网卡2是否设置为如下图所示的"仅主机(Host-Only)适配器"模式。


windows 端口转发mysql 数据库端口转发_MySQL_03