web-dev-qa-db-ja.com

DebianLinuxドメイン名を変更する方法

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エントリを参照してください。ホスト名を/etc/hostsに解決したくないので、ホスト名(コーラル)を127.0.0.1に入れませんでしたが、代わりに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サーバーへの接続に対する上記の(ネットワーク)遅延もなくなりました。だから私の結論は私が上でやっていたことはすべて正しかったですが、どういうわけか私のUbuntu17.04がそれを実現するのにかなりの時間がかかります。

とにかく、JakeGouldはsysctlkernel.hostnameの使い方に何か新しいことがあるので、私はJakeGouldの答えを受け入れます。
助けてくれたすべての人に感謝します!

1
xpt

私の扱い方はそうです。ホスト名がcovfefeであると仮定します。最初に次のコマンドを実行します。

Sudo hostname covfefe

次に、/etc/hostnameを編集し、そこで値を変更します。

Sudo nano /etc/hostname

最後に、次のようにsysctlでホスト名を確認します。

sysctl kernel.hostname

また、値がcovfefeでない場合は、次のようにcovfefeに変更します。

Sudo sysctl kernel.hostname=covfefe
1
JakeGould

Debianでドメイン名を設定するには、/etc/hostnameを編集できます。ドメインsomewhere.co.ukのホストhulefuの場合、/etc/hostnamehulefu.somewhere.co.ukに設定するだけです。これは、他のほとんどのLinuxディストリビューションでも機能するはずです。

これで、hostname -dsomewhere.co.ukを答えとして与えるはずです。

serverfaultでも同様の質問があります

更新:代わりにドメインエイリアスを/etc/hostsに追加できます。前の例に従うと、これは/etc/hostsの最初の行になります:127.0.0.1 localhost localhost.somewhere.co.uk

カーネルパラメータを直接設定するIMHOは最後の手段です。

1
ben