Linux でホスト名を確実に制御するにはどうすればよいですか?

Linux でホスト名を確実に制御するにはどうすればよいですか?

DHCP AP アソシエーション中に実際のホスト名を確認して制御しようとしています。

/etc/hostname ファイルを変更すると、sudo が機能しなくなります。

journalctl -u NetworkManager を検査すると、Network Manager が一貫して上記のファイルの値に設定されていることがわかります。Dmesg 関連付けログにはホスト名についての記述はありません。

man NetworkManager.conf によると、Nm には、設定ファイルで接続ごとにホスト名を設定できるホスト名オプションが含まれていましたが、これは非推奨です (何らかの理由で、同じ機能を実現するより明白な方法がある可能性があります)。

ホスト名オプションは、NetworkManager.conf オプションと同様に、dhclient.conf にも表示されます。ただし、Network Manager では、dhclient.conf エントリに関係なく、hostnamed を使用して /etc/hostname の値にホスト名が設定されていることが表示されます。

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

少なくとも、ホスト名を AP アソシエーション ログでスニッフィングまたは検査できる場合、これはセキュリティの基盤となるようです。

DHCP アソシエーションで実際に配布される値は何ですか? また、それを簡単に制御するにはどうすればよいでしょうか?

答え1

おそらく、この問題を間違って見ているのでしょう。必要なホスト名が 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"

さらに、ホスト名がローカル ワイヤレス ネットワークに記録され、OS によって解決されたことが明らかです。

https://documentation.meraki.com/MR/Monitoring_and_Reporting/ホスト名の可視性

関連情報