Arch Linux install Bind DNS Server

安装Bind sudo pacman -S bind

启用Bind sudo systemctl start named|sudo systemctl enable named

BIND 配置

要使用 BIND 提供系统 DNS 服务,修改 /etc/resolv.conf,将nameserver 127.0.0.1放到最前面。

只允许本地访问

如果只允许本地网络访问,编辑 /etc/named.conf 并将这行配置加入到 options 区域。

listen-on { 127.0.0.1; };
DNS 转发

要将 DNS 请求请求转发到上游 DNS 服务器(例如说您的 ISP 的服务器,或者 Google、OpenNIC 等知名的服务)。将下面字段加入配置文件的 options 中。

forwarders { 8.8.8.8; 8.8.4.4; };
为局域网提供 DNS 服务

局域网所在IP段(例如 192.168.1.),将对应的 IP 段加入到 /etc/named.conf 中:

allow-recursion { 192.168.1.0/24; 127.0.0.1; };
自动监听新的网络接口

BIND 会每个每隔几个小时扫描新的网络接口并停止在已经不再不存在的上监听。如果您想修改这个时间的话,可以在/etc/named.conf中增加这个项:

interface-interval <扫描间隔>;

最大间隔为 28 天 (40230 分钟)。
如果需要禁用这个功能的话,可以将时间值设置为 0。

重启named服务systemctl restart named

运行 BIND在 chroot 环境

创建 Jail House

首先,我们需要创建一个 jail。我们可以使用 /srv/named, 并将相关文件都放到里面去。

 mkdir -p /srv/named/{dev,etc,usr/lib/engines,var/{run,log,named}}
 
# Copy over required system files
 cp -av /etc/{localtime,named.conf} /srv/named/etc/
 cp -av /usr/lib/engines/* /srv/named/usr/lib/engines/
 cp -av /var/named/* /srv/named/var/named/.
 
# Set up required dev nodes
 mknod /srv/named/dev/null c 1 3
 mknod /srv/named/dev/random c 1 8

 # Set Ownership of the files
 chown -R named:named /srv/named

这些步骤可以配置 jail 的文件系统。
接下来我们需要创建服务文件 (service file),以强制 BIND 在 chroot 环境中启动。

cp -av /usr/lib/systemd/system/named.service /etc/systemd/system/named-chroot.service

我们需要修改 service 启动 BIND 的方法。

nano /etc/systemd/system/named-chroot.service
  ExecStart=/usr/bin/named -4 -f -u named -t "/srv/named"

最后,重新加载 systemd systemctl daemon-reload
禁止named服务systemctl disable named
添加启动 named-chroot.service 服务
systemctl enable named-chroot | systemctl start named-chroot

你可能感兴趣的:(Arch Linux install Bind DNS Server)