我在解析网站地址时遇到了严重的延迟,有时根本无法加载;页面持续加载 5 分钟以上,甚至没有超时错误。因此,我在 Mac OS X 10.5 (Leopard) 和 Mac OS X 10.6 (Snow Leopard) 上使用 BIND 设置了本地 DNS 服务器/缓存。
现在我有了 Mac OS X 10.7 (Lion),我遇到了同样的问题,但是这些说明不再适用于 Mac OS X 10.7,而且我找不到解决方法。
有人尝试过这样做吗?Mac OS X 10.7 上的 DNS 服务器有可行的替代方案吗?
对于那些想知道的人,我已经尝试使用几个外部 DNS 服务器。只有我的电脑在网络上有这个问题。
答案1
您的本地计算机上的 DNS 事务显然存在问题。如果您决定运行 DNS 服务器来解决这些问题,您可能会遇到完全相同的问题 - 当您请求 DNS 服务器无法解析的 DNS 条目时,该服务器将不得不从外部 DNS 请求该条目 - 而您遇到了同样的问题。
如果您决定不在台式计算机上运行自己的 DNS 服务器(我认为这是最佳做法),您可以尝试采取一些步骤来更深入地调查 DNS 问题。其中一些步骤如下:
- 尝试使用 8.8.8.8 和 8.8.4.4 作为 DNS 服务器
- 在发送 DNS 请求时,使用数据包捕获软件捕获 DNS 流量 - 对数据包的深入分析往往可以发现问题。观察 DNS 事务并尝试找出瓶颈
您可以使用 Wireshark 进行任何网络数据包分析。
查找 SRC 端口为 53 的 UDP 连接。
问候,
答案2
如果您愿意或需要升级路由器,您可能需要考虑购买支持 DD-WRT 或 Tomato 或类似协议的路由器。您可以做的是拦截网络上的所有 DNS 请求并将它们发送到路由器上的绑定缓存服务器。让路由器为您完成所有工作,而不必在您的桌面上携带 BIND 守护程序或 VM。
答案3
我很惊讶没有人推荐这个,也许在特定的 OS X 版本中它不起作用,但你可以使用 /private/etc/hosts 或 /etc/hosts 手动将 IP 映射到主机名(至少通常如此)。
答案4
解决这个问题的一个非常简单的方法是使用虚拟机。虚拟机(简称 VM)基本上是一台与 Mac OS X 一起运行的虚拟计算机。您可以在 VM 上安装 Linux,然后从 Linux 提供 DNS 服务器,这很简单。
优点:
- 设置起来快速又简单。(在现代 Mac 上安装 Ubuntu 只需不到 15 分钟。)
- VM 为您提供了很大的灵活性。例如,如果您将来需要任何附加服务,那么将它们添加到 Linux VM 中可能比尝试在 OS X 上安装它们更容易。
缺点:
- 有些人认为这是一个笨拙的解决方案。理所当然的是,人们不应该为了获得像 DNS 服务器这样简单的东西而不得不切换操作系统。我们不必放弃 OS X,只需同时运行 Linux 和 OS X,就可以缓解这个问题。
- 托管整台计算机所需的系统资源比仅让 OS X 运行 DNS 服务器所需的系统资源还要多。托管 Linux VM 所需的资源并不多,因此可以缓解这一问题,而且我们可以限制 VM 消耗超出其运行所需的资源。
确信并准备开始了吗?这里有一份快速入门指南。
1)下载并安装虚拟盒,这是一款免费软件,可让您在 OS X 上创建和运行虚拟机。
2)下载 ISO 文件Ubuntu 服务器,这是最流行的 Linux 版本。
3) 启动 VirtualBox。创建一个新的虚拟机。您可以随意保留所有默认设置,也可以自定义设置 - 其实这并不重要。但是,有一点很重要,那就是将网络模式从默认模式(即 NAT)更改为桥接模式。这将为您的虚拟机在本地网络上提供一个 IP 地址。
4) 启动新的虚拟机。VirtualBox 会提示您输入要“插入”到虚拟 CD-ROM 驱动器的 ISO 文件的位置,因此请选择刚刚下载的 Ubuntu Server ISO。
5) 现在,只需按照提示安装 Ubuntu。这非常简单,就像安装 OS X 或 Windows 一样 - 只需继续点击下一步即可。
6) 完成后,您可以登录并看到(希望您熟悉的)Linux 命令提示符。您可能要做的第一件事是下载所有安全和错误修复程序:
sudo apt-get update && sudo apt-get upgrade -y
7)安装 BIND,它是 Ubuntu 最流行的 DNS 服务器:
sudo apt-get install bind9 -y
8)根据您的喜好编辑主 BIND 配置文件:
sudo nano /etc/bind/named.conf
(nano
是一个文本编辑器程序)
https://help.ubuntu.com/community/BIND9ServerHowto
9)通过执行以下操作启动服务器
sudo service bind9 start
10)通过执行以下操作找出虚拟机的 IP 地址:
ifconfig
11)现在您知道了 IP 地址,您可以将其设置为 OS X 上的 DNS 服务器。您就完成了!
有关配置文件中内容的更多信息,或了解如何让 BIND 在打开虚拟计算机时自动启动,请查看Ubuntu BIND 官方文档。如果您觉得这太枯燥,Google 上也有很多教程,可能对用户更友好一些。