我有一个家庭网络,其中有一台 Ubuntu 服务器,它处理所有 DNS 和 DHCP 请求(我已在无线路由器中禁用这些服务)。我的 DHCP 服务器(ISC-DHCP-Server)根据我在配置中定义的预留将 IP 地址分发给我们的各种设备。它还将搜索域、DNS 服务器地址、WINS 服务器地址等分发给所有客户端。DNS 服务器(bind9)提供本地 DNS 查找、DNS 缓存和 DNS 转发(对于互联网地址 - 转发到 Google DNS,8.8.8.8)。
此设置对我的大多数设备(Windows、MAC OSX、iOS)都适用,但无法正确用于 Android。当 Android 设备连接到无线网络时,它会从 DHCP 接收所有正确的 IP。但是,所有 DNS 查找均失败。尽管如此,我仍然可以使用其 IP 地址连接到网站。所有其他设备都能够正确查找内部和外部 DNS 记录。
这就是关键所在。如果我手动配置网络设置(换句话说,设置静态 IP 并在 Android 客户端上手动输入 DNS 服务器),我可以让 Android 正确进行查找。但是,当 Android 使用 DHCP 并收到与我手动输入的完全相同的值时,它无法进行查找。我可以通过向 DHCP 配置添加辅助 DNS 服务器(8.8.8.8)来解决此问题,但 Android 设备只会与辅助服务器通信,并且只能解析外部互联网地址,而不能解析内部内联网地址。
您认为这可能是什么原因造成的?
答案1
事实证明这是我这边的 DHCP 配置问题。我无意中将广播地址设置为 DHCP 服务器 IP,而不是子网中的最后一个地址 (255)。更改此设置并重新启动 DHCP 服务解决了该问题。
答案2
不使用 DHCP 发送的 DNS 是 Android 的一个错误。
http://code.google.com/p/android/issues/detail?id=8030
StackOverflow 上还有更多/类似的信息: 如果没有附加域名,Android 浏览器主机名将无法解析