DNS 中可以有正则表达式 CNAME 记录吗?

DNS 中可以有正则表达式 CNAME 记录吗?

有可能在 DNS 服务器中做这样的事情吗?或者做任何等效的事情?

([0-9]{2})\.example\.com\.  IN  CNAME   www$1.example.net.

答案1

DNS 不支持。但最流行的bind9名称服务器守护程序在其区域文件中支持这种语法:

$GENERATE 1-99 www$ CNAME www$.other-domain.com。

请注意,这与其他 DNS 服务器软件不兼容。

答案2

DNS 协议不支持正则表达式。话虽如此,名称服务器没有理由不具备内部评估正则表达式并提供标准 DNS 答案的能力。

它不适用于RFC 1035第 5 条和RFC 1034节 3.6.1 并且我不知道任何名称服务器实际上实现了对正则表达式的支持,但基本上这是可能的。

答案3

尽管正则表达式处理可以写入 DNS 服务器,但这样做并不是一个好主意。

任何经过修改以处理正则表达式扩展的 DNS 服务器都将难以与世界其他地方共存。区域传输到“标准”服务器要么不完整,要么不正确,要么非常庞大,因为每个排列都必须作为单独的记录发送。根据正则表达式,这可能导致几乎无限数量的可能记录,这显然是不切实际的,因为传输可能永远无法完成,导致系统不同步。

当然,如果传输仅仅发生在修改后的服务器之间,这可能是可以的,但宇宙倾向于破坏这种简单性。

答案4

您无法使用标准 DNS 软件执行此操作。

如果您使用自定义 DNS 服务器,该服务器可以识别该特定模式,然后动态合成正确的响应,那么这是可能的。例如,使用我的埃文斯服务器框架。如果您懂“C”,则应该花不到一小时就能实现。

但请注意全部域的权威 DNS 服务器需要具备此功能。虽然可以使用 顺利地将通配符记录从主服务器传输到辅助服务器AXFR,但这只能因为它内置于 DNS 协议中。

相关内容