什么是NAT
NAT全称为Network Address Translation,是VirtualBox实现虚拟机上网的最简单的方式,它不需要虚拟机和宿主机做任何配置。这个模式下,虚拟机不占主机局域网的ip地址,仅分配到连接宿主机器的内部地址。虚拟机上网时需要经过地址转换到宿主机后,再去访问互联网。
默认情况下虚拟机可以通过网卡访问到宿主机器和网络。但是宿主机无法访问到虚拟机,因为虚拟机的IP地址是私有的,宿主机不会路由到虚拟机中。
虚拟机分配的IP地址为:10.0.2.15,网关地址:10.0.2.255。虚拟机可以通过这个IP访问宿主机和外部网络。
宿主机IP
虚拟机访问宿主机和互联网
NAT模式下主机如何访问虚拟机呢?
通过设置端口转发,主机可以访问到虚拟机中的服务。例如,主机需要访问虚拟机中的HTTP服务,可以设置80端口转发。
假设:虚拟机已安装nginx并启动,在宿主机上通过虚拟机IP去访问,无法访问通
配置好80端口转发后,再次访问虚拟机,能够正常显示nginx默认页面。注意:需要关闭虚拟机的防火墙。这里配置主机127.0.0.1上的所有请求通过主机80端口转发到虚拟机80端口,即虚拟机里的nginx监听了80端口,最终显示nginx默认页面。
NAT的一些限制
- ICMP协议限制:一些常用的网络调试工具,例如:ping、traceroute都是依赖ICMP协议发送和接收数据。VirtualBox对ICMP协议的支持存在一些限制,就是说ping能正常工作,但是其他一些工具可能不行。
- 不能可靠的接收UDP广播
- 一些协议不支持:不支持TCP和UDP以外的协议
- 转发1024以下的端口:在基于unix的主机(如Linux、Oracle Solaris和macOS)上,不可能从非root运行的应用程序绑定1024以下的端口。因此,如果尝试配置这样的端口转发,虚拟机将拒绝启动。