在mac上修改/etc/hosts需管理员权限,可用nano、vim、sed/tee、finder+文稿编辑四种方法添加域名映射,最后须执行dscacheutil与killall命令刷新dns缓存方可生效。

如果您在Mac上需要将特定域名映射到指定IP地址,例如用于本地开发测试或屏蔽广告域名,则必须修改系统级的hosts文件。该文件位于/etc/hosts,受系统权限保护,普通用户无法直接写入。以下是多种安全、可操作的配置方法:
一、使用nano编辑器修改hosts文件
nano是macOS预装的交互式文本编辑器,界面底部实时显示快捷键提示,适合初次接触终端的用户,避免误操作导致文件损坏。
1、按下 Command + 空格键唤出 Spotlight 搜索,输入“终端”,回车打开应用。
2、在终端中输入命令:sudo nano /etc/hosts,回车后输入当前管理员密码(输入过程无可见字符,属正常现象)。
3、使用方向键将光标移至文件末尾空白行处。
4、输入新条目,格式为:IP地址 域名(IP与域名之间至少用一个空格分隔),例如:127.0.0.1 test.local。
5、按 Control + O 保存,回车确认文件名;再按 Control + X 退出编辑器。
二、使用vim编辑器修改hosts文件
vim采用模式化操作机制,支持精准定位与结构化编辑,适用于熟悉vi/vim基础命令的用户,可绕过图形界面权限弹窗干扰,全程在终端内完成。
1、在终端中执行命令:sudo vim /etc/hosts,输入管理员密码后进入只读视图。
2、按 i 键进入插入模式,在文件末尾添加新行,例如:0.0.0.0 ads.example.com。
3、编辑完成后,按 Esc 键退出插入模式,返回命令模式。
4、输入 :wq 并回车,完成保存并退出 vim。
三、使用sed或tee命令追加hosts条目
该方式为非交互式操作,适用于脚本化部署或多条目批量写入场景,避免手动编辑引发的格式错误或权限中断问题,且不依赖编辑器启动流程。
1、在终端中执行命令:echo "192.168.1.50 devserver.local" | sudo tee -a /etc/hosts,回车后输入管理员密码。
2、如需追加多行,可先将多条记录写入临时文件,再运行:sudo cat temp_hosts >> /etc/hosts 完成合并。
3、执行完毕后,运行 tail -n 3 /etc/hosts 检查文件末尾是否已正确写入目标映射行。
四、通过Finder图形界面配合文本编辑器修改
该方法面向不熟悉终端命令的用户,借助访达定位文件路径,再用系统自带的“文稿编辑”打开并修改,降低语法错误与权限误设风险。
1、打开访达(Finder),按下 Shift + Command + G 快捷键调出“前往文件夹”窗口。
2、输入 /etc 并点击“前往”。
3、在该目录中找到 hosts 文件,右键选择“显示简介”,点击右下角锁图标解锁,勾选“现在忽略此项目的权限”。
4、右键 hosts 文件,选择“用文稿编辑打开”,在文档末尾添加新映射行,例如:::1 localhost6。
5、保存文件后,在终端中运行:sudo chmod 644 /etc/hosts 恢复标准权限。
五、刷新DNS缓存使修改立即生效
macOS系统DNS解析服务会缓存旧记录,若不强制清除,新hosts规则可能无法即时响应,导致ping或浏览器访问仍指向原IP。
1、在终端中输入命令:sudo dscacheutil -flushcache,回车后输入管理员密码。
2、继续输入命令:sudo killall -HUP mDNSResponder,强制重启多播DNS响应服务。
3、验证生效:运行 ping -c 1 test.local,若返回对应IP(如127.0.0.1)且无超时,则说明配置成功。











