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
何度か再起動しましたが、ドメイン名はまだ空白です。上記は数回の再起動後です。
詳細を追加します。
/etc/hosts
のホスト名をエイリアスとして使用してFQDNを指定するのが正しい答えのようですが、上記のlocalhost.my.domain.org
エントリを参照してください。ホスト名を/etc/hosts
に解決したくないので、ホスト名(コーラル)を127.0.0.1
に入れませんでしたが、代わりにDNSサーバーから取得した実際のIPに解決しました。hostname -f
でトレースを実行しましたが、ログから問題を特定できません。興味があればここに置いておきます。結果として、sendmailサーバーの起動と停止に大幅な(ネットワーク)遅延が発生します。
更新:
現在、hostname -f
、hostname -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サーバーへの接続に対する上記の(ネットワーク)遅延もなくなりました。だから私の結論は私が上でやっていたことはすべて正しかったですが、どういうわけか私のUbuntu17.04がそれを実現するのにかなりの時間がかかります。
とにかく、JakeGouldはsysctl
とkernel.hostname
の使い方に何か新しいことがあるので、私はJakeGouldの答えを受け入れます。
助けてくれたすべての人に感謝します!
私の扱い方はそうです。ホスト名がcovfefe
であると仮定します。最初に次のコマンドを実行します。
Sudo hostname covfefe
次に、/etc/hostname
を編集し、そこで値を変更します。
Sudo nano /etc/hostname
最後に、次のようにsysctl
でホスト名を確認します。
sysctl kernel.hostname
また、値がcovfefe
でない場合は、次のようにcovfefe
に変更します。
Sudo sysctl kernel.hostname=covfefe
Debianでドメイン名を設定するには、/etc/hostname
を編集できます。ドメインsomewhere.co.uk
のホストhulefu
の場合、/etc/hostname
をhulefu.somewhere.co.uk
に設定するだけです。これは、他のほとんどのLinuxディストリビューションでも機能するはずです。
これで、hostname -d
はsomewhere.co.uk
を答えとして与えるはずです。
更新:代わりにドメインエイリアスを/etc/hosts
に追加できます。前の例に従うと、これは/etc/hosts
の最初の行になります:127.0.0.1 localhost localhost.somewhere.co.uk
カーネルパラメータを直接設定するIMHOは最後の手段です。