如何正确设置主机名和域名?

如何正确设置主机名和域名?

我在一家公司租用一台服务器,运行 Ubuntu 16.04,我们将其命名为company.org。

目前,我的服务器配置如下:

  • 主机名:server737263
  • 域名:company.org

这是我的 FQDN:

user@server737263:~ $ hostname --fqdn
server737263.company.org

这并不奇怪。

我也租了一个域名,起个名字吧domain.org。我想做的是将我的服务器重命名为server1.domain.org.

这意味着将我的主机名配置为 ,server1并将我的域名配置为domain.org

我怎样才能正确地做到这一点?

事实上,联机帮助页hostname并不清楚。至少对我来说:

主机名(1)

[...]

设置名称

  • 当使用一个参数或使用 --file 选项调用时,这些命令会设置主机名或 NIS/YP 域名。 hostname 使用 sethostname(2) 函数,而 ypdomainname 和 nisdomainname 这三个域名均使用 setdomainname(2)。 请注意,这仅在下次重新启动之前有效。编辑 /etc/hostname 进行永久更改。

[...]

完全限定域名

  • 您无法使用主机名或 dnsdomainname 更改 FQDN。

[...]

看来编辑/etc/hostname还不够?因为如果它真的更改了主机名,它就会更改 FQDN。我还读到了一个使用命令更改主机名的技巧sysctl kernel.hostname=server1,但没有说明这是正确的方法还是丑陋的技巧。

所以:

  1. 设置主机名的正确方法是什么?

  2. 正确的域名设置方法是什么?

答案1

设置您的主机名:

  • 您需要/etc/hostname使用新主机名进行编辑。

  • 然后,运行sudo hostname $(cat /etc/hostname)

设置您的域,假设您有一个resolvconf二进制文件:

  • 在 中/etc/resolvconf/resolv.conf.d/head,您将添加 then 行domain your.domain.name(不是您的 FQDN,只是域名)。

  • 然后,运行sudo resolvconf -u以更新您的/etc/resolv.conf(或者,只需将之前的更改复制到您的/etc/resolv.conf)。

如果没有resolvconf,只需编辑/etc/resolv.conf并添加该domain your.domain.name行。

无论哪种方式:

最后,更新您的/etc/hosts文件。应该至少有一行以您的 IP(是否环回)、FQDN 和主机名之一开头。 greping 出 ipv6 地址,您的主机文件可能如下所示:

127.0.0.1 localhost
1.2.3.4 service.domain.com service

针对hostnamectl评论中堆积如山的建议:它不是强制性的,也不是详尽无遗的。

如果您的操作系统附带了 systemd,它可以用作步骤 1 和 2 的替代。而无论 systemd 是否存在(pclinuxos、devuan,...),上面给出的步骤都是有效的。

答案2

sudo nano /etc/主机名

hostname.domain.com

须藤纳米 /etc/hosts

127.0.0.1   hostname.domain.com hostname localhost

重启!

/etc/hosts 文件中的 FQDN 后必须有单个主机名。在 Ubuntu 18.04.1 和所有其他版本上运行良好。在 EC2 和其他地方。

没有弄乱解析文件或其他任何东西。

这会在 shell 中显示主机名,然后在需要时显示 FQDN。

答案3

针对 Ubuntu 18.04.3 LTS(仿生)编写的说明

更改主机名:

sudo hostnamectl set-hostname server1

通过运行检查结果hostnamectl

root@www:/# hostnamectl
   Static hostname: server1       <-- Check this value
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 202c4264b06d49e48cfe72599781a798
           Boot ID: 43654fe8bdbf4387a0013ab30a155872
    Virtualization: xen
  Operating System: Ubuntu 18.04.3 LTS
            Kernel: Linux 4.15.0-65-generic
      Architecture: x86-64

通过新的网络管理器更改域,网络计划,通过编辑/etc/netplan/01-netcfg.yaml和更改search参数:

sudoedit /etc/netplan/01-netcfg.yaml

配置示例:

# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: yes
      nameservers:
          search: [ domain.org ]

通过第二次登录、sudo netplan try在其中一个会话中运行并检查另一个会话中的设置来测试更改:

# netplan try
Do you want to keep these settings?


Press ENTER before the timeout to accept the new configuration


Changes will revert in  97 seconds
Configuration accepted.
# systemd-resolve --status
...
Link 2 (eth0)
      Current Scopes: DNS
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 8.8.8.8
                      8.8.4.4
          DNS Domain: domain.org      <-- Check this value
# cat /etc/resolv.conf
...
nameserver 127.0.0.53
options edns0
search domain.org    <-- Check this value
# hostname -f
server1.domain.org

一切都很好,在sudo netplan try提示符下按 ENTER 键即可永久保存。

答案4

我尝试将我的域条目更改为myhome.localmyhome.lan 必须编辑/etc/hosts文件和/etc/network/interfaces文件。我的/etc/hosts文件现在看起来像:

127.0.0.1   localhost
192.168.3.2 server.myhome.lan   server

我的/etc/network/interfaces文件现在看起来像:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto enp2s0
iface enp2s0 inet static
    address 192.168.3.2
    netmask 255.255.255.0
    network 192.168.3.0
    broadcast 192.168.3.255
    gateway 192.168.3.1
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers 192.168.3.1
    dns-search myhome.lan

这对我来说可以。

相关内容