MacOS修复hostname被篡改为bogon

带着Mac笨笨去了外地,打开terminal准备连接公司的跳板机,这时发现terminal上显示的hostname被篡改为bogon。 

bogon:~ homer$ 
bogon:~ homer$ 
bogon:~ homer$ 

bogon是谁,难道有人动了我的电脑,回想一下没有啊。难道有吊炸天的hacker黑了我的电脑,然后改了一下hostname?

bogon 英文单词的含义是“虚拟的、虚伪的”,有的路由器里会有一个账户为 bogon 表示未知的虚拟户。

 

好了,遇到问题,先自己常见的查看与分析:

1、查看 hostname

bogon:~ homer$ hostname
bogon

 

2、查看本机IP:ifconfig

bogon:~ homer$ ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>
        inet 127.0.0.1 netmask 0xff000000 
        inet6 ::1 prefixlen 128 
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 
        nd6 options=201<PERFORMNUD,DAD>
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        ether 78:4f:43:86:32:b9 
        inet6 fe80::1c34:4e78:56ca:1bfa%en0 prefixlen 64 secured scopeid 0x8 
        inet 192.168.1.2 netmask 0xffffff00 broadcast 192.168.1.255
        nd6 options=201<PERFORMNUD,DAD>
        media: autoselect
        status: active

 

3、查看 resolv.conf

bogon:~ homer$ cat /etc/resolv.conf 
#
# macOS Notice
#
# This file is not consulted for DNS hostname resolution, address
# resolution, or the DNS query routing mechanism used by most
# processes on this system.
#
# To view the DNS configuration used by this system, use:
#   scutil --dns
#
# SEE ALSO
#   dns-sd(1), scutil(8)
#
# This file is automatically generated.
#
nameserver 192.168.1.1

 

最后,经过一番search,造成terminal显示的hostname变为bogon的原因有两点:

terminal显示hostname之前会先根据本机IP做一次rDNS反向查询,就是通过ip地址查询hostname,过程与DNS类似但相反,DNS是根据hostname查IP,例如根据域名 mimvp.com 查米扑科技的服务器IP。

rDNS(根据IP地址查询hostname)反向查询常用在traceroute以及反垃圾邮件技术中应用比较广泛。

terminal显示查询到的hostname,如果没有查询到,那么使用本机设置的hostname。

本机IP通常是局域网IP地址(保留IP地址),一般是查不到的,所以terminal一般显示的本机设置的hostname,比如 yg-mac。

上面提到,局域网IP地址一般是查不到hostname,是因为ISP提供商或者用户防火窗的屏蔽保留IP地址,因为保留IP地址在公网中没啥用,即便是没有被屏蔽掉,rDNS服务器一般也会关闭响应保留IP地址的查询请求。凡事都有例外,rDNS服务器对这种保留IP地址对查询一律返回bogon

在IPv4对地址划分中,除了公网分配在用对IP地址外,其余保留IP地址统一叫做bogon space,好像又扯远了。

原因找到了,最终我是这么解决的:

设置路由器的DNS服务器地址,8.8.8.8 和 8.8.4.4

然后重启terminal

 

Mac终端出现bogon的解决办法

打开终端,输入 sudo hostname your-hostname,例如:sudo hostname yg-mac,回车

输入密码,重启终端(关闭再打开终端)即生效

可以输入 sudo hostname 查看设置的主机名

$ sudo hostname
yg-mac

完整的原因和解决方案如下:

Mac 下的终端经常有时候前面的计算机名会错误的显示成 bogon(英文单词的含义是虚拟的、虚伪的)

这是因为终端会先向 DNS 请求查询当前 IP 的反向域名解析的结果,如果查询不到再显示我们设置的计算机名

而由于我们的 DNS 错误地将保留地址反向的 NS 查询结果返回了 bogon. 其中 bogon 本应该用来指虚假的 IP 地址,而非保留 IP 地址。

因此就出现了会时不时地打印 bogon 这种奇怪名字作为计算机名的现象了。

那么如何让终端只显示我们想要的计算机名而不总是从 DNS 返回结果呢?

解决方案:

在终端中执行以下命令即可(可能需要输入一次管理员密码)

sudo hostname your-desired-host-name
sudo scutil --set LocalHostName $(hostname)
sudo scutil --set HostName $(hostname)

例如:

sudo hostname yg-mac
sudo scutil --set LocalHostName $(hostname)
sudo scutil --set HostName $(hostname)

 

 

参考推荐

Mac Terminal 用颜色显示不同类型文件

Mac OS X 系统命令查看系统版本号

Mac 系统快捷键大全

Mac 电脑锁屏快捷方法

Mac brew 安装软件

Sublime 实用快捷键(Mac版)

Mac 高效程序猿开发必备软件