我有一台安装了 VirtualBox 的 Ubuntu 14.04 台式机。我制作了两台虚拟机,一台是 Ubuntu 服务器,另一台是 Lubuntu 客户端。默认设置允许我通过连接到主机的 3G 调制解调器从客户机连接到 Internet,因为客户机默认使用 NAT,但我无法从客户端连接到服务器。
我想把两个客户机放在独立的网络中,让客户机服务器通过另一个网络接口的 NAT 连接到互联网,并让客户机客户端通过客户机服务器连接到互联网。
我做了以下事情:
- 在客户服务器上我添加了两个网络接口,一个用于本地网络,另一个用于 NAT。
- 在来宾客户端上我只添加了本地网络接口。
我应该怎么做才能让客户服务器访问互联网,然后让客户客户端也通过客户服务器访问互联网?
答案1
你有一个VirtualBox 网络模式列表在其文档中。
两个系统上都需要的是内部网络。您必须给它起一个名字,您可以在此模式下创建多个网络。VirtualBox 将在同一内部网络中连接所有客户机,因此两个虚拟机上的名称必须匹配。默认设置应该开箱即用。
服务器需要内部网络在你的情况下,使用相同的名称和另一个连接到世界的名称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 设置为内部的和 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 有效并跳过此部分。