NetworkManger для установки имени хоста устройства [закрыто]

Вопрос или проблема

У нас есть DHCP сервер (Linux), который обслуживает несколько принтеров и устройства Nuc. Он настроен на назначение IPv4-адреса, шлюза, dns1, dns2, dns3, dns4, ntp1, ntp2, доменов dns-search, суффикса домена и имени хоста в зависимости от пула.
1 Пул: Принтеры
2 Пул: ТВ (устройства Nuc)
3 Пул: гости
Каждый пул имеет запись для назначения имени хоста устройству в формате [p|tv|g]-lvl(n)-[NNN]. Для пула ТВ у нас есть следующий шаблон имени хоста: tv-lvl(n)-[NNN], где (n) – это этаж, а [NNN] – последние 1-3 цифры IP-адреса (например: tv-lvl1-180).

При установке Linux мы не настраиваем имя хоста и оставляем его по умолчанию (localhost), затем с помощью скрипта оболочки настраиваем сетевое соединение для получения настроек DHCP, как настроено на сервере DHCP. Однако имя хоста устройства остается localhost.

Вот что делает скрипт (обратите внимание, что это не фактический код):

nmcli connection modify id 'Wired Connection 1' ipv4.addresses ""
nmcli connection modify id 'Wired Connection 1' ipv4.gateway ""
nmcli connection modify id 'Wired Connection 1' ipv4.dns ""
nmcli connection modify id 'Wired Connection 1' ipv4.dns-search ""
nmcli connection modify id 'Wired Connection 1' ipv4.method auto
nmcli connection modify id 'Wired Connection 1' autoconnect yes
nmcli connection modify id 'Wired Connection 1' hostname.from-dhcp
nmcli connection modify id 'Wired Connection 1' hostname.only-from-default true
nmcli connection modify id 'Wired Connection 1' hostname.from-dns-lookup true

Затем мы перезагружаем, и устройство получает правильные настройки IP. Я могу пинговать устройство откуда угодно, например ping tv-lvl1-180 без проблем, и я даже могу ssh на устройство ssh tv-lvl1-180, однако приглашение остается следующим:

user@localhost: ~$

Как сделать назначенное имя хоста фактическим именем хоста устройства? Из user@localhost: ~$ в user@tv-lvl1-180: ~$

В случае, если это нужно, вот что мы получаем, когда выполняем:

user@localhost:~$ hostname
localhost
user@localhost:~$ hostnamectl
  Статическое имя хоста:  localhost
  Красивое имя хоста:  linuxmint <- Мы изменили его по другим причинам.
        Имя значка:  computer-desktop
   [...]
user@localhost:~$ cat /etc/hostname
localhost
user@localhost:~$

Ответ или решение

Чтобы настроить хостнейм устройства с использованием NetworkManager и получать его из DHCP-сервера, необходимо внести корректировки как в конфигурацию NetworkManager, так и на уровне хостовой системы.

1. Разберем вашу ситуацию

Ваша текущая конфигурация использует DHCP-сервер на Linux, который раздает адреса и хостнеймы для разных пулов устройств (принтеры, TV-устройства, гости). Вы уже используете команду nmcli для изменения сетевых параметров, но заданный хостнейм не отображается на устройстве после перезагрузки.

2. Понимание работы с NetworkManager

NetworkManager управляет сетевыми подключениями и может работать с DHCP-сервером для автоматической настройки параметров сети, включая хостнеймы. Ваша цель — настроить так, чтобы хостнейм, назначаемый DHCP, использовался системой.

3. Изменение конфигурации

На основе предоставленных вами команд, вы можете внести изменения, чтобы обеспечить правильное назначение хостнейма:

nmcli connection modify id 'Wired Connection 1' ipv4.method auto
nmcli connection modify id 'Wired Connection 1' hostname.from-dhcp yes
nmcli connection modify id 'Wired Connection 1' hostname.only-from-default false
nmcli connection modify id 'Wired Connection 1' hostname.from-dns-lookup false

Следует обратить внимание на hostname.only-from-default, который должен быть установлен в false, чтобы разрешить изменяемый хостнейм по DHCP.

4. Обновление /etc/hostname

После запуска nmcli и получения настроек от DHCP-сервера, вы можете вручную изменить файл /etc/hostname, чтобы задать желаемый хостнейм, если это все еще необходимо:

echo "tv-lvl1-180" | sudo tee /etc/hostname

5. Перезагрузка службы

После изменения параметров рекомендуется перезапустить сетевую службу для применения изменений:

sudo systemctl restart NetworkManager

6. Проверка результата

Через некоторое время или после перезагрузки устройства, введите команду для проверки установленного хостнейма:

hostname

Вы должны увидеть tv-lvl1-180 вместо localhost.

7. Заключение

Убедитесь, что настройки DHCP-сервера корректно возвращают назначаемые хостнеймы. Также важно проверять, что ваш DHCP-сервер корректно настроен для работы с NetworkManager. Это обеспечит, что хостнейм будетConsistent и правильно отображен в системе Linux после получения настроек по DHCP.

С такими изменениями вы сможете получать и использовать заданный хостнейм, что улучшит внешний вид командной строки и упростит идентификацию устройств в сети.

Оцените материал
Добавить комментарий

Капча загружается...