跳到主要内容

DNS

Tips

Primary nameserver: ns.wener.me
Hostmaster E-mail address: hostmaster.i.wener.me
Serial #: 1
Refresh: 10800
Retry: 3600
Expire: 604800 1 weeks
Default TTL: 3600

服务

coredns

coredns -conf Corefile -dns.port 1053

dig -p 1053 @localhost AAAA www.example.org +noall +answer

nslookup -type=A twitter.com 1.0.0.1
nslookup -type=A twitter.com 114.114.114.114

dnsupdate

# 更新 NS 记录的函数
ns_update_record(){
nsupdate -y $TSIG_NAME:$TSIG_SECRET <<!
update delete $1 $3
update add $1 $2 $3 $4
send
!
}
# ns_update_record test.wener.me 600 A 192.168.1.1

dig

# 所有 IP
dig +short amazon.com
# 所有 NS
dig NS +short amazon.com
# 请求过程
dig amazone.com +trace
# 通过 IP 请求域名
dig +short -x 8.8.8.8
# 顶级域名的 NS
dig +short NS me.
# 指定请求的 ns
dig google.com @8.8.8.8
# 获取超时时间
dig google.com +noall +answer
# 判断是否所有 NS 都同步了域名, 主要通过 SOA 序号判断
dig google.com +nssearch
# 看域名在 DNS 上是否存在
dig SOA google.nl @ns1.dns.nl.

FAQ

公共 DSN

将日志记录到文件

修改配置,调整 syslog 输出

# 使用 LOCAL0 作为日志输出
logging-facility=0

重定向 syslog 输出

# 修改 syslog.conf
local0 /var/log/pdns.log

DDNS

修改 pdns.conf 启用 dnsupdate

# 启用
dnsupdate=yes
# 默认是 0.0.0.0/0, 置空则禁止所有
allow-dnsupdate-from=
# 生成 TSIG
pu generate-tsig-key home-test hmac-md5
# 为该 ZONE 设置允许修改
pu set-meta i.wener.me ALLOW-DNSUPDATE-FROM 0.0.0.0/0
# 使用 nsupdate 更新记录
nsupdate <<!
server 127.0.0.1 5300
zone i.wener.me
update delete dev.i.wener.me. A
update add dev.i.wener.me. 3600 A 127.0.0.4
key home-wener jI8oJLnLIVOEc6QR7fCUylRnpiD3DL4yXgvBQoaAodM=
send
!

# 生成另外一个 tsig
pu generate-tsig-key home-test2 hmac-md5
# 修改为只允许指定的 tsig 修改
pu set-meta i.wener.me TSIG-ALLOW-DNSUPDATE home-test2

优化

# 以下的值均为默认值

# SO_REUSEPORT
reuseport=no
# 启动监听的线程数, 一般建议 3-4
receiver-threads=1
# 每个接收线程对应的后端线程数
distributor-threads=3
# 包缓存的时间, 将包缓存后不需要请求后端来从新组装一个完整的数据包
# 设置为 60 一般不会有问题
# 也可以将该值设置为几个小时, 需要清除缓存的时候通过 pdns_control purge 来清除
cache-ttl=20
# 缓存查询和结果的时间
query-cache-ttl=20
# 缓存查询但不缓存结果的时间
negquery-cache-ttl=60