OSX Mavericks - BIND不再安装...如何让本地DNS服务器工作?

时间:2013-10-23 09:38:23

标签: macos dns bind osx-mavericks

我一直在OSX上使用BIND为我的本地开发机器提供本地DNS解析器,特别是为了方便虚拟机访问我的本地开发环境。

愚蠢地我决定在一夜之间升级到OSX Mavericks,看起来BIND已经不再安装 - 即使添加了命令行开发人员工具。

有人建议如何恢复此功能,或者最新的OSX是否有替代DNS解决方案?

谢谢, 史蒂夫

7 个答案:

答案 0 :(得分:10)

安装Homebrew并使用它来安装bind似乎是最佳途径。

很少有“陷阱”,所以我把这个bash脚本放在一起以简化它。

1)Install Homebrew

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

如果您需要任何帮助,请告诉我,我已经在安静的几台机器上成功配置了这个。

答案 1 :(得分:9)

您可以使用Homebrew:http://brew.sh/

安装bind

答案 2 :(得分:7)

使用Homebrew安装BIND9。当前的brew安装并不像我想的那样完整,所以当我自己遇到这个问题时,我更新了brew文件以生成初始配置文件(以匹配Mountain Lion中的系统安装)以及包含launchd plist中。

虽然我的更改尚未合并,但您可以在此处看到更新的文件:github.com/mxcl/homebrew/pull/23598使用brew edit bind打开BIND的公式,并复制到我的使用brew install bind生成分叉版本,保存并重新安装brew。

答案 3 :(得分:2)

男士&amp;小鼠免费提供BIND安装程序 http://support.menandmice.com/download/bind/macosx/10.9-Mavericks/

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; };
};

一些意见:

  • rndc.key不需要使用import语句导入。如果不存在专用的rndc配置,则默认启动时将通过命名读取rndc.key
  • 如果未定义“控制”块,则使用默认控制语句。默认控件配置为

    控件{         inet 127.0.0.1             允许{localhost; } keys {rndc_key; };  };

  • 永远不要为缓存DNS服务器指定带有端口号的“query-source”(即使它被注释掉了,我也不愿意看到它,有人可能会启用它并创建一个安全漏洞),这是一个安全性风险(它禁用UDP端口随机化,因此可以轻松实现DNS缓存欺骗)

  • 无需为“0.0.127.in-addr.arpa。”指定一个空区域,因为它是(自版本9.5.x以来的默认BIND配置中的几个其他空区域)
  • “localhost”的区域规范显示了如何定义不需要磁盘上额外区域文件的空区域
  • 用于缓存在Internet DNS中运行的DNS服务器,我强烈建议使用通过不指定“hint”类型的区域构建到BIND中的“root.hints”(根DNS服务器列表)。每次更新BIND程序时,都会更新“内置”根提示。
  • logging语句提供了缓存DNS服务器感兴趣的日志记录类别列表。 “query-logging”(记录DNS服务器收到的所有查询)可能会损害繁忙的DNS服务器的性能(每秒大约1000次查询),它在选项块中被禁用但可以使用“rndc”启用(切换) querylog”。可以使用“rndc status”
  • 查找查询记录功能(启用/禁用)的状态

答案 4 :(得分:1)

试试这个http://blakeembrey.com/articles/local-development-with-dnsmasq/

安装好的小牛后,它对我很有用。

答案 5 :(得分:1)

Bind安装在Mavericks中。只是文件已移动。您可以在/ Library / Server / named /.

中找到所有区域文件 实际上,与10.6.8相比,Apple在实现更合规的实施方面做得很好。

手动修改文件很容易。

我的$ 0.02

LL

答案 6 :(得分:1)

我以前使用在MAC上运行的本地DNS服务器,直到我在DD-WRT上发现DNSMasq

我为局域网和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服务器只是为了本地地址,但没有开销。

通过这种方式,我可以通过局域网和所有移动设备通过WIFI连接到本地开发机器,而不会有太多麻烦。

优点:

  • 您的MAC上没有DNS服务器开销
  • 不需要DNS配置 通过DHCP工作
  • 通过WIFI轻松连接移动设备进行开发 机<!/ LI>
  • 易于维护&amp;通过路由器接口配置