1

Я никогда не мог полностью понять, как изменить имя хоста 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 для определения полного доменного имени кажется правильным ответом, однако я уже сделал это, увидев приведенную выше запись 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 ответа2

1

Для настройки доменного имени в Debian вы можете отредактировать /etc/hostname . Для хоста hulefu в домене somewhere.co.uk .co.uk вы просто устанавливаете /etc/hostname в hulefu.somewhere.co.uk . Это должно работать и для большинства других дистрибутивов Linux.

Теперь hostname -d должно дать somewhere.co.uk в ответе .co.uk.

Похожий вопрос был задан на сервере.

Обновление: вместо этого вы можете добавить псевдоним домена в /etc/hosts . Следуя предыдущему примеру, это будет первая строка /etc/hosts: 127.0.0.1 localhost localhost.somewhere.co.uk

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

0

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

sudo hostname covfefe

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

sudo nano /etc/hostname

Наконец, проверьте ваше имя хоста с помощью sysctl следующим образом:

sysctl kernel.hostname

И если значение не covfefe , измените его на covfefe следующим образом:

sudo sysctl kernel.hostname=covfefe

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .