会社で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)
[...]
名前を設定
- 1つの引数または--fileオプションを指定して呼び出すと、コマンドはホスト名またはNIS/YPドメイン名を設定します。 hostnameはsethostname(2)関数を使用しますが、3つのドメイン名、ypdomainnameおよびnisdomainnameはすべてsetdomainname(2)を使用します。 これは、次回の再起動までのみ有効であることに注意してください。永続的な変更のために/ etc/hostnameを編集します。
[...]
FQDN
- FQDNをホスト名またはdnsdomainnameで変更することはできません。
[...]
/etc/hostname
の編集だけでは不十分なようです。ホスト名を実際に変更した場合、FQDNが変更されていたためです。コマンドsysctl kernel.hostname=server1
でホスト名を変更するために私が読んだトリックもありますが、これが正しい方法なのか醜いトリックなのかについては何も述べられていません。
そう:
ホスト名を設定する正しい方法は何ですか?
ドメイン名を設定する正しい方法は何ですか?
ホスト名の設定:
新しいホスト名で_/etc/hostname
_を編集する必要があります。
次に、Sudo hostname $(cat /etc/hostname)
を実行します。
ドメインの設定:
次に、_/etc/resolvconf/resolv.conf.d/head
_に_domain your.domain.name
_を追加します(FQDNではなく、ドメイン名のみ)。
次に、_Sudo resolvconf -u
_を実行して_/etc/resolv.conf
_を更新します(または、以前の変更を_/etc/resolv.conf
_に再現します)。
どちらも:
最後に、_/etc/hosts
_ファイルを更新します。 IP(ループバックの有無に関係なく)、FQDN、ホスト名のいずれかで始まる行が少なくとも1行必要です。 ipv6アドレスをgreppingすると、hostsファイルは次のようになります。
_127.0.0.1 localhost
1.2.3.4 service.domain.com service
_
Sudo nano/etc/hostname
hostname.domain.com
Sudo nano/etc/hosts
127.0.0.1 hostname.domain.com hostname localhost
リブート!
/ etc/hostsファイルのFQDNの後に単一のホスト名が必要です。 Ubuntu 18.04.1およびその他のすべてのバージョンで正常に動作します。 EC2とその他の場所。
解決ファイルなどをいじってはいませんでした。
シェルにホスト名が表示され、必要なときにFQDNが表示されます。
〜$ manホスト名
[…]
You cannot change the FQDN with hostname or dnsdomainname.
The recommended method of setting the FQDN is to make the hostname be an alias for the fully qualified name using /etc/hosts,
DNS, or NIS. For example, if the hostname was "ursula", one might have a line in /etc/hosts which reads
127.0.1.1 ursula.example.com ursula
Technically: The FQDN is the name getaddrinfo(3) returns for the Host name returned by gethostname(2). The DNS domain name is
the part after the first dot.
Therefore it depends on the configuration of the resolver (usually in /etc/Host.conf) how you can change it. Usually the hosts
file is parsed before DNS or NIS, so it is most common to change the FQDN in /etc/hosts.
If a machine has multiple network interfaces/addresses or is used in a mobile environment, then it may either have multiple
FQDNs/domain names or none at all. Therefore avoid using hostname --fqdn, hostname --domain and dnsdomainname. hostname --ip-
address is subject to the same limitations so it should be avoided as well.
[…]
これは、 別のスレッド の poige によって親切に指摘され、Lutzがここで提案したものとまったく同じです。
Fqdnを/etc/hostname
に含めないでください。
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
パラメータを変更し、新しいネットワークマネージャー Netplan を介してドメインを変更します。
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キーを押して、永続的なものにします。
ドメインエントリをmyhome.local
からmyhome.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
それは私にとってはうまくいきます。