【问题标题】:Does `sethostname()` send a new value of `nodename` from the local machine to a DNS server to update the DNS record for the local machine?`sethostname()` 是否会从本地计算机向 DNS 服务器发送一个新的 `nodename` 值来更新本地计算机的 DNS 记录?
【发布时间】:2019-07-06 13:06:48
【问题描述】:

来自 Linux 编程接口

struct utsname {
    char sysname[_UTSNAME_LENGTH];      /* Implementation name */
    char nodename[_UTSNAME_LENGTH];     /* Node name on network */
    char release[_UTSNAME_LENGTH];      /* Implementation release level */
    char version[_UTSNAME_LENGTH];      /* Release version level */
    char machine[_UTSNAME_LENGTH];      /* Hardware on which system
                                           is running */
#ifdef _GNU_SOURCE                      /* Following is Linux-specific */
    char domainname[_UTSNAME_LENGTH];   /* NIS domain name of host */
#endif
};

nodename 字段返回使用 sethostname() 系统调用(详见手册页) 系统调用)。通常,此名称类似于主机名前缀 来自系统的 DNS 域名。

domainname 字段返回使用 setdomainname() 系统调用(详见手册页) 系统调用)。这是网络信息服务 (NIS) 域 主机名(与主机的 DNS 域不同) 名称)。

nodename 是否被某些 DNS 服务器用于将当前机器的主机名解析为其 IP 地址?如果是,那是哪个 DNS 服务器?

sethostname() 是否会从本地计算机向 DNS 服务器发送新值 nodename 以更新本地计算机 DNS 记录中的主机名?

如果可能,请向domainnamesetdomainname() 提出类似问题。

【问题讨论】:

    标签: c linux dns hostname


    【解决方案1】:

    不,sethostname 只是在内核中更新了一个名称,而内核的这一部分对 DNS 一无所知。

    可能发生的情况是,如果您使用 glibc 并具有某些 NSS modules(例如 myhostname from systemd),它们可能会自动对内核中的主机名更改做出反应。这会影响名称解析(从名称到 IP 地址的映射),但也不涉及 DNS。

    【讨论】:

    • 谢谢。 (1) “这会影响名称解析(从名称到 IP 地址的映射)”是如何完成的? (2)nodename的“网络上的节点名称”是什么意思?
    • 我添加了一些链接。基本上,glibc 继承了 Solaris 的 NSS 插件框架。 网络上的节点名称 只是一个注释。关键是sethostname影响nodename字段。
    猜你喜欢
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-15
    • 1970-01-01
    • 2017-11-30
    • 1970-01-01
    相关资源
    最近更新 更多