Virtualbox客户机的网卡模式默认是NAT模式.NAT模式可以让客户机上互联网,对于一般用户来说这已经足够了.但如果你想让客户机与宿主机互相访问,比如SSH登录,互访web服务器,以及让本地局域网中的其他设备也能访问客户机,那么你需要在Virtualbox设置中为网卡选择桥接模式.
将网卡模式更改为桥接模式
当客户机处于关闭状态时,打开虚拟机的设置窗口.在左侧栏里点击网络(Network)标签.
默认情况下Virtualbox只为客户机启用了第一块虚拟网卡,其他网卡处于禁用状态.网卡1的默认模式是NAT模式.要更改网卡模式为桥接模式,只需要点击NAT,然后在列表里选择桥接(Bridged Adapter).最后保存设置就行了,非常简单.
桥接模式下客户机的IP地址
现在,启动客户机.我的宿主机是ubuntu,客户机是openSUSE.进入客户机系统后,打开一个终端,输入ifconfig命令查找客户机的IP地址.可以看见,我的openSUSE客户机IP地址是192.168.1.102.
然后在宿主机上也打开一个终端,输入ifconfig命令查看宿主机的IP地址.可以看见,我的ubuntu宿主机IP地址为192.168.1.101.
192.168.1.101和192.168.1.102处于同一网段(192.168.1.0/24).所以我可以在宿主机里ping客户机.我也可以从客户机里ping宿主机.
在桥接模式下,Virtualbox客户机的IP是由本地局域网中的路由器分配的(如果你的宿主机用路由器上网).这就是说,桥接模式下客户机的默认网关是本地网络的路由器.你可以在客户机中打开一个终端,输入下面的命令查看默认网关的IP地址.
ip route show
在输出结果的第一行中,default via后面的IP地址就是默认网关的IP地址.你会发现这个IP地址就是路由器的地址.
在客户机里访问宿主机的web服务器
在ubuntu宿主机上我安装了nginx网站服务器,我可以在openSUSE客户机里访问ubuntu宿主机的nginx网站.只需要在客户机浏览器里输入宿主机的IP地址就行了.
你也可以在客户机里安装一个Nginx网站服务器,然后在宿主机里访问客户机的Nginx网站.
本地局域网的其他设备也能访问客户机
我的android手机连入了我的本地局域网,所以我也可以在android手机*问客户机里的nginx网站.只需要在手机浏览器里输入客户机的IP就行了.
客户机可以SSH登录宿主机,宿主机也可以SSH登录客户机.客户机也能上互联网.
总之,在桥接模式下,virtualbox客户机被暴露于本地局域网中.在局域网中的其他设备看来,客户机就是一台局域网中的物理设备.而在NAT模式下,Virtualbox虚拟机受一台虚拟路由器的保护,不能直接与宿主机和其他设备通信.NAT模式下,宿主机和其他设备要访问客户机,必须得设置好端口转发.不论是在NAT模式还是在桥椄模式下,客户机都能访问互联网.