Linux怎么在/etc/hosts中配置本地域名解析映射

轻强同学_5830

轻强同学_5830

2026-09-23

384人浏览

原创

修改后立即生效,但需确保用sudo权限、英文空格分隔ip与域名(禁用tab)、注释独占一行且以#开头无前置空格,并用tee -a追加更安全可靠。

linux怎么在/etc/hosts中配置本地域名解析映射

/etc/hosts 文件修改后立即生效,但必须注意格式、权限和缓存三处关键点,否则看似写对了却 ping 不通、curl 失败。

linux-performance-analyzer
linux-performance-analyzer

Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。

下载

怎么用 nano 或 vim 安全地编辑 /etc/hosts

直接 sudo nano /etc/hostssudo vim /etc/hosts 是最常用方式,但容易因权限或格式出错: - 必须加 sudo,否则保存时会提示 “Permission denied” - 每行只能有一个 IP 地址,后面跟一个或多个空格分隔的域名(不能用 tab) - 域名之间用空格,不是逗号或分号;例如 127.0.0.1 example.com www.example.com 合法,127.0.0.1 example.com, www.example.com 会导致第二个域名无法解析 - 行首不能有空格,注释行必须以 # 开头且前面无空格( # comment 不被识别)

为什么用 tee -a 追加比直接编辑更可靠

脚本化或批量添加时,sudo tee -a /etc/hosts 能避免覆盖误操作和交互中断风险: - tee -a 是追加(append),不会清空原文件 - 输入内容在命令执行后才逐行读入,适合嵌入 here-document - 示例安全写法:
sudo tee -a /etc/hosts > /dev/null 
- 注意单引号包裹 <code>EOF</code>,防止 shell 变量提前展开
<h3>为什么 <code>ping</code> 生效但 <code>curl</code> 或浏览器不走 <a style="color:#f60; text-decoration:underline;" title="hosts" href="https://m.php.cn/zt/16762.html" target="_blank">hosts</a>
</h3>
这不是 <code>/etc/hosts</code> 本身的问题,而是应用层或系统级缓存/配置干扰:
- <code>curl</code> 默认遵守系统解析逻辑,但某些版本(尤其带 HTTP/2 或启用 <code>ALPN</code>)可能受 DNS-over-HTTPS(DoH)影响
- 浏览器(Chrome/Firefox)有自己的 DNS 缓存,需手动清除或访问 <code>chrome://net-internals/#dns</code>
- 系统级缓存取决于 <code>systemd-resolved</code> 是否启用:运行 <code>sudo systemd-resolve --flush-caches</code> 或 <code>sudo resolvectl flush-caches</code>(新版 systemd)
- 更底层的控制在 <code>/etc/nsswitch.conf</code>,确认其中 <code>hosts: files dns</code> 这一行存在且 <code>files</code> 在 <code>dns</code> 前面
<h3>哪些场景下 <code>/etc/hosts</code> 会完全失效</h3>
它不是万能的,以下情况会绕过甚至忽略该文件:
- 容器内(Docker/Podman)默认不共享宿主机的 <code>/etc/hosts</code>,除非显式挂载或使用 <code>--add-host</code>
- 某些 Java 应用(尤其用了 <code> InetAddress.getByName()</code>)会缓存 DNS 结果长达数分钟,需设置 JVM 参数 <code>-Dnetworkaddress.cache.ttl=0</code>
- 使用 <code>getaddrinfo()</code> 并指定 <code>AI_ADDRCONFIG</code> 标志的程序,可能跳过 IPv4 映射(比如只配了 <code>::1</code> 但没配 <code>127.0.0.1</code>)
- <code>nslookup</code> 和 <code>dig</code> 会直接查 DNS,不读 <code>/etc/hosts</code>,测试务必用 <code>ping</code>、<code>host</code> 或 <code>getent hosts example.com</code><p>真正要让映射稳定起作用,重点不在“怎么加”,而在于“加完之后谁信、谁缓、谁绕开”。每次改完,用 <code>getent hosts example.com</code> 看系统是否认这个条目,比反复 ping 更准。</p>

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3610

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3153

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2193

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

5250

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

4922

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

2953

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2465

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

2679

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

277

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习