DNS服务与配置

介绍DNS相关概念和常用命令

Posted by Cheney.Yin on December 5, 2021

nslookupnsupdate用于查询和更新域名。

其中nsupdate要配合bind服务器使用。

1 bind域名服务器简易配置

参考

接下来,将说明如何在Ubuntu 20.04.1 LTS安装配置bind

1
apt install -y bind9

安装相关工具,

1
apt install -y dnsutils bind9-host

配置/etc/bind/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
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

logging {
	channel access_log {
		file "/var/log/named.log";
		severity dynamic;
		print-category yes;
		print-severity yes;
		print-time yes;
	};
	category default {
		access_log;
	};
};

zone "etcd.com" IN {
	type master;
	file "/var/lib/bind/db.etcd.com";
	allow-query {
		any;
	};
	allow-update {
		any;
	};
};

该文件中配置了两部分日志及区域两部分内容,其中区域部分更加规范的方法实在/etc/bind/named.conf.local配置。这里,配置了名为etcd.com的区域,它允许任意查询和更新,其数据文件为/var/lib/bind/db.etcd.com,如下是示例内容。

1
2
3
4
5
6
7
8
9
10
$TTL 604800	; 1 week
@		IN SOA	dns.etcd.com. admin.etcd.com. (
				100000     ; serial
				604800     ; refresh (1 week)
				86400      ; retry (1 day)
				2419200    ; expire (4 weeks)
				604800     ; minimum (1 week)
				)
		IN	NS	dns
dns		IN	A	192.168.100.50

@ IN SOA dns.etcd.com. admin.etcd.com. 中,需要配置域名服务器、和管理员邮箱。admin.etcd.com可转化为邮箱地址admin@etcd.com

常见的记录类型见下表:

类型 说明
A 地址记录
CNAME 别名
MX 邮件交换记录
NS 域名服务器记录

更多的可参考该资料

配置好上述文件后,执行如下命令启动bind服务器。

1
named

如下命令可以查看日志。

1
tail -f /var/log/named.log

2 nslookup和nsupdate

nslookup命令进行一下测试。

1
2
3
4
5
6
nslookup dns.etcd.com 192.168.100.50
Server:		192.168.100.50
Address:	192.168.100.50#53

Name:	dns.etcd.com
Address: 192.168.100.50

使用nsupdate命令可以添加新记录。

1
2
3
4
5
6
7
8
9
echo '
server 192.168.100.50
zone etcd.com
update add n0.etcd.com 80000 IN A 192.168.100.120
update add n1.etcd.com 80000 IN A 192.168.100.121
update add n2.etcd.com 80000 IN A 192.168.100.122
send
quit
' | nsupdate

最后使用nslookup验证是否添加成功。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
nslookup n0.etcd.com 192.168.100.50
Server:		192.168.100.50
Address:	192.168.100.50#53

Name:	n0.etcd.com
Address: 192.168.100.120


nslookup n1.etcd.com 192.168.100.50
Server:		192.168.100.50
Address:	192.168.100.50#53

Name:	n1.etcd.com
Address: 192.168.100.121


nslookup n2.etcd.com 192.168.100.50
Server:		192.168.100.50
Address:	192.168.100.50#53

Name:	n2.etcd.com
Address: 192.168.100.122

bind为数据文件开启了journal模式用于保护数据安全,例如/var/lib/bind/db.etcd.com文件的目录下会生成db.etcd.com.jnl文件,所以随意绕过bind修改数据文件,会导致bind启动失败。虽然删除jnl文件可以恢复启动,但是会造成数据丢失。