我正在尝试构建测试平台来评估我的程序。我没有物理硬件(服务器、交换机、路由器),所以我决定使用 VirtualBox 来虚拟化一切。要求如下
- 3 台服务器,其中一台是我为此测试平台修改的 DNS 名称服务器,我需要使用它。
- 1 Android 手机,我使用的是 Android x86。我想使用真正的手机,但我不知道如何连接到 VirtualBox 网络。所以,我最终使用了虚拟化 Android。
- 所有设备都必须能够访问互联网。我通过使用 NAT 网络模式实现了这一点。
- 所有设备都可以互相通信。我通过使用 NAT 网络模式实现了这一点。
- 所有设备必须使用 VirtualBox、NAT 网络中的 DNS 名称服务器。
我对 4. 有问题,我可以轻松更改服务器的名称服务器,因为它只是 Debian,但我无法更改 Android 的名称服务器。我甚至不知道 Android 是如何获得互联网访问权限的,但我假设内置 DHCP 服务器发送 Android 名称服务器,尽管当我使用 IP 工具检查名称服务器时,它显示 0.0.0.0 地址。
那么,有没有办法将 Android 的名称服务器更改为 NAT 网络中的服务器之一?
我还接受任何符合我要求的虚拟化解决方案。
答案1
经过研究,我找到了可以满足我现在要求的解决方法。根据VirtualBox 手册
为了解析网络名称,NAT 引擎的 DHCP 服务器提供了主机的已注册 DNS 服务器列表。如果出于某种原因您需要隐藏此 DNS 服务器列表并使用主机的解析器设置,从而强制 VirtualBox NAT 引擎拦截 DNS 请求并将其转发到主机的解析器,请使用以下命令:
由于 NAT 引擎提供了主机已注册的 DNS 服务器列表,因此我能够将主机的 DNS 名称服务器设置为 VirtualBox 中的 DNS 名称服务器。过程如下:
- 将 NAT 网络的端口转发、主机 IP
127.0.0.1
和主机端口53
UDP 设置为 VirtualBox 中的名称服务器的 IP 和端口 53。 - 将主机的名称服务器设置更改为 127.0.0.1。
主机 DNS 解析仍然有效,VirtualBox 中的所有服务器也是如此。