15%

全场主机优惠15%

测试技能,享折扣

使用代码:

Skills
开始使用
25.10.2024
2 +2

Hosts文件:它是什么、在哪里找到它以及如何在任何操作系统上编辑它

您的本地 DNS 覆盖 — 无需互联网

每次您在浏览器中输入域名时,您的计算机都会悄悄运行一个查找过程,将该名称转换为 IP 地址。但在联系外部 DNS 服务器之前,它会检查一个安静地存放在本地系统中、常被忽视的小型文本文件:hosts 文件

这个文件是开发人员、系统管理员和高级用户都可以使用的最强大且最被低估的工具之一。它让您可以手动将域名映射到 IP 地址——即时、本地完成,无需触碰您的路由器或 DNS 提供商。无论您是在网站上线前进行测试、屏蔽广告服务器,还是排查 DNS 传播问题,hosts 文件都能让您直接、底层地控制机器解析域名的方式。

在本指南中,您将了解 hosts 文件究竟是什么,在 Windows、macOS 和 Linux 上的位置,以及如何安全有效地编辑它。

什么是 Hosts 文件?

hosts 文件是一个纯文本系统文件,用于将主机名(域名)映射到 IP 地址。它早于现代 DNS 系统,最初是 ARPANET 上用于解析名称的唯一机制。如今,它仍作为本地 DNS 覆盖层发挥作用——您的操作系统在进行任何外部 DNS 查询之前会首先检查它。

工作原理

当您访问一个网站时,您的操作系统按以下顺序进行解析:

  1. 检查本地 hosts 文件中是否有匹配条目
  2. 查询本地 DNS 缓存
  3. 联系已配置的 DNS 解析器(例如,您的 ISP 的 DNS 或公共解析器,如 8.8.8.8)

如果 hosts 文件包含匹配条目,查找过程就会在此停止,不会进行外部 DNS 查询。这使其速度极快,非常适合本地覆盖。

Hosts 文件的常见使用场景

使用场景工作方式
本地网站测试将域名指向 127.0.0.1 或暂存服务器 IP
屏蔽不需要的网站将广告或追踪域名重定向到 0.0.0.0
绕过 DNS 传播延迟为新迁移的域名手动设置 IP
开发环境路由将自定义本地域名映射到 Docker 容器或虚拟机
覆盖错误的 DNS 条目在 DNS 配置错误时强制使用正确的 IP

> 开发者专业提示:如果您正在运行本地开发环境,或在 DNS 传播完成之前在 VPS 托管服务器上测试网站,编辑 hosts 文件是预览线上网站而无需更改 DNS 设置的最快方式。

Hosts 文件在哪里?

hosts 文件的位置因操作系统而异。以下是快速参考:

Windows

C:WindowsSystem32driversetchosts

macOS

/etc/hosts

Linux(所有主要发行版)

/etc/hosts

在 macOS 和 Linux 上,/etc/hosts 通常是系统管理的符号链接或直接文件。在使用 systemd-resolved 的 Linux 发行版上,该文件仍对本地覆盖具有优先权。

如何在 Windows 上编辑 Hosts 文件

在 Windows 上编辑 hosts 文件需要管理员权限。该文件受系统保护,标准用户账户无法修改它。

第一步:以管理员身份打开记事本

  1. Windows 键 + S,在搜索栏中输入 Notepad
  2. 右键单击搜索结果中的记事本
  3. 选择以管理员身份运行
  4. 如果用户账户控制(UAC)提示,点击

第二步:打开 Hosts 文件

  1. 在记事本中,点击文件 → 打开
  2. 导航到:C:WindowsSystem32driversetc
  3. 文件类型下拉菜单(文件名字段旁边)中,将其从 Text Documents (*.txt) 更改为所有文件 (*.*)
  4. 选择名为 hosts 的文件,然后点击打开

第三步:添加或修改条目

每个条目的格式很简单:

[IP Address]    [Hostname]

在文件底部添加您的条目。例如:

# Redirect example.com to local development server
127.0.0.1       example.com

# Point testsite.com to a staging VPS
192.168.1.100   testsite.com

# Block an ad network
0.0.0.0         ads.unwanteddomain.com

# 开头的行是注释,系统会忽略它们。

第四步:保存文件

点击文件 → 保存。如果收到权限错误,请确保您以管理员身份打开了记事本。不要将文件保存为 .txt 扩展名。

第五步:刷新 DNS 缓存

保存后,刷新 DNS 缓存以使更改立即生效:

  1. 以管理员身份打开命令提示符
  2. 运行以下命令:
ipconfig /flushdns

您应该会看到消息:*”已成功刷新 DNS 解析器缓存。”*

如何在 macOS 上编辑 Hosts 文件

在 macOS 上,hosts 文件通过终端使用具有 sudo(超级用户)权限的文本编辑器进行编辑。

第一步:打开终端

Command + Space 打开 Spotlight 搜索,输入 Terminal,然后按 Enter

第二步:使用 nano 打开 Hosts 文件

运行以下命令:

sudo nano /etc/hosts

在提示时输入您的管理员密码。输入时密码不会显示——这是正常现象。

第三步:编辑文件

nano 文本编辑器将打开 hosts 文件。使用方向键导航到文件底部并添加您的条目:

# Development environment
127.0.0.1       myproject.local

# Staging server
203.0.113.45    staging.example.com

# Block tracking domain
0.0.0.0         tracker.example.net

第四步:保存并退出

  • Control + O 写入(保存)文件
  • Enter 确认文件名
  • Control + X 退出 nano

第五步:在 macOS 上刷新 DNS 缓存

根据您的 macOS 版本运行相应命令:

macOS Monterey、Ventura、Sonoma(及大多数现代版本):

sudo killall -HUP mDNSResponder

macOS Big Sur 及更早版本(替代方案):

sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

您的更改现在将在整个系统范围内生效。

如何在 Linux 上编辑 Hosts 文件

Linux 遵循与 macOS 相同的一般流程,因为两者都是基于 Unix 的系统。您需要 root 或 sudo 访问权限

第一步:打开终端

启动您的终端应用程序。在大多数桌面环境中,您可以在应用程序菜单中找到它,或按 Ctrl + Alt + T

第二步:打开 Hosts 文件

sudo nano /etc/hosts

在提示时输入您的 root 或 sudo 密码。

第三步:添加您的条目

导航到文件底部并添加您的自定义映射:

# Local dev environment
127.0.0.1       devsite.local

# Internal server
10.0.0.5        internal.company.com

# Block unwanted domain
0.0.0.0         malicious-ads.example.com

第四步:保存并退出

  • Control + O,然后按 Enter 保存
  • Control + X 退出 nano

第五步:在 Linux 上刷新 DNS 缓存

刷新 DNS 的命令因发行版和 DNS 解析器而异:

Ubuntu / Debian(使用 systemd-resolved):

sudo systemd-resolve --flush-caches

或在较新版本上:

sudo resolvectl flush-caches

CentOS / RHEL / Fedora:

sudo systemctl restart NetworkManager

Arch Linux:

sudo systemd-resolve --flush-caches

如果您正在运行自定义 DNS 缓存守护进程,如 nscddnsmasq,请重启相关服务:

sudo systemctl restart nscd
# or
sudo systemctl restart dnsmasq

了解默认 Hosts 文件结构

当您第一次在任何操作系统上打开 hosts 文件时,您会看到一些默认条目。以下是典型的 Linux/macOS hosts 文件开箱即用的样子:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost

关键条目说明:

    127.0.0.1 localhost — 将回环地址映射到”localhost”。这对本地网络至关重要,绝不应删除。
    ::1 localhost — 回环地址的 IPv6 等效项。
    255.255.255.255 broadcasthost — 用于网络广播(macOS 特有)。
    
    切勿删除这些默认条目。这样做可能会破坏本地应用程序网络、数据库连接和其他系统服务。
    编辑 Hosts 文件的最佳实践
    1. 始终先创建备份
    在进行任何更改之前,备份原始文件:
    Linux / macOS:
    sudo cp /etc/hosts /etc/hosts.backup
    Windows(以管理员身份运行命令提示符):
    copy C:WindowsSystem32driversetchosts C:WindowsSystem32driversetchosts.backup
    如果出现问题,您可以立即恢复原始文件。
    2. 使用注释记录您的更改
    始终使用 # 为您的条目添加注释。这在团队或服务器环境中尤为重要:
    # Added 2024-01-15 — Staging environment for client project
    192.168.1.50    staging.clientproject.com
    
    # Temporary block — remove after campaign ends
    0.0.0.0         ads.campaign-tracker.net
    3. 屏蔽域名时使用 0.0.0.0 而非 127.0.0.1
    屏蔽域名时,0.0.0.0 通常优于 127.0.0.1,因为:
    
    它不会尝试连接到您的本地机器
    失败更快(无连接超时)
    不会干扰在 80/443 端口上运行的本地 Web 服务器
    
    4. 不要屏蔽关键系统域名
    屏蔽以下相关域名时请谨慎:
    
    Windows Update 或 macOS 软件更新服务
    防病毒软件更新服务器
    云同步服务(Dropbox、OneDrive、iCloud)
    您使用的软件的许可证验证服务器
    
    5. 保持条目有序
    将相关条目分组,并使用注释标题以提高清晰度:
    # ==========================================
    # LOCAL DEVELOPMENT ENVIRONMENTS
    # ==========================================
    127.0.0.1       myapp.local
    127.0.0.1       api.myapp.local
    
    # ==========================================
    # BLOCKED DOMAINS
    # ==========================================
    0.0.0.0         ads.example.com
    0.0.0.0         tracker.example.net
    6. 记住 Hosts 文件更改仅限本地
    hosts 文件只影响其所在的机器。如果您管理多台服务器或需要在整个基础设施中应用 DNS 更改,则需要在服务器或网络级别配置 DNS。对于管理多个环境的团队,配置了本地 DNS 解析器(如 BIND 或 Unbound)的独立服务器是更具可扩展性的解决方案。
    高级使用场景
    在 DNS 传播之前测试网站
    当您将网站迁移到新的托管提供商或新的带 cPanel 的 VPS 时,DNS 传播可能需要几分钟到 48 小时不等。您无需等待,只需将新服务器的 IP 添加到 hosts 文件中,即可立即测试网站在新服务器上的实际效果:
    # Testing migration to new VPS — remove after DNS propagates
    203.0.113.10    yourdomain.com
    203.0.113.10    www.yourdomain.com
    打开浏览器,导航到 yourdomain.com,您将看到托管在新服务器上的网站——而其他所有人仍然看到旧网站。
    设置本地开发域名
    开发人员通常更喜欢为本地项目使用真实的域名,而不是 localhost:3000。您可以创建自定义本地域名:
    127.0.0.1       myproject.dev
    127.0.0.1       api.myproject.dev
    127.0.0.1       admin.myproject.dev
    将其与配置了虚拟主机的本地 Web 服务器(Apache、Nginx 或 Caddy)配合使用,您就拥有了一个简洁、专业的本地开发环境。
    屏蔽整个广告网络
    您可以添加多个条目来屏蔽已知的广告投放和追踪域名:
    0.0.0.0         doubleclick.net
    0.0.0.0         googlesyndication.com
    0.0.0.0         adservice.google.com
    对于更全面的方法,StevenBlack 的 hosts 项目提供定期更新的综合 hosts 文件,包含数万个被屏蔽的域名。
    常见 Hosts 文件问题排查
    更改未生效
    
    您刷新 DNS 缓存了吗?这是最常见的原因。请运行适合您操作系统的刷新命令。
    您是否正确保存了文件?在 Windows 上,确保您没有意外将其保存为 hosts.txt。
    您的浏览器是否使用了自己的 DNS 缓存?Chrome 和 Firefox 维护各自的 DNS 缓存。尝试清除它们或打开隐私/无痕窗口。
    您是否在使用 VPN?VPN 客户端通常会覆盖本地 DNS 设置,完全绕过 hosts 文件。
    
    权限被拒绝错误
    
    Windows:确保记事本(或您的编辑器)以管理员身份运行。
    Linux/macOS:确保在命令前使用 sudo。
    
    网站仍解析到旧 IP
    
    验证条目格式是否正确:IP_ADDRESS[TAB or SPACES]hostname — 没有 http:// 或尾部斜杠。
    检查域名中是否有拼写错误。
    确认文件中较高位置没有冲突的条目。
    
    意外破坏了某些内容
    恢复您的备份:
    # Linux/macOS
    sudo cp /etc/hosts.backup /etc/hosts
    
    # Windows (as Administrator)
    copy C:WindowsSystem32driversetchosts.backup C:WindowsSystem32driversetchosts
    Hosts 文件与 DNS:何时使用各自
    
    
    
    
    场景
    Hosts 文件
    DNS 配置
    
    
    
    
    在单台机器上快速本地测试
    ✅ 理想
    ❌ 过于复杂
    
    
    团队范围的开发环境
    ❌ 无法扩展
    ✅ 使用内部 DNS
    
    
    在单个设备上屏蔽网站
    ✅ 效果良好
    ❌ 不必要
    
    
    生产域名管理
    ❌ 不适合
    ✅ 必需
    
    
    上线前网站测试
    ✅ 完美
    ❌ 会影响所有用户
    
    
    多服务器基础设施
    ❌ 过于手动
    ✅ 必不可少
    
    
    
    
    对于生产环境,始终通过您的域名注册商或托管控制面板管理 DNS。如果您需要专业地注册或管理域名,通过可靠提供商进行域名注册可确保您的 DNS 记录在互联网上正确、安全地传播。
    同样,如果您正在运行邮件服务器并需要确保正确的电子邮件投递,编辑 hosts 文件并不能替代正确配置的 MX 记录。请探索专用的电子邮件托管解决方案,以获得可靠、配置正确的邮件基础设施。
    快速参考:Hosts 文件速查表
    文件位置
    
    
    
    
    操作系统
    路径
    
    
    
    
    Windows
    C:WindowsSystem32driversetchosts
    
    
    macOS
    /etc/hosts
    
    
    Linux
    /etc/hosts
    
    
    
    
    打开以进行编辑
    
    
    
    
    操作系统
    命令 / 方法
    
    
    
    
    Windows
    记事本 → 以管理员身份运行 → 文件 → 打开
    
    
    macOS
    sudo nano /etc/hosts
    
    
    Linux
    sudo nano /etc/hosts
    
    
    
    
    刷新 DNS 缓存
    
    
    
    
    操作系统
    命令
    
    
    
    
    Windows
    ipconfig /flushdns
    
    
    macOS
    sudo killall -HUP mDNSResponder
    
    
    Ubuntu/Debian
    sudo systemd-resolve --flush-caches
    
    
    CentOS/RHEL
    sudo systemctl restart NetworkManager
    
    
    
    
    条目格式
    [IP Address]    [hostname]    [optional alias]
    
    # Examples:
    127.0.0.1       localhost
    127.0.0.1       myapp.local
    0.0.0.0         blocked-site.com
    192.168.1.10    staging.example.com
    结论:使用 Hosts 文件掌控您的本地 DNS
    hosts 文件是一个看似简单却具有惊人广泛用途的工具。只需几行纯文本,您就可以重定向域名、屏蔽不需要的内容、测试新的服务器配置并排查 DNS 问题——所有这些都无需触碰您的路由器、DNS 提供商或网络基础设施。
    关键要点:
    
    始终备份 hosts 文件,然后再进行编辑
    使用注释记录您所做的每一项更改
    每次编辑后刷新 DNS 缓存,以确保更改立即生效
    屏蔽域名时使用 0.0.0.0 而非 127.0.0.1
  • 记住它是本地的——hosts 文件更改只影响进行更改的机器
  • 对于在托管环境中工作的开发人员和系统管理员,hosts 文件与配置良好的服务器完美配合。无论您是在 VPS 托管计划上测试新应用程序、在共享虚拟主机账户上预览网站上线前的效果,还是在安装 SSL 证书后验证 SSL 配置,hosts 文件都能为您提供自信、高效工作所需的本地控制。

    现在打开该文件,仔细进行更改,刷新缓存,全面掌控您的机器访问互联网的方式。

    15%

    全场主机优惠15%

    测试技能,享折扣

    使用代码:

    Skills
    开始使用