博客园  :: 首页  :: 管理

关于windows-服务器修改hosts文件不生效的问题原因分析

Posted on 2022-09-26 20:41  520_1351  阅读(1444)  评论(0编辑  收藏  举报

今天笔者修改一台windows Server服务器的C:\Windows\System32\drivers\etc\hosts文件

新添加了几条记录-(当然不是手打,也是从其他地方复制过去的),如下:

172.16.1.211  ssm.cn-north-1.amazonaws.com.cn
172.16.1.212  ssmmessages.cn-north-1.amazonaws.com.cn
172.16.1.213  ec2messages.cn-north-1.amazonaws.com.cn

但添加后,在cmd中使用ping命令测试,却总还是解析到了公有IP上,也就是说根据dns进行解析的,根本没有读hosts文件解析

C:\Users\qq5201351>ping -n 2 ssm.cn-north-1.amazonaws.com.cn

Pinging ssm.cn-north-1.amazonaws.com.cn [54.222.20.96] with 32 bytes of data:
Reply from 54.222.20.96: bytes=32 time=33ms TTL=238
Reply from 54.222.20.96: bytes=32 time=36ms TTL=238

Ping statistics for 54.222.20.96:
    Packets: Sent = 2, Received = 2, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 33ms, Maximum = 36ms, Average = 34ms

C:\Users\qq5201351>

那就有点奇怪了,按理说对于域名解析,本地hosts的优先级会高于dns的呢、怀疑有缓存

于是使用ipconfig /flushdns清除dns缓存后,效果依然一样

又静下来想了一下,难道复制后,有特殊字符,于是看了一下中间两个空格的十六进编码0Xc2a0

去UTF-8 encoding table and Unicode characters中看了一下、这两个组合在一起即是utf-8中特殊的NO-BREAK SPACE

翻译过来就是非中断空格,看来这种特殊的空格影响到了windows对hosts条目的读取,于是改成标准的0X20空格

也就是正常的敲几个空格即可,最后再次解析,果然正常的先读取了hosts中的条目~

 

最后总结一下:如果遇到上面的问题,可以通过如下方法快否的定位和解决

1、直接删除空格,手工输入1个或者多个空格

2、可以将文本复制到notepad++中,然后显示全部字符,正常的空格会显示成一个点. 如果是0xC2A0则依然会显示成空格

3、可以通过xxd或者其他notepad++下的HexEditor进行进行十六进制编码查看

 

 

 

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/16732270.html