为 Apple 设备的内容缓存使用 DNS TXT 记录
将 TXT 记录添加到 DNS 区域文件
将一条或多条 TXT 记录添加到 DNS 服务器上本地域的区域文件。将 DNS TXT 记录添加到如下区域:
针对域授权
与网络客户端的默认搜索域匹配
例如,如果组织向你自己的域提供 DNS 服务并且是 betterbag.com 主机名的授权来源,则将缓存 TXT 记录放在 betterbag.com 区域文件中。
【重要事项】如果未为你的域托管授权 DNS 服务,则你无法自己添加 TXT 记录。与 DNS 服务提供商协调,让他们添加提供的 TXT 记录。
如果你使用的是 BIND9 DNS,请拷贝生成的 TXT 记录,并将其粘贴到你的 DNS 区域文件。
对于 Linux 上基于 BIND9 的 DNS,此文件位于 /private/etc/bind/ 目录中,而且区域文件名称已在 /private/etc/bind/named.conf 中定义(最有可能是“db.betterbag.com.”)。
如果使用的是 Windows DNS,请执行以下一项操作:
如果使用内容缓存服务生成文本记录:使用网络的 DNS 区域名称替换所生成命令中的 ZoneName 变量,然后在 Windows DNS 电脑上运行命令。
如果手动创建文本记录:使用 Windows Server 管理工具手动输入 TXT 记录信息。
使用 DNS TXT 记录在多个公共 IP 地址上发布内容
如果你的网络使用多个公共 IP 地址接入互联网,内容缓存用来注册的地址可能不同于客户端用来发现的地址,则你需要为内容缓存和客户端都提供那些地址的列表。Apple 使用这些列表来交叉匹配涉及多个公共 IP 地址的注册和发现请求。
为避免手动配置客户端,内容缓存使用 DNS TXT 记录来发布公共 IP 地址信息给网络上的客户端。TXT 记录需要发布在客户端所使用的默认 DNS 搜索域中。
在 macOS 10.15 或后续版本中,你还可以指定首选的本地 IP 地址以减少网络上其他内容缓存的影响。如果 TXT 记录中没有声明首选的本地 IP 地址,则所有客户端会使用任何可用的内容缓存。
公共 IP 地址范围的 TXT 记录的正确数据可以自动或手动生成。在任一情况下,均需要编辑 DNS 记录,或者向 DNS 服务商提供设置来在区域文件中创建或编辑 TXT 记录。请注意,你不能为首选的本地 IP 地址自动生成 TXT 记录,这些地址必须手动创建。
【注】这些记录仅在你的内部网络上需要。外部 DNS 不需要额外的记录。
DNS TXT 记录格式
用于指定 TXT 记录的语法以及 TXT 记录中的非 ASCII 字符可能会因 DNS 服务器而异。此处列举的示例仅供参考。
适用于内容缓存的 DNS 文本记录与 DNS-SD TXT 记录(键值对)的格式相同:
name._tcp 10800 IN TXT "[prs|prn|fss|fsn]=addressRanges"
为公共 IP 地址范围使用 prs
和 prn
键;为首选内容缓存的本地 IP 地址范围使用 fss
和 fsn
键。
以下示例每个都定义了一组相同的两个 IP 地址范围:一个范围的起始地址为 17.53.22.2,结尾地址为 17.53.22.254,以及一个包含单个 IP 地址 17.53.23.1 的范围。这两个范围的不同之处在于第一个示例使用了 prs
键,第二个示例使用了 prn
键。
_aaplcache._tcp 10800 IN TXT "prs=17.53.22.2-17.53.22.254,17.53.23.1"
_aaplcache._tcp 10800 IN TXT
_aaplcache._tcp 10800 IN TXT "prn=\x24\x11\x35\x16\x02\x11\x35\x16\xfe\x14\x11\x35\x17\x01"
这些键针对值中所指定的 IP 地址范围使用不同的格式:
prs 或 fss:
prs
或fss
键的值是采用表示法格式(ASCII 点符号)的逗号分隔 IP 地址范围序列。此语法可实现轻松配置。范围包含单个 IP 地址或两个按连字符分隔的 IP 地址。prn 或 fsn:
prn
或fsn
键的值是采用二进制网络字节顺序格式 IP 地址连接范围序列。此语法适合以表示法格式指定时对于 DNS 记录而言太长的范围序列。序列中的每个范围前面都含指定其后所跟范围类型的字节:0x14 表示单 IPv4 地址。
0x24 表示起始和结尾 IPv4 地址范围。
你可以将多个记录链接起来。如果这么做,将第一条记录命名为 _aaplcache._tcp
,然后将后续记录命名为 _aaplcache1._tcp
至 _aaplcache24._tcp
,最多可有 25 条链接的记录。
若要保持与运行 macOS 10.14 或更低版本的客户端的兼容性,请将使用 prs
或 prn
键的记录放在任何使用 fss
或 fsn
键的记录之前。
通过将连接标记放在除最后一条 TXT 记录之外的所有记录中,将记录链接在一起。
prs
和 prn
语法可在链中的记录之间混合使用。使用 prs
语法时,将“,more
”追加到记录值的结尾。使用 prn
语法时,将“+
”(0x2b) 追加到记录值的结尾。第一条缺乏此类连接标记的记录将结束链。
链接的记录一次以五条为一批进行解析,即 _aaplcache._tcp
和 _aaplcache1._tcp
至 _aaplcache4._tcp
先并行解析。如果它们均以连接标记结尾,则接着解析 _aaplcache5._tcp
至 _aaplcache9._tcp
,以此类推。
以下是三条链接记录的示例:
_aaplcache._tcp 10800 IN TXT "prs=17.250.1.1,17.250.2.1-17.250.2.254,more"
_aaplcache1._tcp 10800 IN TXT "prn=\x24\x11\xfa\x03\x01\x11\xfa\x03\xfe+"
_aaplcache2._tcp 10800 IN TXT "prs=17.250.4.5"
示例 1
此示例演示 prs
或 prn
记录和 fss
或 fsn
记录都需要的情况。
假设你有一个名为“_aaplcache._tcp
”且值为“prs=203.0.113.10-203.0.113.19
”的 DNS TXT 记录,以及使用本地地址(10.0.0.30、10.1.0.30 和 10.2.0.30)部署的三个内容缓存。前两个仅提供共享的内容,最后一个提供共享的内容和 iCloud 内容。
若要防止客户端使用未授权的内容缓存,你可以在该记录后追加“,more
”并添加第二条记录,例如:
_aaplcache._tcp prs=203.0.113.10-203.0.113.19,more
_aaplcache1._tcp fss=10.0.0.30,10.1.0.30,10.2.0.30
只要三个内容缓存中的至少一个正在使用此方法,运行 iOS 13、iPadOS 13.1、macOS 10.15、Apple tvOS 13 或更高版本的设备在查找共享内容时便会专门使用这些内容缓存。如果三个都已离线,查找共享内容的客户端可以使用任何可用的内容缓存。
只要 10.2.0.30 正在使用此方法,运行 iOS 13、iPadOS 13.1、macOS 10.15、Apple tvOS 13 或更高版本的设备在查找 iCloud 内容时便会专门使用该地址。如果已离线,查找 iCloud 内容的客户端可以使用任何可用的内容缓存。
运行 iOS 12 或更低版本和 macOS 10.14 或更低版本的设备会使用任何可用的内容缓存,而不仅限于这三个。
示例 2
此示例演示不需要 prs
或 prn
记录的情况。
假设你仅有一个公共 IP 地址且完全不使用 DNS TXT 记录功能,但有一些内容缓存位于为服务器机器 (192.168.50/24) 保留的子网上。
若要防止未授权的内容缓存,你可以设定如下一条记录:
_aaplcache._tcp fss=192.168.50.1-192.168.50.254
只要在该范围内至少有一个内容缓存可用于它所查找的客户端类型(共享或 iCloud),该内容缓存便为客户端(运行 iOS 13、iPadOS 13.1、macOS 10.15、Apple tvOS 13 或更高版本)所专用。