Virtualbox Server / Client拓扑
我有安装VirtualBox的Ubuntu 14.04台式机。 我制作两个虚拟机,一个是Ubuntu服务器,另一个是Lubuntu客户端。 默认设置允许我通过连接到主机的3G调制解调器从访客上网,导致访客默认使用NAT,但我无法从客户端到达服务器。
我想将两个guest虚拟机放在分离的网络中,让guest虚拟机服务器通过NAT与另一个网络接口连接到Internet,并使guest虚拟机客户端通过guest虚拟机服务器连接到Internet。
我做了以下事情:
- 在访客服务器上,我添加了两个网络接口,一个用于本地网络,另一个用于NAT。
- 在客户端客户端上我只添加了本地网络接口。
我该怎么做才能使访客服务器到达Internet,然后使访客客户端也可以通过访客服务器访问Internet?
您的文档中有VirtualBox网络模式列表 。
您在两个系统上都需要的是内部网络 。 您必须为其命名,您可以在此模式下创建多个网络。 VirtualBox将连接同一内部网络中的所有guest虚拟机,因此两个虚拟机上的名称必须匹配。 默认应该是开箱即用的。
服务器需要一个具有相同名称的内部网络和另一个连接到世界的网络,在您的情况下为NAT 。
现在,来宾服务器应该能够通过NAT接口连接到互联网。
为机器提供IP
为了使客户端和服务器相互连接,必须在同一网络中配置其接口。 您可以手动(静态地址)或在服务器计算机中配置DHCP服务器 。
以下是手动执行此操作的步骤:
root@server:~# ifconfig eth0 192.168.1.1 netmask 255.255.255.0 root@client:~# ifconfig eth0 192.168.1.5 netmask 255.255.255.0
您可以设置所需的任何IP,但它们必须位于同一网络中。 这里,服务器机器中的eth0
指的是内部接口,如果将接口1设置为Internal ,将2设置为NAT ,则上述命令将正常工作。
现在您应该能够相互ping
,但来自客户端计算机的数据包将无法通过服务器计算机,而只能通过服务器。
注意:这些更改将在下次重新引导时丢失,要使更改永久化,您必须编辑和配置 /etc/network/interfaces
。 如果要从桌面使用GUI配置客户端,请跳过CLI配置。
配置转发
您需要配置转发 。 你可以干脆做
root@server:~# echo 1 > /proc/sys/net/ipv4/ip_forward
但这只会在你重启机器之前有效。 您需要编辑/etc/sysctl.conf
并取消注释#net.ipv4.ip_forward=1
,如下所示:
# Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1
这将配置服务器计算机以转发数据包(在下次重新启动时)。
启用伪装
这将配置服务器进行IP伪装 。
root@server:~# modprobe iptable_nat root@server:~# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE root@server:~# iptables -A FORWARD -i eth0 -j ACCEPT
注意eth0
和eth1
,这里第二行必须是-o NAT_interface
,第三行是-i Internal_interface
。
配置客户端以通过服务器
应该已经在GUI助手中或通过编辑/etc/network/interfaces/
设置了此设置。 如果未应用,请通过服务器计算机添加默认路由:
root@client:~# route add default gw 192.168.1.1
配置DNS
现在您应该能够从客户端计算机进行通信,但如果您手动配置了IP地址,则仍需要提供DNS服务器以便解析名称。
编辑/etc/resolv.conf
并添加您喜欢的服务器:
nameserver 4.2.2.1 nameserver 4.2.2.2 nameserver 8.8.8.8 nameserver 8.8.4.4
如果您在服务器计算机中配置了DHCP,则应该已经告诉DHCP服务器使用哪些DNS服务器(如果没有,请立即执行)。
同样,如果您使用GUI助手配置客户端,只需确保DNS有效并跳过此部分。