Linux&Windows修改Hosts

跨平台Hosts配置指南
本文详细介绍了如何在Windows和Linux系统中修改Hosts文件,通过添加或修改域名与IP地址的映射,实现内网服务器的快速访问,绕过DNS解析延迟,提升访问速度。文章还提供了修改后的测试方法及缓存刷新指令。

Linux&Windows修改Hosts

[top]

Hosts : the static table lookup for host name(主机名查询静态表)

hosts是存在操作系统上对应ip地址与域名的一个对应表。

在windows上存在 C:\Windows\System32\drivers\etc\hosts

linux下存在于 /etc/hosts

通过增添或者修改不同 ip 对应的域名我们可以 在本地域名服务器直接访问。

问题引入

例如: 我再内网里面有一个seafile的服务器用来管理文件,同时我对seafile进行了内网穿透,但是我再内网访问我穿透的域名的时候会特别的慢(外网服务器限制了),所以我可以通过在在内网访问域名的时候通过电脑直接对应到内网的ip。

修改

于是我修改了 windows的hosts。 打开 C:\Windows\System32\drivers\etc\hosts 文件 ,用文本编辑器 在最后面添加 192.168.123.24 seafile.xxx.com

Linux上修改hosts可以通过vi /etc/hosts

测试

可以在cmd 里面进行ping seafile.xxx.com 进行测试

补充

如果测试不了,可以刷新一下缓存

ipconfig /flushdns

hosts文件包含了ip地址与主机名之间的映射,还包括主机的别名。在没有域名解析服务器的情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的ip地址,否则就需要使用dns服务程序来解决。通过可以将常用的域名和ip地址映射加入到hosts文件中,实现快速方便的访问。 优先级 : dns缓存 > hosts > dns服务

参考

博客

<think>我们要更Linux系统中的hosts文件,通常需要编辑/etc/hosts文件。但是,编辑保存后,如何使更生效呢? 实际上,hosts文件的更是即时生效的,因为系统在每次进行DNS查询时都会读取hosts文件。但是,有些应用程序(如浏览器)可能会缓存DNS查询结果,因此即使hosts文件已经更,这些应用程序可能仍然使用旧的DNS缓存。 因此,要使hosts文件的更在所有应用程序中生效,可能需要采取以下步骤: 1. 编辑hosts文件:使用文本编辑器(如vim、nano等)编辑/etc/hosts文件。 2. 保存更。 3. 重启网络服务:虽然hosts文件更是即时生效的,但为了确保网络服务重新读取配置,可以重启网络服务(根据不同的Linux发行版,命令可能不同)。 4. 清除应用程序的DNS缓存:对于浏览器或其他应用程序,可能需要清除它们的DNS缓存。 另外,系统级别的DNS缓存(如果系统有DNS缓存服务的话)也需要刷新。但请注意,Linux系统本身通常不会缓存DNS(除非安装了如nscd, dnsmasq, systemd-resolved等缓存服务)。因此,我们需要根据系统安装的缓存服务来刷新。 具体步骤: 步骤1:编辑hosts文件 例如:sudo vim /etc/hosts 步骤2:保存文件 步骤3:重启网络服务(可选,但有时需要) 对于使用systemd-resolved的系统(如Ubuntu 18.04+),可以重启该服务: sudo systemctl restart systemd-resolved 对于使用NetworkManager的系统: sudo systemctl restart NetworkManager 对于较老的系统,可能使用: sudo /etc/init.d/networking restart 或者(取决于发行版): sudo service network-manager restart 步骤4:刷新DNS缓存(如果系统有DNS缓存服务) 如果安装了nscd(Name Service Cache Daemon): sudo systemctl restart nscd 或者:sudo service nscd restart 如果使用了dnsmasq(常见于桌面环境): sudo systemctl restart dnsmasq 对于systemd-resolved,除了重启服务,还可以使用: sudo systemd-resolve --flush-caches 步骤5:清除应用程序的缓存 例如,在浏览器中,可能需要清除浏览器的DNS缓存。对于Chrome,可以访问:chrome://net-internals/#dns,然后点击“Clear host cache”。 注意:不同的Linux发行版和不同的服务管理方式,命令可能有所不同。 总结:编辑hosts文件后,最直接的方法是重启网络服务并刷新DNS缓存(如果有的话),然后重启依赖网络的应用(如浏览器)或清除其缓存。 下面给出一个示例脚本,用于在编辑hosts文件后,尝试刷新DNS缓存(假设系统有systemd-resolved或nscd): 注意:请根据你的系统实际情况选择使用。</think>在 Linux 中更 `/etc/hosts` 文件后,需要执行以下操作使更生效: ### 1. **立即生效(无需重启)** ```bash sudo systemctl restart systemd-resolved # 适用于使用 systemd-resolved 的系统(如 Ubuntu 18.04+) ``` **或** ```bash sudo /etc/init.d/nscd restart # 适用于使用 NSCD(Name Service Cache Daemon)的系统 ``` ### 2. **清除 DNS 缓存(推荐)** ```bash sudo resolvectl flush-caches # systemd-resolved 专用命令 ``` **或** ```bash sudo systemd-resolve --flush-caches # 旧版 systemd-resolved 命令 ``` ### 3. **验证是否生效** ```bash ping your-domain.com # 检查是否解析到新 IP ``` **或** ```bash resolvectl statistics # 查看缓存状态(确认缓存已清空) ``` ### 4. **备选方案(无缓存服务时)** ```bash sudo ipconfig /flushdns # 仅适用于 WSL(Windows 子系统) ``` **或重启网络服务**: ```bash sudo systemctl restart NetworkManager # 基于 NetworkManager 的系统 ``` ### ⚠️ 注意事项: 1. 部分应用(如浏览器)可能缓存 DNS,需单独刷新: - Chrome:访问 `chrome://net-internals/#dns` → 点击 **"Clear host cache"** - Firefox:地址栏输入 `about:networking#dns` → 点击 **"Clear DNS Cache"** 2. 未安装缓存服务(`nscd`/`systemd-resolved`)的系统,更会**立即生效**(无需额外操作)。 --- ### 示例流程(Ubuntu 22.04): ```bash # 1. 编辑 hosts 文件 sudo nano /etc/hosts # 添加:192.168.1.100 example.com # 2. 刷新 DNS 缓存 sudo resolvectl flush-caches # 3. 测试解析 ping example.com # 应显示 192.168.1.100 ``` ### 工作原理: - `hosts` 文件是 DNS 查询的**第一优先级**。 - 缓存服务(如 `systemd-resolved`)会缓存旧记录,需重启或清空缓存强制重新读取文件。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wvdon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值