您当前的位置:首页 > 操作系统

系统Hosts文件原理应用和修改方法指南

Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。

Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。Hosts的请求级别比DNS高。

hosts文件在不同操作系统中的位置

如下所示:

  • Windows:%SystemRoot%\System32\drivers\etc\hosts
  • Android:/etc/hosts(指向/system/etc/hosts的符号链接)
  • iOS:/etc/hosts(指向/private/etc/hosts的符号链接)
  • Mac OS X 10.0–10.1.5:通过NetInfo或niload设置
  • Mac OS X 10.2和更新版本:/etc/hosts(指向/private/etc/hosts的符号链接)
  • Unix、类Unix系统(例如Linux等):/etc/hosts
  • Windows Mobile、Windows Phone:注册表项HKEY_LOCAL_MACHINE\Comm\Tcpip\Hosts
  • Symbian OS 6.1–9.0:C:\system\data\hosts
  • Symbian OS 9.1+:C:\private\10000882\hosts

编辑修改以上目录下的hosts文件。目前实现方式有多种形式,最简答的方式就是使用管理员权限直接修改hosts文件。

hosts文件格式

格式要求:每行一个映射规则,格式为:IP地址 域名(中间用空格分隔),注释以#开头。

示例:hosts文件内容

# 本地主机
127.0.0.1 localhost
::1 localhost

# 本地开发
127.0.0.1 myapp.local

# 屏蔽广告网站
0.0.0.0 ad.example.com

# 自定义服务器
192.168.1.10 example.com
192.168.1.20 nav.example.com  # 我的导航
192.168.1.30 pan.example.com  # 网盘下载

# Periscope Start
13.124.246.138	pscp.tv
13.124.203.13  	www.pscp.tv
# Periscope End

域名解析流程

系统Hosts文件原理和应用

Hosts具体作用

虚拟域名

很多时候,网站建设者需要把”软环境“搭建好,再进行上传调试。但类似于邮件服务,则需要使用域名来辅助调试,这时就可以将本地 IP 地址与一个”虚拟域名“做地址指向,就可以达到要求的效果,且无需花费。

如:

127.0.0.1 www.gg.com
#之后在当前设备浏览器地址栏中输入www.gg.com的网站域名即可指向IP 127.0.0.1

加快域名解析

对于要经常访问的网站,我们可以通过在Hosts中配置域名和IP的映射关系,提高域名解析速度,当我们输入域名计算机就能很快解析出IP,而不用请求网络上的DNS服务器。

屏蔽网站(域名重定向)

有很多网站不经过用户同意就将各种各样的插件安装到你的计算机中,其中有些说不定就是木马或病毒。

对于这些网站我们可以利用 Hosts 把该网站的域名映射到错误的IP或本地计算机的IP,这样就不用访问了。在WINDOWS系统中,约定 127.0.0.1 为本地计算机的IP地址, 0.0.0.0是错误的IP地址。

如果,我们在Hosts中,写入以下内容:

127.0.0.1 # 要屏蔽的网站 A
0.0.0.0 # 要屏蔽的网站 B

如:
127.0.0.1 www.hao123.com
127.0.0.1 www.baidu.com

这样,计算机解析域名A和 B时,就解析到本机IP或错误的IP,达到了屏蔽网站A和网站B的目的。

方便局域网用户

在很多单位的局域网中,会有服务器提供给用户使用。但由于局域网中一般很少架设DNS服务器,访问这些服务器时,要输入难记的IP地址。这对不少人来说相当麻烦。可以分别给这些服务器取个容易记住的名字,然后在Hosts中建立IP映射,这样以后访问的时候,只要输入这个服务器的名字就行了。

顺利连接系统

对于Lotus的服务器和一些数据库服务器,在访问时如果直接输入IP地址那是不能访问的,只能输入服务器名才能访问。那么我们配置好Hosts文件,这样输入服务器名就能顺利连接了。

强制域名解析指定IP

比如一些网站有很多的服务器ip,有些ip可能被和谐了,那么我们可以在hosts文件里添加我们想要的ip跟域名。

# Periscope Start
13.124.246.138	pscp.tv
13.124.203.13  	www.pscp.tv
# Periscope End

Windows系统下hosts文件修改

在Windows系统中修改Hosts文件是网络配置的常见操作,用于域名解析、屏蔽广告或本地开发测试。

Hosts文件路径:C:\Windows\System32\drivers\etc\hosts

  • %windir%\System32\Drivers\Etc\Hosts
  • %SystemRoot%\System32\drivers\etc\hosts

在Windows操作系统中,%windir%%SystemRoot%是两个等效的环境变量,均用于指向当前Windows系统的安装根目录。
若Hosts文件不可见,需在文件资源管理器中勾选启用显示隐藏文件隐藏的项目选项。

方法1:使用记事本编辑(适合批量操作)

操作步骤:

  • 使用快捷键Win+S,搜索记事本
  • 右键单击记事本,选择以管理员身份运行
  • 在记事本中点击文件 > 打开,在下方文件名(N):处粘贴hosts文件路径:%windir%\System32\drivers\etc\hosts,点击打开按钮(推荐
    • 或在上方地址栏中输入C:\Windows\System32\drivers\etc\路径,回车进入文件夹。选择所有文件(*.*)类型,打开hosts文件。
  • 保存文件:按Ctrl+S保存。若提示权限不足,或文件另存为,请确认记事本,是否以管理员身份运行

方法2:CMD命令行,添加映射

在管理员权限的CMD中执行:notepad C:\Windows\system32\drivers\etc\hosts,这样就成功地以管理员身份打开了hosts文件,就可以正常编辑,做粘贴,复制等操作了。

在管理员权限的CMD中执行:echo 192.168.1.100 myname.local >> %windir%\System32\drivers\etc\hosts(适合新增)

高级图形化软件工具修改

SwitchHosts

SwitchHosts是一款适用于MacOS、Linux和Windows系统管理hosts文件的应用,基于Electron、React、Jotai、Mantine等技术开发。

官网:http://switchhosts.vercel.app/、https://switchhosts.app/zh

项目地址:https://github.com/oldj/SwitchHosts/

Hosts File Editor

简化hosts文件管理Hosts File Editor

清空刷新DNS缓存

Windows下命令行执行:ipconfig /flushdns

  • 在CMD命令提示符窗口下,输入ipconfig /flushdns然后按Enter回车执行命令,将重新加载Hosts文件。提示已成功刷新DNS解析缓存后生效,无需重启计算机或服务器。

macOS下执行命令:sudo killall -HUP mDNSResponder

如果你使用Chrome浏览器,那么可以访问:chrome://net-internals/#dns,然后点击「Clear host cache」按钮来清空浏览器里的DNS缓存。

如果这样还不生效,那么只能再试试重启电脑了,一般都OK了。要这样还是不行,可能就是你的hosts写错了。

测试验证是否生效

使用Ping命令验证,执行ping pan.example.com(根据实际情况,修改需要Ping后面的访问域名)命令,若返回指定IP(如:192.168.1.30),则表示映射成功。

常见问题与解决方案

无法保存文件、拒绝访问

  • 原因:未以管理员身份运行,或文件被防病毒软件锁定。
  • 解决:
    • 确保以管理员身份运行以管理员身份运行记事本、编辑器或CMD命令提示符下。
    • 临时关闭防病毒软件,或添加hosts文件到例外列表。

修改后未生效

原因:DNS缓存未刷新,或浏览器缓存了旧解析。

解决:

  • 在CMD命令提示符窗口下,输入ipconfig /flushdns然后按Enter回车执行命令,将重新加载Hosts文件。提示已成功刷新DNS解析缓存后生效。
  • 重启浏览器或清空DNS缓存。

文件被占用

  • 原因:某些程序(如防病毒软件)锁定了hosts文件。
  • 解决:关闭可能占用文件的程序,或重启系统后修改。

格式错误

  • 原因:IP与域名间缺少空格,或存在其他非法字符。
  • 解决:检查每行格式,确保为IP地址 域名(无多余空格)。

注意事项

  1. 备份原始文件:修改前做好hosts文件备份,可复制到其他目录,以防出错。
  2. 避免频繁修改:可能导致系统不稳定,建议使用DNS服务器或代理服务器替代频繁操作。
  3. 检查拼写和语法:确保IP和域名无拼写错误,避免非法字符。

参考资料:

  • Windows系统hosts文件修改指南:步骤、问题与工具,https://comate.baidu.com/zh/page/zbrklcdtlws
  • 如何编辑系统hosts 文件并保存,https://learn.microsoft.com/zh-cn/answers/questions/2530102/hosts
错误报告

📑 文章目录