问题描述:

在不设置DNS时,本机终端主机名显示为MAC地址。设置DNS为8.8.8.8时,本机终端主机名显示为zz

原因:

MacOs确定主机名是按照如下顺序:

1. 从以下文件中读取: /etc/hostconfig

2. 从以下系统配置项读取:/Library/Preferences/SystemConfiguration/preferences.plist中的System ▸ System ▸ HostName

3. 由本机IP地址的反向DNS查询获取

4. 从以下系统配置项读取:/Library/Preferences/SystemConfiguration/preferences.plist中的System ▸ Network ▸ HostNames ▸ LocalHostName

5. 如果以上方法都没获取到,就简单地定为localhost

本机中,第1,2两项都未设置,第4项设置为:正正的MacBookPro。且由于更换DNS会导致主机名不同,所有可以推测是从第3项获取的主机名。对IP地址进行反向DNS查询,结果如下:

(base)  zz@zz  ~  nslookup 192.168.31.202
Server:         192.168.31.1
Address:        192.168.31.1#53

202.31.168.192.in-addr.arpa     name = f4d4887f3038.

# 使用8.8.8.8谷歌DNS服务器
(base)  zz@zz  ~  nslookup 192.168.31.202 8.8.8.8
Server:         8.8.8.8
Address:        8.8.8.8#53

** server can't find 202.31.168.192.in-addr.arpa: NXDOMAIN

解决:

- 在第1,2项设置主机名,在IP解析之前就确定主机名

- 替换第3项的DNS服务器为8.8.8.8,这样会使得IP解析不出主机名,就可以沿用第4项的主机名

在实际情况中,由于需要连接VPN做远程处理,所以不可以随意更换DNS服务,更换DNS地址会导致某些工作使用的地址无法连接,所以这里将使用第一种方法。

使用scutil查看和设置主机名:

# 查看
scutil --get HostName  主机名(第2项)
scutil --get LocalHostName  本地主机名(第四项)
scutil --get ComputerName  电脑名

# 设置
sudo scutil --set HostName zz

注意:

系统偏好设置>共享 中可在界面进行设置电脑名和本地主机名。主机名需要使用命令行进行设置。

参考:

  1. Mac OS X主机名称变化 (shengbin.me)

  2. MacOS 修改主机名 hostname ComputerName_macos ventura hostname-CSDN博客