如何永久更改Debian NIS域名?或者,域名存储在哪里?


0

在Debian系统上,hostname返回系统的非限定主机名,同时domainname返回(LAN)域名。例如:

$ hostname
nas
$ domainname
lan

我知道主机名存储在/etc/hostname。没关系。所以我可以通过调用hostname othernas或通过编辑永久更改它/etc/hostname

但是如何更改域名?我可以通过电话暂时完成domainname otherlan,但如何永久更改?

我的所有尝试谷歌问题都指出/etc/hostname/etc/hosts/etc/networks/etc/network/interfaces; 但我已经检查了所有这些并且没有找到参考lan。我的谷歌搜索也变成了libc.so电话getdomainnameuname,但同样这些不告诉我在哪里的信息实际上存储在磁盘上。

关于此论坛和其他论坛的其他答案指出/etc/hostname应该包含完全限定的主机名,并从中提取域名。这不是真的!如果我输入一个完全限定的主机名/etc/hostname,我最终会得到一个主机名nas.lan和一个没有域名的域名- 这会导致问题无法解决。

Answers:


1

论坛是正确的; 在DNS域名名称是从主机名取如果存在(虽然我觉得,如果它的通过/ etc / hosts中推断,而不是东西更好地工作)。它没有明确的设置。
(我已经尝试写下我猜测 Linux如何确定它的规则。)

  • 如果hostname报告一个裸名称,那么hostname -f似乎首先使用/ etc / hosts来解析它,然后尝试使用/etc/resolv.conf中的每个域对其进行限定,直到找到DNS中存在的FQDN。因此,两者/etc/hosts和DNS + /etc/resolv.conf都是设置“DNS域名”的替代方式。例如,以下主机条目(以及一个用于::1):

    127.0.0.1  nas.lan  nas  localhost
    

    会导致hostname -f报告“nas.lan”。


但是,NIS域名与其中任何一个都无关。它不是 LAN域名。它不以任何方式或形式与主机名一起使用。它只能由NIS / YP客户端软件(ypbind)读取,以确定要连接的服务器,以防有多个服务器。

设置NIS域的最直接方式是通过  kernel.domainname sysctl,通常在/etc/sysctl.conf/etc/sysctl.d/99-local.conf。与主机名(也有类似的sysctl)不同,在搜索Debian init脚本后,似乎/ etc中没有专用文件。


但是如果我把FQDN放入etc/hostname,我(有时)不能通过名称ping机器,除非我在ping时用“local”代替域。例如,“ping nas.local”而不是“ping nas.lan”。WTF!?
Sod Almighty 2016年

@SodAlmighty:然后不要放入FQDN /etc/hostname。还有其他方法。例如,特殊/etc/hosts条目。(请点击链接中的示例。)
grawity 2016年

@SodAlmighty:至于LAN中的名称解析:.local域由mDNS(通常是avahi-daemon或Bonjour)自动处理,但.lan域由路由器的内部DNS解析器/代理维护。当您的PC向路由器发送DHCP请求时,它包含自己的主机名作为DHCP选项,路由器将其记录在内部DNS中。因此,如果它偶尔不起作用,您应该尝试像Wireshark这样的工具来检查主机名是否通过DHCP 发送,和/或找到路由器的“在线主机”列表以检查它是否了解您。它不是100%可靠。
grawity 2016年
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.