最近使用 Mac 时,发现终端中命令提示符前面的主机名错误地显示成bogon。搜索了一下,不止我一个人遇到了这个问题。
现将该问题的原因和解决方案记录如下:
原因:
Bogon 是一个计算机网络术语,源于“虚假”(bogus)一词,指代未被 IANA 正式分配或在公共互联网上无效的 IP 地址空间,主要包括私有地址、本地链路地址等。很多 DNS 服务器会将这些地址段的 IP 反向查询返回为bogon,以标识其为非公共网络。
MacOS 中,用于终端提示符的变量是HostName,当HostName没有被显式设置,在某些网络条件下,系统内核可能会将反向 DNS 的查询结果作为临时主机名。
我们需要解决的问题是:如何让终端只显示我们设置计算机名,避免受到 DNS 反向解析的干扰。
解决方案:
步骤一:设置主机名
在终端中依次执行以下命令(将defined_hostname替换成自定义的主机名)
sudo hostname defined_hostname
sudo scutil --set HostName defined_hostname
sudo scutil --set LocalHostName defined_hostname
其中:
sudo hostname:只改变当前内核的主机名,重启后失效LocalHostName:用于 Bonjour 网络标识HostName:由 Shell 和终端会话使用
步骤二:配置本地hosts文件,确保本地回环地址能正确解析到主机名
修改/etc/hosts文件
127.0.0.1 localhost defined_hostname
::1 localhost YourMacName
这就保证了ssh defined_hostname、ping defined_hostname 等命令在本地网络正常工作。
验证:打开一个新的终端窗口,或重启终端,主机名应该已经固定成自定义的名称

915

被折叠的 条评论
为什么被折叠?



