×

如果你想搭建自己的域名解析服务器,Bind一定是你的不二之选。以下将介绍为你的域名提供解析的基本配置。

安装Bind9

sudo apt update
sudo apt install bind9

配置需要解析的域名

官方配置指南

bind9 配置文件位于 /etc/bind/ ,核心配置文件为named.conf,包含引用了 named.conf.optionsnamed.conf.localnamed.conf.default-zones 配置文件。

/etc/bind/named.conf.local添加自己的域名zone

zone "example.tld" {
    type master;
    file "/var/cache/bind/db.example.tld";
};

最基本的配置只需要包含两个信息,你需要指定DNS服务器类型type master; 意味着作为主服务器提供域名解析服务。主服务器可以将域名记录同步与之对应的从服务器( type slave;

file "/var/cache/bind/db.example.tld"; 意味着包含域名zone记录信息文件的位置,推荐将zone配置文件放置在/var/cache/bind/目录下。

编写zone文件

一个基础zone配置文件包含以下必须的信息:

SOA( start of authority )记录,什么是SOA记录,包含了主域名解析服务器名邮箱(@以.来代替),和序列号(用于客户端确认记录是否更改,可以设置为当前的时间),刷新时间(辅助服务器在向主要服务器询问 SOA 记录以查看其是否已更新之前应等待的时间长度),update retry(服务器再次向无响应的主要名称服务器请求更新前应等待的时间),expiry(当主服务器无响应时,从服务器记录的过期时间),minimum(负缓存TTL)

NS(Name Server)记录,此处为你的域名解析服务器名,如ns1.example.tld

编写/var/cache/bind/db.example.tld

bind9官方的zone参考
$TTL 2d    ; 指定  TTL(Time to Live)默认值
$ORIGIN example.com. ; base domain-name 指定ORIGIN为example.com. (可选)
; Start of Authority RR defining the key characteristics of the zone (domain)
@         IN      SOA   ns1.example.com. hostmaster.example.com. (
                                2003080800 ; serial number序列号
                                12h        ; refresh 刷新时间
                                15m        ; update retry 更新再尝试时间
                                3w         ; expiry 过期时间
                                2h         ; minimum (Negative response caching TTL) 负缓存TTL
                                )
; name server RR for the domain
           IN      NS      ns1.example.com.
ns1        IN      A       192.168.254.2 ;替换为你的IP

$TTL在域名解析系统中意味着记录的有效期,$TTL 2d 意味着如果以下记录如果不指定TTL,将使用这个指定的默认TTL值 2d,需要指定记录的TTL值时,应写在 IN 前。minimum指在客户端缓存无法查询到当前记录的时间(Negative Caching)。

@ 意味着当前的ORIGIN,此处为你的域名(example.tld.),可以用example.tld.来代替。

值得注意的是配置文件中域名填写的方法:bind9以 . 结尾(如ns1.example.tld.)来表示完整的域名;如果末尾不加 . ,bind9会将其视为不完整的域名,并为其添加域名后缀,如填写ns1.example.tld,bind9会将其视为ns1.example.tld.example.tld.

注释以 ; 开始

除了NS记录,当我们使用自己搭建的DNS服务器时,我们需要为这个NS记录添加A记录。

CloudFlare参考写法
$TTL    86400
;; SOA Record
example.tld.	3600	IN	SOA	alice.ns.cloudflare.com. dns.cloudflare.com. 2046598643 10000 2400 604800 3600

;; NS Records
example.tld.	86400	IN	NS	alice.ns.cloudflare.com.
example.tld.	86400	IN	NS	lennox.ns.cloudflare.com.

;; A Records
ns1.example.tld.		IN	A	192.168.254.2
www.example.tld.		IN	A	192.168.254.2

按照你的信息改写后可以通过named-checkconf命令查看配置填写是否存在错误。重启bind9服务

sudo systemctl reload bind9 或者 sudo rndc reload

你可以通过dig查询本机,并通过显示的序列号来确认记录的更改是否成功(不要忘记在更改记录时增加序列号;事实上即使序列号不变,其它公共DNS服务器也会通过实际查询的记录进行同步)

在确认服务器正常返回记录后,你可以在域名注册商填写你的Name Server。如果你使用相同的域名为本域名提供域名解析服务,如使用ns1.example.tld作为example.tld的域名解析服务器,你还需要在域名注册商填写胶水记录(glue record)。

如在spaceship中,在personal nameservers中填写:

更新 root.hints 根服务器地址信息(可选)。root.hints 存储着根服务器的IP地址等信息,它们通常不会经常更新。关于根服务器

wget -O /usr/share/dns/root.hints https://www.internic.net/domain/named.root

其它可参考文档:

digtalocean

r2wind

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

相关文章

Spamhaus数据库

Spamhaus提供了基于DNS的方式查询I...

读出全部

增加wordpress上传大小限制

默认设置下wordpress上传大小限制为2...

读出全部

使用curl命令发送邮件

我从acme.sh项目中了解到它们使用pyt...

读出全部

nsupdate使用方法

我们可以使用nsupdate命令来更新域名记...

读出全部

搭建从服务器

如果你有多个服务器,你可以尝试为域名解析搭建...

读出全部