如何更改 Debian Linux 域名

如何更改 Debian Linux 域名

我一直无法完全理解如何更改 Linux 主机名和域名,现在它又回来咬我了——我的 Linux 域名是空白的(domainname给出(none)),我就是无法将其改回来:

$ hostname
coral

$ hostname -f
coral

$ hostname -d

$ hostname -d | wc 
      0       0       0

$ domainname 
(none)

$ dnsdomainname

$ dnsdomainname | wc 
      0       0       0

$ cat /etc/hostname
coral

$ head -1 /etc/hosts 
127.0.0.1       localhost.my.domain.org localhost

$ cat /etc/resolv.conf
# Fixed resolv.conf file
domain my.domain.org
search my.domain.org
nameserver 192.168.2.102

$ time dig coral
;; ANSWER SECTION:
coral.                  0       IN      A       192.168.2.102
real    0m0.038s
user    0m0.032s
sys     0m0.004s

我已经重启了好几次了,我的域名现在还是空白的。以上是几次重启后的结果。

添加更多细节。

  1. 使用主机名别名来/etc/hosts指定 FQDN 似乎是正确的答案,但是,我已经这样做了,参见上面的localhost.my.domain.org条目。我没有输入我的主机名 (coral),/etc/hosts因为我不想将我的主机名解析为127.0.0.1真实 IP,而是将其解析为我从 DNS 服务器获取的真实 IP。
  2. 我对 进行了跟踪hostname -f,但无法从日志中找出任何问题。如果有人感兴趣,我可以把它放在这里。

结果,启动和停止我的 sendmail 服务器会出现很大的网络延迟。

更新:

今天,hostname -fhostname -d&dnsdomainname现在都正常工作了。我什么也没做,只是再次跟踪了hostname -f。我应该跟踪到一个新文件,但我没有。所以现在它可以正常工作了,但我仍然不知道为什么它现在可以工作,以及为什么它以前不工作。此外,即使一切正常,我的sysctl kernel.domainname仍然报告(none)。这太奇怪和复杂了。

$ uptime 
 21:33:36 up 2 days,  1:36,  5 users,  load average: 0.22, 0.43, 0.29

$ sysctl kernel.domainname
kernel.domainname = (none)

并且上述连接到我的 sendmail 服务器的 (网络) 延迟也消失了。所以我的结论是我上面所做的都是正确的,但不知何故,我的 Ubuntu 17.04 却花费了大量时间才实现它。

无论如何我都会接受Giacomo1968 的回答因为他对于如何使用sysctl和有一些新的东西kernel.hostname

感谢所有帮助过的人!

答案1

我处理它的方式是这样的;假设你的主机名是covfefe。首先运行此命令:

sudo hostname covfefe

然后编辑/etc/hostname并更改其中的值:

sudo nano /etc/hostname

最后用如下方式检查您的主机名sysctl

sysctl kernel.hostname

如果值不是covfefe,则将其更改为covfefe如下形式:

sudo sysctl kernel.hostname=covfefe

答案2

要在 Debian 中设置域名,您可以编辑。对于域中的/etc/hostname主机,您只需将其设置为。这也适用于大多数其他 Linux 发行版。hulefusomewhere.co.uk/etc/hostnamehulefu.somewhere.co.uk

现在hostname -d应该给出somewhere.co.uk答案。

Aserverfault 上有人问过类似的问题

更新:您可以改为向 添加域别名/etc/hosts。按照前面的示例,这将是 的第一行/etc/hosts127.0.0.1 localhost localhost.somewhere.co.uk

我认为直接设置内核参数应该是最后手段。

相关内容