lur*_*her 4 networking virtualbox lan
如果我在同一台主机(Windows 7)上创建多个 ubuntu 来宾,所有来宾都使用配置为“仅主机”的网络适配器,结果是主机中的所有来宾都可以相互 ping
在 Windows 7 主机上,ipconfig我看到类似
以太网适配器本地连接:
Connection-specific DNS Suffix . : wr
Link-local IPv6 Address . . . . . : ......
IPv4 Address. . . . . . . . . . . : 10.15.38.101
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 10.16.2.254
Run Code Online (Sandbox Code Playgroud)
以太网适配器 VirtualBox Host-Only 网络:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : .........
IPv4 Address. . . . . . . . . . . : 192.168.56.1
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
Run Code Online (Sandbox Code Playgroud)
事实上,所有来宾都显示他们的 IP 位于 192.168.56.X 子网上。
问题:是否可以通过这个可通过 LAN 访问的 Host-Only 网络轻松连接在不同主机上运行的访客?
小智 5
更长更好的答案是“是”。
您可以进行仅主机网络并将来宾(和主机)连接到多台主机上的仅主机网络上的其他来宾,或者同一主机上的多个仅主机网络,但这并不容易。不太难,但也不容易。
使主机成为可能的原因是主机也参与了仅主机网络(主机直接参与的唯一虚拟网络方案),只要主机可以进行必要的路由。它确实需要一些管理访问权限,因此也可能因为这个原因而很难做到。
以下是您需要从内到外执行的四项工作:配置仅主机模式的网络、为来宾添加网关、使主机成为路由器以及在主机之间添加静态路由。
确保您的仅限主机的网络是唯一的(至少是所有参与该计划的网络)。也就是每个host-only网络需要不同,而且不都是一样的默认192.168.56.0/24网络。
您的示例将您的主机置于 10.15.38.0/24 网络中,该网络已经是一个私有范围(不重要),因此您可以选择使用其他 10.xy0/24 网络(您有大约 64K 选择!)用于您的仅限主机的网络。(请注意,由于您的示例网关不在您的网络上,这表明您的网络确实是 10.0.0.0/8,因此请注意其他潜在冲突。)当然,您可以继续使用 192.168.y.0/ 24 个网络也是如此,但请确保每个仅限主机的网络使用不同的“y”值。
https://www.virtualbox.org/manual/ch08.html#idp59149232 上的 VirtualBox 文档概述了如何配置仅主机接口和相关 DHCP 服务器以更改地址。GUI 也提供机制,如果命令行不是您的朋友,但文档有助于使其易于理解(或应该),并且没有真正解决 GUI。
将您的来宾配置为通过主机的仅主机网络 IP 离开仅主机网络的路由。与 NAT 虚拟网络不同,仅主机 DHCP 服务器不向访客提供路由信息,只提供地址。
这可以通过多种方式完成,例如更换 DHCP 服务器,但基本上您所要做的就是告诉每个来宾操作系统如何离开仅主机网络。对于大多数操作系统,它是相同的命令(需要管理权限):
route add default gw <<host-only-if>>
Run Code Online (Sandbox Code Playgroud)
默认情况下,仅主机接口将被赋予网络的 .1 节点,因此在这些示例中为 10.xy1,因此命令变为route add default gw 10.xy1(其中 x 和 y 是实际值,当然) .
使此永久生效因来宾操作系统而异,但请根据需要使用 GUI 或编辑 /etc/ 文件,或者在每次启动 VM 时运行route add行。
配置您的 VM 主机以在接口之间路由。这就是它变得棘手的地方,许多人放弃了。就您的主机操作系统而言,使用仅主机网络意味着它们是多 NIC 机器,并且可以将它们配置为将流量从虚拟网络移动到真实网络。
由于您使用的是 Windows,因此http://windows.microsoft.com/en-us/windows/configuring-multiple-network-gateways概述了此概念并提供了有关 route 命令的一些详细信息。似乎打开 RIP 侦听器并添加/验证路由“仅此而已”。
在 Linux 主机上,只需将 /proc/sys/net/ipv4/ip_forward 文件中的值设置为 1,并确保路由表包括虚拟和真实网络即可。这适用于我的 Ubuntu 主机:
echo "1" | sudo tee /proc/sys/net/ipv4/ip_forward
Run Code Online (Sandbox Code Playgroud)
更好的是,我的 Ubuntu 主机已经为真实和虚拟网络提供了正确的路由,所以我所要做的就是更改该文件中的值。
谷歌“我的操作系统作为路由器”或类似的东西,直到你找到让你舒服的东西。您可以使用任何让您满意的机制来启用路由和设置路由。
配置您的主机以路由到其他主机的虚拟网络。这就是它变得混乱的地方,甚至可以通过第 3 步的人有时也会放弃。这很麻烦,因为您需要在每个虚拟机主机上进行此配置,并且如果您有许多主机和仅主机网络,跟踪和完成可能会很棘手。
您的一般默认网络配置将是“不在我的子网上的所有东西都在我的默认网关的另一端”。在您的示例中,如果它不在 10.15.38.0/24 网络上,则在 10.16.2.254 的另一侧(这再次表明您的网络实际上是 10.0.0.0/8,并且您的网络掩码是错误的,但那是好的)。您需要做的是告诉您的主机设置到其他主机的虚拟网络的静态路由。或者,您可以配置主机的默认路由器(您的是 10.16.2.254)以了解这些路由...流量将离开主机,到达路由器,返回到另一台主机...
像这样的东西适用于大多数主机操作系统。
route add -net <<guest-ip-range>> netmask <<correct-mask>> gw <<host-lan-IP>>
Run Code Online (Sandbox Code Playgroud)
因此,在您的示例中,您将route add -net 10.xy0 netmask 255.255.255.0 gw 10.15.38.101放在需要访问主机虚拟网络的其他主机上。
这也可以用于主机网络上需要访问仅主机网络上的设备的其他系统,即使它没有托管自己的虚拟网络。
假设您的网络上有两台主机要应用它:10.15.38.101 和 10.15.38.201。为便于记忆,将它们的每个仅主机网络更改为使用最后一个八位字节作为网络定义,因此 .101 主机上的 10.101.0.0/24 和 .201 主机上的 10.201.0.0/24。
在仅主机网络中的每个来宾上,通过仅主机主机接口添加路由。因此,在 10.101.0.0/24 机器上路由添加默认 gw 10.101.0.1,在 10.201.0.0/24 机器上路由添加默认 gw 10.201.0.1就可以了。
在每台主机上,打开路由并确保路由表包括两个网络。在我的 Ubuntu 主机上,我确实echo "1" | sudo tee /proc/sys/net/ipv4/ip_forward然后route -n将显示如下内容(编辑以匹配您的示例):
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.16.2.254 0.0.0.0 UG 0 0 0 eth0
10.15.38.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
10.101.0.0 0.0.0.0 255.255.255.0 U 0 0 0 vboxnet0
Run Code Online (Sandbox Code Playgroud)
然后在每台主机上,您需要将静态路由添加到另一台主机的仅主机网络。因此,在 .101 主机上输入route add -net 10.201.0.0 netmask 255.255.255.0 gw 10.15.38.201,在 .201 主机上输入route add -net 10.101.0.0 netmask 255.5.201015gw 10.15.38.201建立静态路由。
您现在应该能够使用网络从 10.101.0.101(主机网络上的第一个默认 DHCP 地址)到另一台主机上的 10.201.0.101 虚拟机。我不知道您的来宾操作系统提供了什么,但是 SSH 或 Web 浏览器,或者通常是 ping,应该可以工作。
有了所有这些,即使在不同的仅主机网络上,您的主机和虚拟机也应该能够看到彼此。
剩下的就是配置其他服务,例如 DNS,以便更轻松地解析所有主机。这可能就像向 /etc/resolv.conf 或来宾操作系统中的任何 GUI 机制添加行一样简单,或者使用其他主机地址编辑 /etc/hosts 文件。
可能不清楚,但静态路由技巧需要在仅主机网络访客需要访问的任何系统上。在分步示例中,只有两台主机配置了静态地址。这意味着 10.101.0.0/24 或 10.201.0.0/24 网络或 10.15.38.101 或 10.15.38.201 主机上的任何机器都可以交互,但仅主机网络上的设备无法与 10.15 上的其他主机交互.38.0/24 网络(或其他 10.0.0.0/8 网络)也没有添加静态路由。
这可以通过使用更强大的转发规则进一步配置 VM 主机、添加 NAT 或代理软件来更改。该软件不需要位于多于一个 VM 主机或不同的系统上,只要该设备配置了到它需要服务的所有仅主机网络的静态路由。如果这是一个关键需求,则可以制定更大的路由解决方案。
| 归档时间: |
|
| 查看次数: |
6421 次 |
| 最近记录: |