我一直在 OSX 上使用 BIND 为我的本地开发机器提供本地 DNS 解析器,特别是为了方便虚拟机访问我的本地开发环境。
愚蠢的是,我决定在一夜之间升级到 OSX Mavericks,并且似乎不再安装 BIND - 即使添加了命令行开发人员工具。
任何人都对如何恢复此功能有建议,或者最新的 OSX 是否有替代 DNS 解决方案?
谢谢,史蒂夫
我一直在 OSX 上使用 BIND 为我的本地开发机器提供本地 DNS 解析器,特别是为了方便虚拟机访问我的本地开发环境。
愚蠢的是,我决定在一夜之间升级到 OSX Mavericks,并且似乎不再安装 BIND - 即使添加了命令行开发人员工具。
任何人都对如何恢复此功能有建议,或者最新的 OSX 是否有替代 DNS 解决方案?
谢谢,史蒂夫
安装 Homebrew 并使用它来安装 bind 似乎是最好的途径。
很少有小“陷阱”,所以我把这个 bash 脚本放在一起来简化它。
1)安装自制软件。
2) 将此文件作为“ConfigureBrewBindOnOSX10_9.sh”保存到您的 Mac 并运行它 ( sh ./ConfigureBrewBindOnOSX10_9.sh
) ,或者手动逐行运行它的命令(如果您想随时查看更多详细信息。
ConfigureBrewBindOnOSX10_9.sh 的内容
#!/bin/bash
# Last Updated: Jun 17, 2014
# camden@arrowtech.net
#
# Run as root or sudo the commands that need it as you go.
# 1) USE HOMEBREW TO INSTALL BIND
brew install bind
# 2) CONFIGURE BIND
# Create a custom launch key for BIND
/usr/local/sbin/rndc-confgen > /etc/rndc.conf
head -n 6 /etc/rndc.conf > /etc/rndc.key
# Set up a basic named.conf file.
# You may need to replace 9.10.0-P2 with the current version number if it is out of date.
cat > /usr/local/homebrew/Cellar/bind/9.10.0-P2/etc/named.conf <<END
//
// Include keys file
//
include "/etc/rndc.key";
// Declares control channels to be used by the rndc utility.
//
// It is recommended that 127.0.0.1 be the only address used.
// This also allows non-privileged users on the local host to manage
// your name server.
//
// Default controls
//
controls {
inet 127.0.0.1 port 54 allow {any;}
keys { "rndc-key"; };
};
options {
directory "/var/named";
};
//
// a caching only nameserver config
//
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
logging {
category default {
_default_log;
};
channel _default_log {
file "/Library/Logs/named.log";
severity info;
print-time yes;
};
};
END
# Symlink Homebrew's named.conf to the typical /etc/ location.
ln -s /usr/local/homebrew/Cellar/bind/9.10.0-P2/etc/named.conf /etc/named.conf
# Create directory that bind expects to store zone files
mkdir /var/named
curl http://www.internic.net/domain/named.root > /var/named/named.ca
# 3) CREATE A LuanchDaemon FILE:
cat > /System/Library/LaunchDaemons/org.isc.named.plist <<END
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Disabled</key>
<false/>
<key>EnableTransactions</key>
<true/>
<key>Label</key>
<string>org.isc.named</string>
<key>OnDemand</key>
<false/>
<key>ProgramArguments</key>
<array>
<string>/usr/local/sbin/named</string>
<string>-f</string>
</array>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>
END
chown root:wheel /System/Library/LaunchDaemons/org.isc.named.plist
chmod 644 /System/Library/LaunchDaemons/org.isc.named.plist
# Shutdown bind (if it was running)
#launchctl unload /System/Library/LaunchDaemons/org.isc.named.plist
# Launch BIND and set it to start automatically on system reboot.
launchctl load -wF /System/Library/LaunchDaemons/org.isc.named.plist
如果您需要任何帮助,请告诉我,我已经在几台安静的机器上成功配置了它。
您可以使用 Homebrew 安装绑定:http: //brew.sh/
使用 Homebrew 安装 BIND9。当前的 brew 安装并不像我想要的那样完整,所以当我自己遇到这个问题时,我更新了 brew 文件以生成初始配置文件(以匹配 Mountain Lion 中的系统安装)以及包含一个 launchd列表。
虽然我的更改尚未合并,但您可以在此处查看更新的文件:github.com/mxcl/homebrew/pull/23598brew edit bind
用于打开 BIND 的公式,并复制我的分叉版本,保存并重新安装使用brew install bind
.
Men & Mice 在 http://support.menandmice.com/download/bind/macosx/10.9-Mavericks/免费提供 BIND 安装程序
MacOS X 10.4 (PPC)、10.5/10.6 (x86) 和 10.7/10.8(和新)10.9 (x86_64)
这是我对 BIND 9.9.4 的基本“/etc/named.conf”文件的建议。Internet 上的许多基本配置建议和来自 Linux/BSD 发行版中 BIND 安装的模板尚未更新为 BIND 中的最新更新,并且不是最佳的(尽管它们继续工作)
// BIND named.conf caching only DNS server
// configuration file for
// BIND 9.7 and up
options {
// set the DNS servers "home" directory
// all files with relative path names
// will be read or written from this
// directory
directory "/var/named";
// disable query-logging on start
// query-logging can be enabled using
// "rndc querylog"
querylog no;
};
// automatic empty zone for the "localhost" name
zone "localhost" IN {
type master;
database "_builtin empty . nothing.invalid.";
};
// logging template for a caching DNS server
logging {
channel syslog { syslog daemon; severity info; };
channel security { file "security.log" versions 10 size 50M; print-time yes; };
channel query_log {
file "query.log" versions 10 size 50M; severity debug; print-time yes;
};
category general { syslog; };
category security { security; };
category queries { query_log; };
category dnssec { security; };
category default { syslog; };
category resolver { syslog; };
category client { syslog; };
category query-errors { query_log; };
category edns-disabled { syslog; };
};
一些评论:
如果没有定义“控制”块,则使用默认控制语句。默认控制配置是
控制 { inet 127.0.0.1 允许 { localhost; } 键 { rndc_key; }; };
永远不要为缓存 DNS 服务器指定带有端口号的“查询源”(即使它被注释掉,我也不希望看到它,有人可能会启用它并造成安全漏洞),这是一个安全风险(它会禁用 UDP 端口因此,随机化 abd 可以轻松进行 DNS 缓存欺骗)
我曾经使用在 MAC 上运行的本地 DNS 服务器,直到我在 DD-WRT 上发现了 DNSMasq
我为我的 LAN 和 WIFI 设置了一个 DD-WRT 路由器,然后使用 DD-WRT 的 DNSMasq 功能列出所有应该映射到开发机器的整体。
登录到您的 DD-WRT 路由器:
在服务下,启用 DNSMasq
在“其他 DNSMasq 选项”下列出您要屏蔽的每个条目:
address=/[url]/[ip]
例子:
address=/www.dev.mysite.com/192.168.1.10
address=/photos.dev.mysite.com/192.168.1.11
address=/static.dev.mysite.com/192.168.1.12
这几乎就像在路由器上为本地地址运行您自己的 DNS 服务器,但没有开销。
这样我就可以通过 LAN 连接到本地开发机器,通过 WIFI 连接到所有移动设备,而不会有太多麻烦。
优点:
试试这个http://blakeembrey.com/articles/local-development-with-dnsmasq/
安装小牛后对我来说效果很好。
Bind 安装在 Mavericks 中。只是文件已移动。您可以在 /Library/Server/named/ 中找到所有区域文件。
与 10.6.8 相比,Apple 实际上在实现更合规的实现方面做得很好。
手动修改文件很容易。
我的 0.02 美元
二