BIND-install&introduction

根据操作系统选择包管理工具安装 BIND(Berkeley Internet Name Domain)

1
2
3
4
5
6
7
8
# 使用 Pacman 包管理器安装 BIND(Arch Linux
sudo pacman -S bind

# 使用 DNF 包管理器安装 BIND(Fedora
sudo dnf install bind

# 使用 APT 包管理器安装 BIND(Debian/Ubuntu
sudo apt-get install bind9
1
2
3
// 版本
❯ named -v
BIND 9.20.3 (Stable Release) <id:1e2850e>

本地主机 DNS 服务器

  1. /etc/named.conf 文件是的主要配置文件,用于定义 DNS 服务器的行为和配置

下面是/etc/named.conf默认的内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
// vim:set ts=4 sw=4 et:

options {
directory "/var/named";
pid-file "/run/named/named.pid";

// Uncomment these to enable IPv6 connections support
// IPv4 will still work:
// listen-on-v6 { any; };
// Add this for no IPv4:
// listen-on { none; };

allow-recursion { 127.0.0.1; };
allow-transfer { none; };
allow-update { none; };

version none;
hostname none;
server-id none;
};

zone "localhost" IN {
type master;
file "localhost.zone";
};

zone "0.0.127.in-addr.arpa" IN {
type master;
file "127.0.0.zone";
};

zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" {
type master;
file "localhost.ip6.zone";
};

//zone "example.org" IN {
// type slave;
// file "example.zone";
// masters {
// 192.168.1.100;
// };
// allow-query { any; };
// allow-transfer { any; };
//};

//logging {
// channel xfer-log {
// file "/var/log/named.log";
// print-category yes;
// print-severity yes;
// severity info;
// };
// category xfer-in { xfer-log; };
// category xfer-out { xfer-log; };
// category notify { xfer-log; };
//};
  1. /var/named 目录是 BIND(Berkeley Internet Name Domain)服务器的默认工作目录,用于存储 DNS 区域文件和其他相关文件

列出 /var/named 目录,目录默认包含了以下几个文件:

  • 127.0.0.zone:用于 127.0.0.0/8 网段的反向解析区域文件。
  • localhost.ip6.zone:用于 ::1(IPv6 本地回环地址)的反向解析区域文件。
  • localhost.zone:用于 localhost 的正向解析区域文件。
  • managed-keys.bind:用于 DNSSEC 的密钥管理文件。
  • managed-keys.bind.jnlmanaged-keys.bind 的日志文件。
1
2
3
4
sudo sh -c 'cd /var/named && ls'
127.0.0.zone managed-keys.bind
localhost.ip6.zone managed-keys.bind.jnl
localhost.zone
  1. /etc/resolv.conf 文件是用于配置系统 DNS 解析器的配置文件,告诉系统哪些 DNS 服务器应该用于解析域名,该文件一般由网络管理工具(如 NetworkManager 或 systemd-resolved)自动生成
1
2
3
sudo cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.1.1

/etc/resolv.conf 文件中,nameserver 指令用于指定 DNS 服务器的 IP 地址。每个 nameserver 行可以指定一个 DNS 服务器的 IP 地址,系统会按照这些地址的顺序进行 DNS 查询

上面输出192.168.1.1表示你本地的一个DNS 服务器

你可以使用先前bind默认配置的文件,直接编辑nameserver行即可,保存更改并退出

1
nameserver 127.0.0.1

需要注意:如果系统重启或网络重启,那么 NetworkManager 等网络管理工具会覆盖 /etc/resolv.conf 文件

可以将 /etc/resolv.conf 设为不可变(只读):

1
sudo chattr +i /etc/resolv.conf

如果要允许可以被覆盖,使用:

1
sudo chattr -i /etc/resolv.conf
  1. 测试 DNS 服务器

使用nslookup命令

1
2
3
4
5
6
7
8
9
10
11
12
13
❯ nslookup bilibili.com
Server: 127.0.0.1
Address: 127.0.0.1#53

Non-authoritative answer:
Name: bilibili.com
Address: 8.134.50.24
Name: bilibili.com
Address: 139.159.241.37
Name: bilibili.com
Address: 119.3.70.188
Name: bilibili.com
Address: 47.103.24.173

也可以使用dig命令

1
2
❯ dig bilibili.com
// 输出太多不粘贴了

使用wireshark检测到流量

BIND-install&introduction-1.png
  1. 其他

启用、启动与查询DNS服务

1
2
3
sudo systemctl enable named
sudo systemctl start named
sudo systemctl status named

不使用默认的配置文件,配置自定义的文件,你可能会用到:

检查配置是否存在语法错误(无输出为有效)

1
sudo named-checkconf /etc/named.conf

检查转发和反向区域文件

1
2
sudo named-checkzone forward.agent /var/named/forward.agent.local
sudo named-checkzone reverse.agent /var/named/forward.agent.local

P.S.

forward.agent 与 reverse.agent 是在/etc/named.conf中自定义的,名称随意

forward.agent.local 与 reverse.agent.local 是你在 /var/named/ 中定义的文件