我正在尝试确定并控制 dhcp AP 关联期间的实际主机名。
对 /etc/hostname 文件的更改会破坏 sudo。
检查 journalctl -u NetworkManager 发现,网络管理器始终将自身设置为上述文件中的值。Dmesg 关联日志未提及主机名。
根据 man NetworkManager.conf,Nm 曾经包含一个主机名选项,允许在配置文件中根据连接设置主机名,但是该选项已被弃用(由于某种原因,可能意味着有更明显的方法来实现相同的功能)。
主机名选项也出现在 dhclient.conf 中,与 NetworkManager.conf 选项非常相似;但网络管理器仍然显示使用 hostnamed 将主机名设置为 /etc/hostname 中的值,而不管 dhclient.conf 条目如何:
NetworkManager[9405]:[1595351700.9848] settings: hostname: using hostnamed
NetworkManager[9405]: <info> [1595351700.9849] settings: hostname changed from (none) to "debian"
这似乎是一个安全基础,至少如果可以在 AP 关联日志中嗅探或检查主机名的话。
在 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