直接修改 /etc/hosts 文件即可配置本机 hosts 解析,该文件为系统最优先使用的静态域名映射表,修改后立即生效(部分程序需手动清缓存或重启);需 root 权限编辑,格式为“ip 域名 别名”,支持单行多域名、注释以 # 开头、ipv6 用方括号包裹;可用 nano/vim 手动编辑或 sudo tee -a /etc/hosts 命令追加;验证用 ping 或 getent hosts,必要时刷新 systemd-resolved 或 nscd 缓存;注意匹配顺序、不支持通配符、仅本机生效。

用文本编辑器手动添加
以 root 权限打开文件,追加一行 IP + 域名(可带多个别名),格式严格:IP 地址、域名、别名之间用空格或制表符分隔。
-
推荐 nano(适合新手):运行
sudo nano /etc/hosts,在文件末尾新增如:192.168.1.50 api.dev.local dashboard.dev.local -
习惯 vim 的用户:执行
sudo vim /etc/hosts,按i进入插入模式,添加后按Esc→ 输入:wq保存退出 -
注意格式规范:不能有多余符号;注释行以
#开头;IPv6 地址用方括号包裹(如::1)
用命令行追加(适合脚本或批量操作)
避免打开编辑器,用 tee 安全追加内容,不会覆盖原有记录:
- 运行:
sudo tee -a /etc/hosts > /dev/null - 接着输入要添加的行,例如:
127.0.0.1 testapp.test0.0.0.0 tracking.example.com - 输入
EOF并回车结束
验证是否生效
改完不等于立刻可用,需确认解析结果和清除潜在缓存:
- 用
ping -c 1 testapp.test看返回的是否是你设定的 IP - 用
getent hosts testapp.test(绕过缓存,最可靠) - 若仍解析失败,可能是 systemd-resolved 缓存未刷新:
sudo systemd-resolve --flush-caches(适用于多数现代发行版) - 旧系统(如 CentOS 7 启用 nscd)则运行:
sudo nscd -i hosts
常见注意事项
hosts 解析虽简单,但几个细节容易出错:
- 顺序决定结果:系统从上到下逐行匹配,遇到第一个匹配的域名就返回对应 IP,后面重复的条目会被忽略
- 单行多别名合法:同一 IP 后可跟多个域名,用空格隔开,无需重复写 IP
-
不支持通配符:不能写
*.dev.local,必须逐个列出 - 仅本机有效:该配置只影响当前机器,不影响网络中其他设备











