直接修改 /etc/hosts 是最简最可靠的方式,系统优先查该文件并立即返回匹配 ip,跳过远程 dns 查询;格式为“ip 域名 [别名]”,支持多域名映射、注释和 ipv6,修改前需备份,可用 nano/vim/tee 编辑,改完即生效。

直接改 /etc/hosts 就是最简、最可靠的方式。它不走公网 DNS,系统在发起域名请求时会优先查这个文件,匹配上就立刻返回对应 IP,跳过所有远程查询。
/etc/hosts 文件的基本格式
每行一条映射,结构固定:IP地址 域名 [别名1] [别名2] …
- IP 和域名之间用空格或制表符分隔
-
#开头的行是注释,会被忽略 - 一行可写多个域名,指向同一个 IP
例如:
127.0.0.1 dev.example.com api.dev.example.com 192.168.1.50 backend.internal test-api.local ::1 dev.example.com # IPv6 映射(可选)
修改前建议备份
sudo cp /etc/hosts /etc/hosts.bak
防止误操作导致无法解析本地服务或网络异常。
编辑方式(任选其一)
-
nano(适合新手):
sudo nano /etc/hosts
在末尾添加新行 → Ctrl+O 保存 → 回车确认 → Ctrl+X 退出
GitHub Hosts CN下载GitHub Hosts 更新工具(仅限中国用户),安全更新系统hosts文件,保留原有非GitHub条目,仅替换GitHub相关地址。支持备份恢复和风险提示。用于解决GitHub访问问题。
-
vim(适合脚本或远程环境):
sudo vim /etc/hosts
按
G跳到末尾 →o新增一行 → 输入映射 →Esc→ 输入:wq保存退出 -
tee(适合批量追加、避免覆盖):
echo "127.0.0.1 myapp.test" | sudo tee -a /etc/hosts
验证是否生效
不需要重启任何服务,改完即生效(部分应用如浏览器可能缓存 DNS,可强制刷新或新开无痕窗口):
ping -c 1 myapp.test # 应返回 127.0.0.1 或你指定的 IP curl -I http://myapp.test # 查看响应头,确认连的是本地服务
注意事项
- 确保 IP 地址真实可达(比如
127.0.0.1对应本地运行的服务,192.168.x.x对应内网机器) - 不要删除或注释掉原有
127.0.0.1 localhost这类基础条目 - 如果同时配置了 IPv4 和 IPv6,建议两者都写,避免某些工具(如 curl)默认走 IPv6 失败
- 修改后若遇到解析异常,先检查空格是否为全角、是否有隐藏字符、是否拼错域名
不复杂但容易忽略










