如何编辑hosts文件(Windows、Mac、Linux通用)

按顺序完成以下步骤,安全地编辑你的hosts文件。

  1. 了解hosts文件的作用

    hosts文件是一个将域名直接映射到IP地址的纯文本文件,操作系统在查询DNS服务器之前,会最先检查这个文件。在其中添加一条记录后,访问对应域名时就会跳过DNS查询,直接连接到指定的IP地址,这在搭建本地开发环境或屏蔽特定网站时非常有用。

  2. 找到各操作系统上hosts文件的位置

    Windows系统中位于"C:\Windows\System32\drivers\etc\hosts",Mac和Linux系统中位于"/etc/hosts"。它没有文件扩展名,是纯文本文件,可以直接用记事本或终端编辑器打开修改。

  3. 以管理员权限打开编辑器

    hosts文件是受系统保护的文件,普通权限无法保存修改。在Windows上需要先"以管理员身份运行"记事本再打开文件;在Mac和Linux上,需要在终端中使用类似"sudo nano /etc/hosts"这样的提权命令打开,保存才能真正生效。

  4. 按照正确格式添加条目

    每一行的格式为"IP地址 [空格] 域名"。例如输入"127.0.0.1 myproject.local",访问myproject.local时就会连接到你自己的电脑(127.0.0.1)。以"#"开头的行会被当作注释而不生效,请注意不要不小心删除了文件中原有的默认条目。

  5. 保存后验证是否生效

    保存文件后,在浏览器中访问该域名,确认是否连接到了你指定的IP地址。由于浏览器或操作系统有时会缓存旧的DNS结果,如果没有立即生效,可以尝试重启浏览器或清除DNS缓存后再试一次。

  6. 应用场景一:本地开发域名映射

    如果你想用一个接近真实域名的地址在本地测试正在开发的网站,可以注册类似"127.0.0.1 myapp.test"这样的条目,这样就能在浏览器地址栏中输入接近真实服务的名称,同时实际连接到本地服务器。

  7. 应用场景二:屏蔽特定网站

    将想要屏蔽的域名注册为"0.0.0.0 域名"或"127.0.0.1 域名",可以让访问该网站的请求失败。这种方法也常用于批量注册广告域名以减少广告展示,但条目一多管理就会变得繁琐,因此很多人会同时搭配专门的广告屏蔽工具使用。

  8. 注意事项:恶意软件可能篡改hosts文件

    部分恶意软件会偷偷篡改hosts文件,把银行或门户网站的域名指向伪造的IP地址,用于钓鱼攻击。如果发现某个网站访问异常,或浏览器频繁弹出安全警告,首先应该检查一下hosts文件中是否被添加了陌生的条目。

  9. 各系统清除DNS缓存的方法

    Windows上打开命令提示符,运行"ipconfig /flushdns"。macOS上常用的命令是"sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder",不同版本可能略有差异。Linux上如果使用systemd-resolved,可以用"resolvectl flush-caches"清除;没有本地缓存的发行版则不需要这一步。浏览器自己也会保留短时缓存,完全关闭浏览器再打开是一个可靠的额外步骤。

  10. 用对工具来验证结果

    用"ping myproject.local"可以确认域名是否解析到你写的IP,因为ping走的是系统解析器,会读取hosts文件。而"nslookup"和"dig"默认直接查询DNS服务器,会跳过hosts文件,显示的是公开记录,容易让人误以为修改没有生效。知道哪个工具会读取hosts,可以避免很多虚惊一场。

  11. 需要时同时添加IPv4和IPv6

    如果目标网站还有IPv6地址,即使你只改了IPv4的那一行,电脑仍可能通过IPv6路径访问。想要完整地屏蔽或重定向,就再加一行使用IPv6地址的条目,例如指向本机时写"::1 域名"。默认文件里已经有IPv4和IPv6两种写法的localhost行,应当保留。

  12. 一行写多个域名,以及hosts做不到的事

    同一个IP后面可以用空格隔开写多个主机名,例如"127.0.0.1 app.test api.test"。hosts文件也有局限:它不支持"*.example.com"这样的通配符,每个子域名都要单独一行;它也只能把名字对应到IP地址,不能指定端口,所以端口3000上的本地网站仍要写成"http://app.test:3000"。需要通配符或按端口分流时,本地DNS工具或反向代理更合适。

  13. 备份并为改动加注释

    第一次编辑前,把原文件复制一份,命名为"hosts.bak"之类。在每条新增条目的上方用"#"写一行注释,注明用途和日期。一个被多人、多种工具长期修改过的文件,如果没有这些备注,就很难整理。

编辑hosts文件时常见的错误

最常见的问题是没有以管理员(或root)权限打开编辑器就尝试保存,有些编辑器会静默保存失败,有些则会直接报权限错误——所以第一步一定要确认编辑器是以提权方式启动的。另一个常见错误是在已有的行中不小心留下了错字或多余的域名,这可能会意外屏蔽或重定向你原本无意影响的网站,因此建议检查整个文件而不只是新增的那一行。把域名写在IP地址前面,这一行同样会被忽略。

如何撤销修改

如果新增的条目引发了意外问题,可以直接删除你添加的那一行,或者在大多数系统上恢复为默认的hosts文件内容(通常只有寥寥几行关于loopback和localhost的记录)并保存。在第一次编辑前先备份一份原始文件,遇到问题时就能很方便地恢复。

hosts文件不适用的场合

hosts文件只对它所在的这台电脑有效。如果希望整个家庭网络里的设备都采用同样的行为,使用支持本地DNS记录的路由器或全网络的DNS过滤会更合适。条目超过几十条后,管理也会变得困难。另一方面,它很适合在网站迁移到新服务器后做测试:只在自己的电脑上把正式域名指向新服务器的IP,测试完再删除这一行。用完一定要删,否则旧条目会让你悄悄地继续连向可能日后被关停的服务器。

安全方面的提醒

因为这个文件优先于DNS,能编辑它的人就能悄悄改变你的流量去向。请保持默认权限,不要以管理员身份运行来路不明的脚本,对来源不明的长列表条目也要谨慎。有些系统和安全软件会在文件被修改时提醒你,如果这不是你自己改的,这就是一个有用的信号。

常见问题

为什么编辑hosts文件后好像没有生效?

最常见的原因是没有以管理员(或root)权限打开编辑器,导致保存静默失败。另外也要检查浏览器或操作系统是否仍在使用修改前缓存的DNS结果,重启浏览器或清除DNS缓存通常可以解决这个问题。

用hosts文件屏蔽广告安全吗?

这是一种被广泛使用的常见方法,但手动维护大量广告域名条目会随着时间推移变得繁琐,偶尔还可能连带影响到与该域名共享服务器的其他无关服务。如果需要更彻底的广告屏蔽,专门的广告屏蔽扩展或基于DNS的屏蔽工具通常更容易维护。

编辑hosts文件后需要重启电脑吗?

通常不需要。修改会在下一次解析时被读取,关闭并重新打开浏览器、清除DNS缓存一般就足够了。

手机上能用hosts文件吗?

一般方式不行。手机默认锁定系统文件,要编辑需要获取root或越狱,会带来安全风险。基于DNS的屏蔽应用或本地DNS设置是更安全的做法。

已经屏蔽了,为什么网站还能打开?

请检查是否有缓存的解析结果、同一网站的其他IPv6地址、浏览器自己的安全DNS设置,或域名写错了。也可以重新打开文件,确认已经保存成功。