安装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