主机名中可以有点吗?


23

我在Linux机器的主机名中使用了像a.alpha这样的名称,但是它暗示这些名称不能完全使用。主机名外壳命令的响应是正确的(a.alpha)。但是在我的用户帐户之后打印的名称是“ user @ a”,而不是“ user@a.alpha”。使用avahi时,可以(按主机名)访问a.alpha,但不能访问b.alpha。那是正常的吗?

Answers:


23

菜刀是对的。由于DNS的工作原理,“ a.alpha”的“ alpha”组件被视为DNS中的离散“标签”。使用带点的主机名会导致使用DNS的任何系统产生不一致的结果。

Avahi确实与DNS名称进行交互,特别是该<host-name>指令需要在其中包含服务的DNS FQDN,因此它也受制于DNS与点名的不一致。

不要使用点名。


这是正确的,但是需要参考才能被认为是可靠的答案。有人在Stack Overflow上说“由于DNS如何工作”并不能证明任何事情。
mikemaccana 2015年

是否严格要求主机名不能包含“。” ?
Dinesh Kumar P

1
@DineshKumarP是的。DNS RFC将句点字符描述为DNS标签之间的分隔符。虽然非DNS服务(例如Avahi或SLP)可以允许,但DNS本身不允许。
sysadmin1138

这不太正确。DNS确实很乐意允许标签中包含点,尽管它确实建议符合受限语法(“ LDH规则”;请参阅tools.ietf.org/html/rfc1035#section-2.3.1)。DNS的应用(例如将主机名存储在DNS中)是对DNS标签语法的限制起作用的地方。
Tony Garnock-Jones

17

您由于DNS要求使用该命名方案时遇到麻烦,请改用a-alpha。


我在askubuntu上问了同样的问题,没有人可以回答我。所以我将使用这种方法
benzen

1

正如其他人提到的那样,您绝对要避免由于DNS而导致主机名中出现点,并且我还发现,如果您使用通配符证书来执行SSL,这可能会带来问题,因为通配符证书只会在一个级别的通配符上使用通配符。子域。因此,如果您的通配符证书用于* .mycompany.com,但您的主机名是a.alpha,则通配符证书如果将“ alpha”视为子域,则可能无法正常工作。


1

主机的完整主机名通常是配备了域的FQDN(完全限定域名),在linux中应该以的输出作为host --fqdn,第一个点之前的部分被视为主机的昵称。但是,不同的系统(Linux,SunOS等)已经以各种方式实现了“ hostnick”概念。如:

  • / etc / hostname仅包含hostnick,其余位于/ etc / domainname
  • / etc / hostname包含整个FQDN,该域位于/ etc / domainname中
  • 域名仅存在于YP / NIS配置中
  • 域名仅存在于某些子系统中,而不是系统全局的
  • (其他通常更怪异的方法)

另外,hostnick的概念有点变:

  • FQDN第一个点之前的部分
  • FQDN的某些左侧部分,仅用尾点表示
  • FQDN的实际域名之前的部分(在某处设置)

而且,更复杂的是,host来自bind9-host 的命令通过-N <int>选择控制是否使用搜索域而违反了DNS标准。这会根据情况以各种方式中断DNS查找。DNS应该采用任何查找方式来查找带有尾随点的名称,从字面上看是要查找的内容,对于其他名称,则使用从/etc/resolv.conf到的附加域来查找它们,直到找到匹配项或它们都失败为止(这些域隐含尾随点)。[这是从内存中获取的,如果通用过程在我错过的RFC中有所更改,请发表评论]

这样,如果您在hostnick中使用点,该host命令可能会破坏内容,破坏使用它进行查找的脚本。我个人认为它是难以置信的,它host已经崩溃了,而且即使在今天,我似乎正在破坏我的家庭网络中的系统上的查找,因为我在家中同时拥有IPv4和-v6,并且具有.v4之类的名称。作为额外的,特定于版本的简短格式,host即使ping发现它们很好也无法查找。

无论如何,极少尝试在hostnicks中加点,因此即使没有host's的脑残,我也建议即使从简单的语义学角度来看,也要坚持使用无点的hostnicks。


0

如上所述,正确的答案肯定是“不要那样做”。

对于一些可能有用且绝对切线的阅读,请继续:

您是在谈论dns解析还是命令行提示符?如果您要修复命令行提示符,只需使用$ PS1(或类似的非bash / sh等效项,如果适用)。

如果您确实希望将a.alpha作为可以解析为Interweb上IP地址的主机名,则可以这样做,但这可能涉及每个主机名后缀(例如,EG alpha,beta等)的子域。

甚至有可能您可以配置DNS服务器使其工作而无需创建子域。您可以在父域的区域文件中提供子域名称服务器的IP地址,因此它可能“有效”。这是因为当有人向您的DNS服务器询问a.alpha.examaple.com的IP地址时,他们向DNS服务器询问了example.com,并且如果该DNS服务器已经挂起了该地址,它将回答并回答,而不是尝试将您移交给子域的权威服务器。可能会因缺少SOA而感到困惑……因此,也许您为每个主机前缀添加了一个A记录,为每个主机后缀添加了一个SOA。是的,那是票...

互联网上的所有内容仍然会认为您的主机名是“ a”,而您的域名是alpha.example.com。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.