host文件
约 1194 字大约 4 分钟
2025-06-24
这是一篇未完成的文档
计算机网络中有提到,DNS(域名系统)是将域名解析为IP地址的系统,不过有些时候因为DNS污染等原因,主机在解析域名的过程中会得到意料之外的结果,如错误解析、无法解析等。host文件是一个本地的DNS解析文件,可以用来手动指定域名和IP地址的映射关系。
Windows10/11
在 Windows 系统中修改 hosts 文件需要管理员权限,以下是详细步骤:
📍 方法一:使用记事本(推荐)
以管理员身份运行记事本
- 按下
Win + S
,输入 "记事本" - 右键点击 "记事本" → "以管理员身份运行"
- 按下
打开 hosts 文件
- 在记事本中点击 "文件" → "打开"
- 导航到路径:
C:\Windows\System32\drivers\etc
- 将文件类型改为 "所有文件"
- 选择
hosts
文件并打开
编辑 hosts 文件
- 在文件末尾添加新条目(格式:
IP地址 域名
)
# 示例: 192.0.2.5 example.com 203.0.113.10 api.example.net
- 使用
#
开头添加注释
- 在文件末尾添加新条目(格式:
保存文件
- 按
Ctrl + S
保存 - 如果提示权限不足,尝试另存为到桌面,然后复制回原文件夹覆盖
- 按
📍 方法二:使用命令提示符(快速编辑)
以管理员身份运行命令提示符
- 按下
Win + X
→ 选择 "终端(管理员)" 或 "命令提示符(管理员)"
- 按下
使用命令行编辑器
notepad C:\Windows\System32\drivers\etc\hosts
- 在打开的记事本中进行编辑并保存
📍 方法三:使用 PowerShell(高级)
以管理员身份运行 PowerShell
- 按下
Win + X
→ 选择 "Windows PowerShell(管理员)"
- 按下
直接编辑文件
Add-Content -Path "$env:windir\System32\drivers\etc\hosts" -Value "`n192.0.2.5 example.com" -Force
(此命令在文件末尾添加新条目)
✔️ 重要注意事项:
刷新 DNS 缓存(修改后必须执行):
ipconfig /flushdns
hosts 文件标准格式:
# 注释以井号开头 IP地址 域名 # 域名与IP之间用空格或制表符分隔 127.0.0.1 localhost
常见问题解决:
- 无法保存:确保使用管理员权限
- 修改无效:检查是否有多余空格,域名拼写错误
- 恢复默认:删除添加的内容或下载默认 hosts 文件: 微软官方 hosts 文件
🔍 验证修改是否生效:
- 打开命令提示符:
ping example.com
- 检查返回的 IP 地址是否正确
⚠️ 警告:修改 hosts 文件可能影响网络访问,操作前建议备份原始文件(复制一份重命名为 hosts.bak)。
Linux
Linux 系统修改 hosts 文件指南
在 Linux 系统中修改 hosts 文件需要管理员权限,以下是详细步骤:
📝 修改方法
方法一:使用终端命令(推荐)
打开终端(Ctrl+Alt+T)
使用文本编辑器打开 hosts 文件:
sudo nano /etc/hosts
或
sudo vim /etc/hosts
输入密码(输入时不会显示字符,输完按回车)
编辑文件内容:
# 示例格式(IP地址 + 域名) 127.0.0.1 localhost 192.168.1.10 mywebsite.local 104.16.123.96 discord.com # 注释掉不需要的条目 # 203.0.113.5 blocked-site.com
保存文件:
- Nano 编辑器:
Ctrl+O
→ 回车 →Ctrl+X
- Vim 编辑器:
:wq
→ 回车
- Nano 编辑器:
方法二:图形界面操作
- 打开文件管理器(如 Nautilus)
- 导航到
/etc/
- 右键点击
hosts
文件 → "以管理员身份打开" - 输入管理员密码
- 编辑并保存文件
🔄 刷新 DNS 缓存
修改后需要刷新 DNS 缓存使其生效:
# 对于 systemd-resolved(Ubuntu 18.04+)
sudo systemd-resolve --flush-caches
# 对于 NetworkManager
sudo systemctl restart NetworkManager
# 通用方法(立即生效)
sudo killall -HUP dnsmasq || true
sudo systemctl restart systemd-resolved || true
📍 重要注意事项
文件格式规范:
- 每行一个条目
- IP地址和域名之间用空格或制表符分隔
#
开头表示注释- 示例:
192.0.2.4 example.com 192.0.2.5 api.example.com www.example.com
权限问题:
- 必须使用
sudo
获取管理员权限 - 不要随意更改文件权限 (保持为
-rw-r--r--
)
- 必须使用
备份 hosts 文件:
sudo cp /etc/hosts /etc/hosts.bak
🛠️ 故障排除
修改未生效:
# 测试域名解析 ping example.com nslookup example.com
恢复默认 hosts 文件:
sudo cp /etc/hosts.bak /etc/hosts # 或使用默认模板 echo -e "127.0.0.1\tlocalhost\n::1\t\tlocalhost" | sudo tee /etc/hosts
常见问题:
- 权限问题:确保使用
sudo
- 格式错误:检查空格和换行
- 缓存未刷新:执行 DNS 刷新命令
- 权限问题:确保使用
🔍 验证修改是否成功
# 使用 dig 命令查询
dig example.com
# 使用 host 命令
host example.com
# 查看详细解析过程
systemd-resolve example.com --status
💡 提示:对于需要经常修改 hosts 文件的用户,可以考虑使用 SwitchHosts 等工具进行更方便的管理。