TinyDNS 格式

来自 Alpine Linux

TinyDNS 数据文件

tinydns 数据的官方数据格式记录在 https://cr.yp.to/djbdns/tinydns-data.html。 有关特定字段的更多信息,请参阅本文底部的注释。

SOA 记录

`Zfqdn:nameserver:contactinfo:serial:retry:expire:min:ttl:timestamp:lo`

Zmy.example.net:208.210.221.65:abuse.example.net

Question: Zmy.example.net.
my.example.net. +2560 soa 208.210.221.65. abuse@example.net. 1206390017 16384 2048 1048576 2560

Zmy.example.net:208.210.221.65:abuse.example.net:2008032201:1000:2000:3000:4000

my.example.net. +2560 soa 208.210.221.65. abuse@example.net. 2008032201 1000 2000 3000 4000

A、NS 记录组合

`&fqdn:ip:x:ttl:timestamp:lo`

创建 ANS 记录。 通常用于委派子域名。 可以与 Z 结合使用以完成与上述组合相同的事情,但使用不同的电子邮件地址。

&my.example.net:208.210.221.65:something

# Question: Zmy.example.net.
# NS replies:
my.example.net. +259200 ns something.ns.my.example.net.
# AR replies:
#something.ns.my.example.net. +259200 a 208.210.221.65

&my.example.net:208.210.221.65:ns1.somewhere.com:3600

# Question: Zmy.example.net.
# NS replies:
my.example.net. +3600 ns ns1.somewhere.com.
# AR replies:
#ns1.somewhere.com. +3600 a 208.210.221.65

A 和 PTR 记录

`=fqdn:ip:ttl:timestamp:lo`

=alpha.my.example.net:192.168.1.1

Question: Zalpha.my.example.net.
alpha.my.example.net. +86400 a 192.168.1.1

# Question: Z1.1.168.192.in-addr.arpa.
1.1.168.192.in-addr.arpa. +86400 ptr alpha.my.example.net

要返回 PTR 记录,您必须定义相应的 SOA 记录

Zmy.example.net:ns1.my.example.net:abuse.example.net
&my.example.net:208.210.221.65:ns1.my.example.net

Z168.192.in-addr.arpa:ns1.my.example.net:abuse.example.net
&168.192.in-addr.arpa:208.210.221.65:ns1.my.example.net

A 记录

`+fqdn:ip:ttl:timestamp:lo`

+alpha.my.example.net:192.168.1.1

Question: Zalpha.my.example.net.
alpha.my.example.net. +86400 a 192.168.1.1

MX 记录

`@fqdn:ip:x:dist:ttl:timestamp:lo`

@my.example.net:208.210.221.77:something

Question: @my.example.net.
my.example.net. +86400 mx 0 something.mx.my.example.net.

@my.example.net:208.210.221.77:mx1.my.example.net:10
@my.example.net:208.210.221.78:mx2.my.example.net:20

Question: @my.example.net.
my.example.net. +86400 mx 10 mx1.my.example.net.
my.example.net. +86400 mx 20 mx2.my.example.net.
# AR replies:
#mx1.my.example.net. +86400 a 208.210.221.77
#mx2.my.example.net. +86400 a 208.210.221.78

CNAME

`Cfqdn:x:ttl:timestamp:lo`

Cmailserver.my.example.net:yourmailserver.somewhere.com

Question: Zmailserver.my.example.net.
mailserver.my.example.net. +86400 cname yourmailserver.somewhere.com.

TXT

`'fqdn:s:ttl:timestamp:lo`

'my.example.net:请不要打扰我们,我们知道我们的 DNS 已损坏

Question: Tmy.example.net
my.example.net. +86400 txt 'Please do not bug us we know our DNS is broken'

SRV

Sfqdn:ip:x:port:priority:weight:ttl:timestamp

ip、x、ttl 和 timestamp 的标准规则适用。 端口、优先级和权重范围均为 0-65535。 优先级和权重是可选的; 如果未提供,则默认为零。

Sconsole.zoinks.example.com:1.2.3.4:rack102-con1:2001:7:69:300

query: 33 console.zoinks.example.com
answer: console.zoinks.example.com 300 SRV 7 69 2001 rack102-con1.example.com

NAPTR

`Nfqdn:order:pref:flags:service:regexp:replacement:ttl:timestamp`

ttl 和 timestamp 的相同标准规则适用。 顺序和偏好(可选)范围为 0-65535,如果未提供,则默认为零。 Flags、service 和 replacement 是字符串。 如果未提供,则 replacement 默认为“.”的 fqdn。

Nsomedomain.org:100:90:s:SIP+D2U::_sip._udp.somedomain.org

query: 35 somedomain.org
answer: somedomain.org 78320 NAPTR 100 90 "s" "SIP+D2U" "" _sip._tcp.somedomain.org

Ncid.urn.arpa:100:10:::!^urn\058cid\058.+@([^\.]+\.)(.*)$!\2!i

AAAA

`:fqdn:28:location:ttl`

这些记录用于解析 IPv6 地址。

:alpha.my.example.net:28:\050\001\103\000\302\072\000\077\105\052\064\355\256\064\063\124:86400

query: alpha.my.example.net   IN         ANY
answer: alpha.my.example.net. 86400 IN	AAAA	2801:4300:c23a:3f:452a:34ed:ae34:3354

注释

每行以一个字符开头,并以冒号分隔的字段继续。 行尾的空格和制表符将被忽略。 空白行也会被忽略。

timestamp 是可选的 TAI64(十六进制格式)时间戳。 如果给出了时间戳,则 TTL 具有特殊含义

  • 如果 TTL 为非零或省略,则时间戳是此记录“生效”的时间
  • 如果 TTL 为零,则时间戳是“失效时间”,即不再提供记录的时间。 TinyDNS 将动态调整 TTL,以便 DNS 记录不会缓存超过“失效时间”

lo 是一个可选的位置字段。 如果客户端位于该位置之外,则记录将被忽略。 lo 可以是一个或两个字符。 例如,

%in:192.168
%ex
+www.mydomain.com:192.168.1.1:::in
+www.mydomain.com:200.20.32.1:::ex

指定 www.mydomain.com 对于 192.168.0.0/16 地址范围内的客户端的地址为 192.168.1.1,对于所有其他客户端的地址为 200.20.32.1。

在带有“x”的行中,如果“x”包含点,则“x”用作服务器名称,而不是“x”.[something].fqdn。 如果 x 在数据文件的其他位置分配了 IP 地址,则应省略 ip。

允许使用 *.fqdn 形式的通配符,并将解析除那些具有自己的记录或更具体的通配符之外的任何地址。

+www.mydomain.com:200.3.1.1
+*.mydomain.com:127.0.0.1

会将用户发送到他的本地计算机以访问 foo.mydomain.com、mx.mydomain.com,实际上是 ANYTHING.mydomain.com,但 www.mydomain.com 除外