Как изменить имя домена 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 запись. Я не поместил свое имя хозяина (коралл) в /etc/hosts потому что я не хочу, чтобы мое имя хоста разрешалось 127.0.0.1 но вместо реального IP, который я получил от моего DNS-сервера.
  2. Я сделал след на 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 также прошла. Итак, я пришел к выводу, что все, что я делал выше, было правильно, но каким-то мистическим образом потребовалось много времени, чтобы моя Ubuntu 17.04 поняла это.

Во всяком случае, я приму ответ Джейка Гулда, поскольку у него есть что-то новое в том, как использовать sysctl а также kernel.hostname,
Спасибо всем, кто помог!

2 ответа

Решение

То, как я с этим справляюсь, похоже на это; при условии, что ваше имя хоста covfefe, Сначала запустите эту команду:

sudo hostname covfefe

Затем отредактируйте /etc/hostname и измените значение там:

sudo nano /etc/hostname

Наконец, проверьте ваше имя хоста с sysctl как это:

sysctl kernel.hostname

И если значение не covfefeизмените его на covfefe как это:

sudo sysctl kernel.hostname=covfefe

Для настройки доменного имени в Debian вы можете отредактировать /etc/hostname, Для хозяина hulefu в домене somewhere.co.uk ты просто поставил /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

ИМХО прямая настройка параметров ядра должна быть последним средством.

Другие вопросы по тегам