必须以管理员权限编辑hosts文件:Windows用管理员记事本打开C:\Windows\System32\drivers\etc\hosts,macOS用sudo nano /etc/hosts,Linux用sudo vim /etc/hosts或echo命令追加,均需英文空格分隔IP与域名,并刷新DNS缓存验证生效。

你需要在不依赖第三方工具(如PowerToys、火绒、Listary)的前提下,直接编辑系统 hosts 文件来实现域名重定向、广告屏蔽或本地开发映射,就必须绕过图形界面权限陷阱,用原生系统能力完成读写操作。
Windows 系统:管理员记事本直编法
第一步:按下 Win + R 打开运行框,输入 notepad,然后按住 Ctrl + Shift 不放再按 Enter;弹出用户账户控制(UAC)提示时,点击“是”——这一步必须做,否则记事本无权写入 C:\Windows\System32\drivers\etc 目录。
第二步:在记事本中点击【文件】→【打开】,地址栏粘贴路径:C:\Windows\System32\drivers\etc\,回车进入。
第三步:将右下角“文件类型”下拉菜单改为所有文件 (*.*),否则 hosts 文件会被隐藏——它没有扩展名,普通视图下根本看不到。
第四步:双击选中 hosts 文件打开,滚动到底部,在最后一行后另起一行,输入格式为:IP地址[英文空格]域名,例如:127.0.0.1 dev.local。注意:不能用中文空格、不能用制表符替代空格、不能在末尾加.txt。
第五步:按 Ctrl + S 保存。若提示“无法保存到该位置”,说明提权失败或路径输错;若弹出另存为窗口,请确认“文件名”栏里填的是hosts(不含任何扩展名),编码选ANSI或UTF-8 无BOM。
macOS 系统:终端 nano 编辑法
打开“终端”应用(可用 Spotlight 搜索:Command + 空格 → 输入 terminal → 回车),执行以下命令:
sudo nano /etc/hosts
输入当前管理员密码(输入时屏幕无反馈,属正常现象);光标自动停在文件末尾空白行,直接键入新条目,例如:0.0.0.0 tracking.example.com;IP 与域名之间用英文空格分隔。
按 Control + O 保存,回车确认文件名;再按 Control + X 退出 nano 编辑器。
【必须执行】 修改完成后立即刷新 DNS 缓存,否则修改不生效:运行 sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder。
Linux 系统:sudo vim 追加法
方法一:交互式追加(推荐新手)
在终端中执行:sudo vim /etc/hosts,输入密码后进入只读模式;按 i 进入插入模式;用方向键移至文件末尾,新增一行,格式同上;编辑完按 Esc 退出插入模式;输入 :wq 回车保存并退出。
方法二:单行命令追加(防误删)
直接运行:echo "127.0.0.1 test.dev" | sudo tee -a /etc/hosts。这条命令会把新条目安全追加到文件末尾,不会覆盖原有内容,也无需进入编辑器。
刷新 DNS 缓存取决于发行版:Ubuntu/Debian 系统执行 sudo systemd-resolve --flush-caches 或 sudo systemctl restart systemd-resolved;CentOS/RHEL 请用 sudo systemctl restart nscd 或 sudo rndc flush(若启用 BIND)。
修改后验证是否生效
在命令行中执行:ping -c 1 dev.local(macOS/Linux)或 ping dev.local(Windows),观察返回的 IP 是否为你在 hosts 中指定的地址。
如果返回的是真实公网 IP 或提示“找不到主机”,说明 hosts 未生效——大概率是 DNS 缓存未清、文件保存路径错误、或空格用了全角字符。
执行 ipconfig /flushdns(Windows)、sudo dscacheutil -flushcache(macOS)或对应 Linux 刷新命令后重试。

















