我正在尝试实现这个问题中基本要求的内容:
https://superuser.com/questions/403662/bind-dns-settings-on-mac-os-x-lion-errors-in-zone-file
例如,我需要设置 .local(或其他)的 TLD,以便我可以在 apache 中将虚拟主机绑定到它,以便网络上的其他计算机(或在我的情况下是虚拟机上的计算机)能够使用特定域名连接到服务器。所以我让http://moodle19.local/
等等http://moodle22.local:8888/
都http://somesite.local:82/
在 mamp 中的同一个 apache 实例上运行。Apple 的“Tims-MacBook-Air.local”地址似乎不允许我运行端口,或者为绑定到特定名称的站点使用不同的站点名称等等。
在阅读有关如何执行此操作的信息时,我看到一些说明建议我使用 BIND 在我的 Mac(Lion)上设置本地 DNS 服务器,而我没有专用服务器。我尝试按照说明操作,这些说明让我知道要输入的命令,因为我对命令行这方面的东西毫无头绪。
http://www.macshadows.com/kb/index.php?title=How_To:_Enable_BIND_-_Mac_OS_X's_Built-in_DNS_Server
我已经到了说的部分If both ports are not the same, it's best to change one before starting BIND
。我已执行以下命令:
bash-3.2# more /etc/rndc.conf | grep '\-port'
default-port 953;
bash-3.2# more /etc/named.conf | grep 'inet.*\?port'
inet 127.0.0.1 port 54 allow {any;}
bash-3.2#
所以在我看来,我有不同的端口。我不确定我应该把它们改成什么...例如,我猜named.conf是这个的权威,因为它在我开始之前就存在了,而rndc.conf并不存在。所以它似乎在监听端口54,而rndc.conf有端口953(是53的某个高版本,我依稀记得是用于DNS的)
假设我做了正确的事情,我将 rndc.conf 更改为端口 54。
然后我将 org.isc.named 添加到 launchctl 并尝试使用指示的命令执行它
bash-3.2# launchctl load -w /System/Library/LaunchDaemons/org.isc.named.plist
bash-3.2# echo "launchctl start org.isc.named" >> /etc/launchd.conf
bash-3.2# /usr/bin/named
bash: /usr/bin/named: No such file or directory
这是个问题吗?我不知道我刚才做了什么,但“named”似乎不在我的 Mac 上的 /usr/bin 中。我不知道如何找到它。执行launchctl start org.isc.named
没有产生错误。如果我执行ps -x
(或 -A),那么我可以看到一个/usr/sbin/named -f
我推测是同一个东西的调用。这只是文档中的拼写错误,还是因为它适用于较旧的 OSX 版本?我执行了/usr/sbin/named
,现在我在列表中看到了两次ps -A
。同样,不知道这是否是我应该看到的。
在列表的下方,添加本地区域文件时,有一个添加电子邮件地址的说明。Copy and paste the following configuration, replacing user.domain.com with your e-mail address (changing the @ to a period as shown).
我的(例如我的真实电子邮件地址)中有一个点 (.)...这会是个问题吗 - 或者我现在真的可以使用假电子邮件吗?说明似乎没有指出这一点,而这个实用程序
http://pgl.yoyo.org/as/bind-zone-file-creator.php
对于确定电子邮件地址的原因也没有帮助。我假设电子邮件地址只是一个标记,并输入了一个不真实的地址,并按照示例保留文件(这里),因为它涵盖了我想要的本地顶级域名(我也很高兴有其他域名,例如建议的 banana.fish.moocow这里- 只要它是静态的并且不是 IP 地址,我就不在乎 - 是的,我的 IP 是动态分配的,我对此无能为力)。
所以我尝试重新加载 rndc,以便它能有我的新记录。这是重新启动、停止和刷新命令的输出,后面跟着一个 ping,表明它没有工作。
bash-3.2# rndc reload
WARNING: key file (/private/etc/rndc.key) exists, but using default configuration file (/private/etc/rndc.conf)
server reload successful
bash-3.2# rndc stop
WARNING: key file (/private/etc/rndc.key) exists, but using default configuration file (/private/etc/rndc.conf)
bash-3.2# rndc flush
WARNING: key file (/private/etc/rndc.key) exists, but using default configuration file (/private/etc/rndc.conf)
bash-3.2# rndc reload
WARNING: key file (/private/etc/rndc.key) exists, but using default configuration file (/private/etc/rndc.conf)
server reload successful
bash-3.2# ping webapp.local
ping: cannot resolve webapp.local: Unknown host
bash-3.2#
好吧,我不知道下一步该做什么......它不起作用,我不知道如何修复它。
我已经阅读了其他建议,例如这个但无法理解他们在说什么。“我们使用了产品 X”并没有给我任何提示我应该可以。我看了看http://www.thekelleys.org.uk/dnsmasq/doc.html
页面,但还是挠了挠头,因为它假设我知道的比我实际知道的多(例如,如果我对命令行感到害怕,我该如何运行它?),这是所有 Linux 用户的行为方式。
这似乎也是苹果的做法,只是方向相反。这里是一个链接,告诉我我的管理员会知道如何处理这些字段。我就是管理员,不,我不知道。不妨贴一篇文章,上面写着“勾选让你更加困惑的方框”。叽
附言:抱歉,链接不是链接,显然我可能是一个知道如何破解牢不可破的 reCaptcha 的垃圾邮件机器人,这不是很棒吗。
答案1
我因为你的错误而来到这里:
WARNING: key file (/private/etc/rndc.key) exists, but using default configuration file (/private/etc/rndc.conf)
为了解决这个问题我做了以下事情:
- 创造
/usr/local/etc/
- 搬去
/etc/rndc.key
/usr/local/etc/
- 更新
/etc/rndc.conf
并/etc/named.conf
包括/usr/local/etc/rndc.key
rndc reload
在命令中它看起来像:
sudo -s
mkdir -p /usr/local/etc
mv /etc/rndc.key /usr/local/etc
vi /etc/rndc.conf
vi /etc/named.conf
rndc reload
cat /etc/rndc.conf
产量:
# Start of rndc.conf
include "/usr/local/etc/rndc.key";
options {
...
cat /etc/named.conf
产量:
//
// Include keys file
//
include "/usr/local/etc/rndc.key";