是否可以创建包含特殊字符的DNS子域?
例如,根据针对DNS的RFC,* .example.com或$ .example.com是否有效?
答案 0 :(得分:1)
对你的问题的简短回答可归结为"是的,但不是,但有时是的"。
在协议级别,DNS字符串(包括名称)被编码为长度+数据,因此数据可以是任何数据。因此,*
和$
完全正常。
协议之上的级别是人名级别。在那个级别上,您可以使用哪些名称进行限制。从80年代开始,主要限制归结为字母,数字和-
(只要它不在标签的开头或结尾)。因此,禁止*
和$
(*
除外,因为标签的整个内容具有特殊含义)。
最重要的是,这些天我们有国际化的名字。这是一种将任何Unicode字符串编码为符合上述规则的形式的方法。这样,我们可以在内部看起来像räksmörgås.se
的名称看起来像xn--rksmrgs-5wao1o.se
。开头的xn--
是一个前缀,表示这是一个编码名称。您仍然无法在名称中使用*
或$
,但您可能会在Unicode中找到其他类似的内容,并且可以使用..这是一个安全问题。
所有这些的规范分布在太多的RFC上。如果您有点好奇,请从here开始,然后点击许多链接。
答案 1 :(得分:0)
根据RFC 1034,域名标签可以包含字母,数字或连字符(并且必须以字母开头,以字母或数字结尾),因此不允许$
。具有特殊处理的例外是*
,用于通配符,并更详细地解释in RFC 4592