帮助中心 >
  关于网络安全 >
  手动修改Hosts文件能解决DNS污染吗?教程与注意事项

手动修改Hosts文件能解决DNS污染吗?教程与注意事项

时间 : 2026-09-09 16:35:13
编辑 : DNS.COM

  明明网站本身是正常运行的,但在本地却打不开,或者访问速度极慢,甚至被跳转到不相关的页面——这种情况,很可能就是DNS污染在作祟。对于这类问题,修改Hosts文件是一个操作简单且效果直接的解决方案。下面详细讲解Hosts文件为什么能绕过DNS污染,以及具体的操作步骤和注意事项,照着做就能自己搞定。

  先搞清楚原理:为什么Hosts文件能绕过DNS污染?

  要理解这个问题,先要知道域名解析的流程。正常情况下,当我们在浏览器输入一个网址,系统会先向DNS服务器查询这个域名对应的IP地址,拿到IP之后才能访问网站。

  而Hosts文件的作用,相当于一个本地的“电话簿”或“字典”。操作系统在进行DNS请求之前,会先检查Hosts文件里有没有这个域名的映射关系。如果有,就直接用里面写的IP地址,不再去问外部的DNS服务器。

  也就是说,Hosts文件的请求优先级比DNS更高。DNS污染的本质是外部DNS服务器返回了错误的IP地址,而修改Hosts文件之后,系统直接跳过DNS这一步,自然就不受污染影响了。

  但有一个限制必须知道:Hosts文件只能绕过DNS污染这一关。如果目标网站本身的IP被直接封锁(比如GFW的IP封锁),数据包在传输途中就会被拦截,即使Hosts里写了正确的IP,照样访问不了。所以修改Hosts文件主要适用于“DNS被污染但IP本身没被封”的情况。

  准备工作:动手之前先确认几件事

  在开始操作之前,有几个前提条件需要先搞定:

  找到正确的IP地址——这是最关键的一步。 如果你写入的IP本身不对,即使改了Hosts文件,网站依旧打不开。可以通过海外服务器ping目标域名,或者用可信的在线解析平台查询域名的真实IP。

  需要管理员权限。修改Hosts文件涉及系统目录,Windows下需要以管理员身份运行编辑器,Linux或macOS下需要使用sudo命令。

  建议用纯文本编辑器。Windows用记事本就够,macOS用TextEdit(纯文本模式),Linux用nano或vim。不要用Word这类富文本编辑器,以免文件被错误保存或引入隐藏格式字符。

  具体操作步骤

  Windows系统

  第一步:以管理员身份运行记事本

  在搜索栏输入“记事本”,右键点击,选择“以管理员身份运行”。

  第二步:打开Hosts文件

  在记事本中点击“文件”→“打开”,输入路径C:\Windows\System32\drivers\etc\hosts,文件类型选择“所有文件”,就能看到hosts文件了。

  第三步:添加域名和IP映射

  在文件末尾添加一行新内容,格式是“IP地址 + 空格/Tab + 域名”:

203.0.113.10   www.example.com
203.0.113.11   example.com

  注意:一行只写一组映射,IP和域名之间至少有一个空格或Tab。要屏蔽某个网站,可以把它指向127.0.0.1(本机)或0.0.0.0(无效地址)。

  第四步:保存退出

  保存时如果提示权限问题,说明没有以管理员方式运行记事本,关掉重新按第一步操作。

  第五步:刷新DNS缓存

  打开命令提示符(管理员模式),输入:

ipconfig /flushdns

  确保系统立即使用新的Hosts规则,否则缓存里的旧记录可能还生效。

  Linux系统

  第一步:打开终端

  第二步:用sudo编辑Hosts文件

sudo nano /etc/hosts

  或者用vim:

sudo vim /etc/hosts

  第三步:在文件末尾添加映射

  格式跟Windows一样:IP地址 域名

  第四步:保存退出

  nano按Ctrl+O保存,Ctrl+X退出。vim按:wq保存退出。

  第五步:刷新DNS缓存

  不同发行版命令不同:

# Ubuntu/Debian(使用systemd-resolved)
sudo systemd-resolve --flush-caches

# 或重启网络管理服务
sudo systemctl restart network-manager

  macOS系统

  第一步:打开终端

  第二步:用sudo编辑Hosts文件

sudo nano /etc/hosts

  第三步:添加映射

  在末尾添加IP地址 域名。

  第四步:保存退出

  第五步:清空DNS缓存

sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

  修改Hosts文件能彻底解决DNS污染吗?

  不能完全根治,但在特定场景下非常有效。

  优势在于:Hosts文件的优先级高于DNS,一旦配置正确,访问该域名时完全绕过外部DNS,污染再严重也不受影响。而且配置简单、实时生效,不需要额外装软件,针对单个顽固站点的访问修复非常实用。

  局限性也很明显:

  IP地址会变:尤其是使用CDN加速的网站,IP可能随时变动。如果IP变了,Hosts里写的还是旧地址,网站就打不开了,需要手动更新。

  只对本机生效:改了Hosts文件只影响你自己这台电脑,同一网络里的其他设备不受影响。

  维护成本高:如果靠Hosts访问很多个网站,每一个都需要手动维护IP,时间长了容易乱。

  治标不治本:DNS污染的根源在DNS服务器层面,修改Hosts只是“绕过去”,并没有真正解决污染问题。

  如果频繁遇到DNS污染,更好的长期方案是换用加密DNS(如DoH/DoT),或者直接换公共DNS(如8.8.8.8、1.1.1.1)。

  几个容易踩的坑

  1. IP来源不可靠。网上很多人分享所谓的“优化版Hosts”,但里面可能夹带恶意条目,把你引导到钓鱼网站。务必确保IP来源可靠。

  2. 忘记备份原文件。修改之前最好复制一份Hosts文件做备份,万一改错了或者想还原,直接覆盖回来就行。

  3. 格式错误导致域名无法访问。每行必须严格遵循“IP 域名”格式,不要有多余的符号。如果格式错了,系统会跳过这行解析,严重情况下可能影响整个域名解析过程。

  4. 只改文件不清缓存。改了Hosts之后不刷新DNS缓存,系统可能还用旧记录,改了等于白改。Windows用ipconfig /flushdns,macOS用dscacheutil -flushcache。

  总结:修改Hosts文件能解决DNS污染,核心原理是利用Hosts优先级高于DNS这一机制,强制将域名指向正确的IP地址,绕过被污染的DNS服务器。但它是针对特定网站的局部解决方案,不是根治手段——适合应急访问、本地开发测试,以及少量固定IP站点的长期使用。

  正确的做法是:先用可靠渠道获取目标域名的真实IP,用管理员权限编辑Hosts文件添加映射,保存后刷新DNS缓存让配置生效。如果目标网站的IP本身被封锁,Hosts也救不了,那得换别的方案了。

DNS Anna
DNS Amy
DNS NOC
标题
电子邮件地址
类型
信息
验证码
提交