Вопрос или проблема
Я никогда не мог полностью понять, как изменить имя хоста и доменное имя в 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
. Я не стал добавлять имя моего хоста (coral) в/etc/hosts
, потому что не хочу, чтобы мое имя хоста разрешалось как127.0.0.1
, а получалось реальный IP, который я получил от моего DNS-сервера. - Я сделал трассировку
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 это осознал.
В любом случае, я приму ответ Giacomo1968, так как он предлагает что-то новое в использовании sysctl
и kernel.hostname
.
Я решаю это так; предположим, ваше имя хоста 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
в качестве ответа.
Похожий вопрос был задан на сервере Serverfault.
Обновление:
Вы можете вместо этого добавить доменный псевдоним в /etc/hosts
. Следуя предыдущему примеру, это будет первой строкой в /etc/hosts
: 127.0.0.1 localhost localhost.somewhere.co.uk
На мой взгляд, прямое изменение параметров ядра должно быть последним средством.
.
Ответ или решение
Вопрос о смене доменного имени в операционной системе Debian Linux может представлять собой задачу, требующую понимания ряда команд и файлов конфигурации, таких как /etc/hostname
, /etc/hosts
и /etc/resolv.conf
. Ниже мы рассмотрим несколько ключевых аспектов этого процесса.
Теория (Theory)
Доменное имя в контексте Linux-систем определяется как часть Fully Qualified Domain Name (FQDN), который состоит из имени хоста и домена. Например, в FQDN coral.my.domain.org
, coral
является именем хоста, а my.domain.org
— доменным именем.
Основные команды для управления именем хоста и доменным именем в Linux:
hostname
: устанавливает или выводит имя хоста.domainname
: выводит доменное имя системы.dnsdomainname
: выводит DNS-доменное имя.sysctl kernel.hostname
: управляет параметрами ядра, включая имя хоста.
Пример (Example)
Для изменения доменного имени в Debian необходимо последовательно изменить его так, чтобы система начала его корректно распознавать и использовать. Рассмотрим шаги, которые необходимо предпринять.
Шаг 1: Изменение файла /etc/hostname
Для изменения имени хоста и доменного имени объедините их в один FQDN:
sudo nano /etc/hostname
Замените текущее содержимое на новое, например:
coral.my.domain.org
Шаг 2: Изменение файла /etc/hosts
Этот файл связывает FQDN с IP-адресами. Убедитесь, что запись содержит как localhost
, так и ваш FQDN:
127.0.0.1 localhost
192.168.2.102 coral.my.domain.org coral
В этом контексте важно указать корректный IP-адрес, к которому относится ваш сервер.
Шаг 3: Редактирование /etc/resolv.conf
Это обеспечит правильную работу DNS при навигации и разрешении доменов в системе.
domain my.domain.org
search my.domain.org
nameserver 192.168.2.102
Здесь nameserver
указывает на ваш DNS-сервер, который должен обрабатывать запросы.
Шаг 4: Проверка и установка через команды
Убедитесь, что новая конфигурация была успешно принята путем выполнения следующих команд:
hostname -f
hostname -d
dnsdomainname
sysctl kernel.hostname
Если они не возвращают ожидаемые значения, выполните:
sudo sysctl kernel.hostname=coral.my.domain.org
или используйте:
sudo hostname coral.my.domain.org
Применение (Application)
Изменение доменного имени требует тщательного выполнения всех вышеуказанных шагов для обеспечения корректной работы сети и системных процессов. Дополнительные возможные причины проблемы могут включать кэширование DNS или циклы перезапуска служб, таких как sendmail, которые могут замедлить проявление изменений.
В завершение, как только все изменения будут внесены, перезагрузите систему, чтобы убедиться в их применении:
sudo reboot
Будьте внимательны на каждом этапе: ошибки в конфигурации могут привести к потерям связи и сбоям времени выполнения сетевых приложений. При работе с системными файлами в Debian рекомендуется соблюдать высокую степень осторожности и все изменения сначала проверять в тестовой среде.
Таким образом, изменения доменного имени в Debian Linux могут показаться сложными, однако последовательный подход и внимательное отношение к деталям гарантируют успешную настройку системы.