2010年11月26日星期五

VirtualBox的NAT,2

实现了VirtualBox虚拟机通过宿主机的NAT。具体方法见这里。文章中的方法已经自动设置了SNAT,这样在虚拟机里面就可以连接互联网了。

如果要让互联网的主机连接到虚拟机的服务,还需要配置DNAT。比如要让互联网访问虚拟机上的HTTP服务,那么只需在宿主机添加如下iptables规则(前提是在宿主机和虚拟机上都没有别的规则阻碍这一条的生效):
iptables -t nat -A PREROUTING -p tcp -d 192.168.1.2 --sport 1024:65535 --dport 80 -j DNAT --to 172.16.0.209
192.168.1.2是宿主机的IP地址(这个地址通过家用路由器连接互联网),172.16.0.209是虚拟机的IP地址。

实际演示案例中,宿主机是Ubuntu 10.10,开了Apache。虚拟机是Fedora 11,开了nginx。注意Fedora默认的iptables规则拒绝了大部分连接,需要清除掉。在配置上述DNAT规则前,我们在浏览器里面连接到的是宿主机Ubuntu下的Apache。

在配置了上述DNAT规则之后,我们连接上的是虚拟机Fedora下的nginx。

上面的IP地址125.33.200.186是我们宿主机的因特网IP地址,当然也可以用192.168.1.2测试,这样做是为了演示从外面的机器上用因特网地址访问也是可以看到DNAT后的效果的。

没有评论:

发表评论