在Linux系统中,host文件(即/etc/hosts)是一个本地静态域名解析文件,它负责将IP地址映射为主机名,优先级通常高于DNS服务器。修改该文件可以强制指定某域名指向特定IP,常用于开发调试、内网互通或屏蔽恶意站点。

要修改/etc/hosts,必须具有root权限或通过sudo提权。推荐使用命令行编辑器如vim或nano。以nano为例,执行 sudo nano /etc/hosts 即可打开文件进行编辑;若使用vim,则执行 sudo vim /etc/hosts。编辑完成后,在nano中按 Ctrl+O 保存、Ctrl+X 退出;在vim中按 Esc 后输入 :wq 保存并退出。
hosts文件的每一行记录遵循固定格式:IP地址后跟一个或多个主机名,之间用空格或制表符分隔。例如:127.0.0.1 localhost 表示将主机名localhost解析到本机回环地址。若要添加自定义映射,可追加一行,如 192.168.1.10 myserver 或 203.0.113.5 example.com www.example.com。行首的#表示注释,该行内容不会被解析。
除了交互式编辑器,还可以使用命令行追加的方式快速添加条目。例如执行 echo "192.168.1.10 myserver" | sudo tee -a /etc/hosts,即可将新规则追加到文件末尾。若需删除或修改具体行,建议使用sed命令或直接编辑文件,避免误操作。修改前务必先备份原始文件,例如执行 sudo cp /etc/hosts /etc/hosts.bak,以便出错时恢复。
修改完成后,Linux系统通常会立即读取最新的hosts文件,因为glibc的解析器在每次查询时都会动态读取该文件。但某些服务或进程可能缓存了旧的解析结果,此时可尝试重启相关服务,或使用 systemd-resolve --flush-caches(若使用systemd-resolved)、sudo nscd restart(若安装nscd)等方式清除DNS缓存,以使修改完全生效。
需要特别注意的是,/etc/hosts文件仅影响当前Linux主机上的本地解析,不会改变其他机器的解析结果。此外,错误的hosts配置可能导致域名无法访问或访问到错误的主机,因此编辑时需严格核对IP地址与主机名的对应关系,并避免在文件中写入多余空格或非法字符。出于安全考虑,应确保该文件的权限为644或更严格,防止非授权用户篡改系统解析规则。

查看详情

查看详情