Как можно надежно контролировать имя хоста в Linux?

Как можно надежно контролировать имя хоста в Linux?

Я пытаюсь выяснить и контролировать фактическое имя хоста во время ассоциации точки доступа DHCP.

Изменения в файле /etc/hostname нарушают работу sudo.

Проверка journalctl -u NetworkManager показывает, что Network Manager постоянно устанавливает для себя значение в указанном выше файле. В журналах ассоциаций Dmesg не упоминается имя хоста.

Согласно man NetworkManager.conf, Nm раньше включал опцию имени хоста, позволяющую задавать имя хоста для каждого соединения в файле конфигурации, но теперь это устарело (по какой-то причине, подразумевая, что, возможно, есть более очевидный способ добиться той же функциональности).

Параметр hostname также отображается в dhclient.conf, как и параметр NetworkManager.conf; но Network Manager по-прежнему показывает, что hostname задано в соответствии со значением в /etc/hostname с помощью hostnamed, независимо от записи dhclient.conf:

NetworkManager[9405]:[1595351700.9848] settings: hostname: using hostnamed
NetworkManager[9405]: <info>  [1595351700.9849] settings: hostname changed from (none) to "debian"

Это кажется основой безопасности, по крайней мере, если имя хоста можно перехватить или проверить в журналах ассоциаций точек доступа.

Какая ценность на самом деле раздается в ассоциации DHCP и как ее можно легко контролировать?

решение1

Возможно, вы неправильно смотрите на эту проблему. Если вам нужно только одно имя хоста, то вы должны иметь возможность изменить его в /etc/hostname, и все остальное должно работать вокруг него.

Я заметил, что иногда sudo жалуется после изменения имени хоста, потому что не может найти новое имя хоста. Я добавил имя хоста в /etc/hosts, и это исправило проблему.

Вы можете добавить HOSTNAME в /etc/hosts, запустив echo "127.0.0.1 HOSTNAME" >> /etc/hosts(не забудьте sudo, если он вам нужен). После этого у меня не было проблем с sudo, а имя хоста в /etc/hostname используется для сетевых подключений, таких как dhclient и т. п.

Надеюсь, это поможет решить вашу проблему.

решение2

Кажется, ответ был правильным. Имя хоста можно изменить, изменив верхнюю запись в hosts, читающую 127.0.0.1 hostname debian, на hostname [name], не нарушая sudo.

$ sudo journalctl -u NetworkManager | grep hostname
NetworkManager[5592]: <info>  [1595532318.9762] settings: hostname: using hostnamed
NetworkManager[5592]: <info>  [1595532318.9763] settings: hostname changed from (none) to "debian"
NetworkManager[7887]: <info>  [1595538936.1117] settings: hostname: using hostnamed
NetworkManager[7887]: <info>  [1595538936.1117] settings: hostname changed from (none) to "vegetables"

Кроме того, очевидно, что имя хоста зарегистрировано в локальных беспроводных сетях, и ОС, по-видимому, разрешила:

https://documentation.meraki.com/MR/Monitoring_and_Reporting/Hostname_Visibility

Связанный контент