1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 阿里云服务器域名解析错误 即可ping IP地址但无法直接ping域名

阿里云服务器域名解析错误 即可ping IP地址但无法直接ping域名

时间:2019-03-13 23:57:16

相关推荐

阿里云服务器域名解析错误 即可ping IP地址但无法直接ping域名

阿里云服务器域名解析错误,即可ping IP地址但无法直接ping域名

错误预览DNS分析原因1,DNS设置问题2,防火墙与端口开放问题3,DNS缓存服务nscd问题NSCD结果

错误预览

可ping IP地址但无法直接ping域名。初步确定为服务器的域名解析有问题,无法正确的访问DNS服务器,来解析域名。

ping api.

[root@iZv61ak4bj68kuZ ~]# ping api.ping: unknown host api.

ping 140.207.135.108

[root@iZv61ak4bj68kuZ ~]# ping 140.207.135.108PING 140.207.135.108 (140.207.135.108) 56(84) bytes of data.From 140.207.73.25 icmp_seq=26 Packet filtered^Z[1]+ Stopped ping 140.207.135.108

DNS

DNS(Domain Name System)是域名解析服务器的意思,它在互联网的作用是把域名转换成为网络可以识别的IP地址。当用户在浏览器中输入网址域名时,首先就会访问系统设置的DNS域名解析服务器(通常由ISP运营商如电信、网通提供)。如果该服务器内保存着该域名对应的IP信息,则直接返回该信息供用户访问网站。否则,就会向上级DNS逐层查找该域名的对应数据。

分析原因

1,DNS设置问题

检查服务器是否正确的设置了DNS服务器,即查看vim /etc/resolv.conf文件是否有DNS服务器的IP地址,它是DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序。默认的DNS服务器的IP地址是电信运营商的DNS服务器,目前国内电信运营商普遍采用DNS劫持的方法,干扰用户正常上网。

Google为他们的DNS服务器选择了两个非常简单易记的IP地址:“8.8.8.8”和“8.8.4.4”。用户只要在系统的网络设置中选择这两个地址为DNS服务器即可。

[root@iZv61ak4bj68kuZ ~]# vim /etc/resolv.conf

nameserver 8.8.8.8nameserver 8.8.4.4

再重启网络服务

[root@iZv61ak4bj68kuZ ~]# service network restart

2,防火墙与端口开放问题

在阿里云服务器控制台查看安全组,是否httphttps端口开放。

我们再来检查防火墙iptables,看看是否有拦截端口的相关规则。可以输入下面的命令关闭防火墙,进行对比测试。

service iptables stop

如果存在iptables规则,则尝试删除DENY策略或修改规则为ACCEPT策略。

3,DNS缓存服务nscd问题

在最终的检查过程中,我所遇到的问题便是nscd缓存服务问题。

NSCD

NSCD(name service cache daemon)是GLIBC关于网络库的一个组件,配置文件为/etc/nscd.conf,服务基于glibc开发的各类网络服务,基本上来讲我们能见到的一些编程语言和开发框架最终均会调用到glibc的网络解析的函数(如GETHOSTBYNAME or GETHOSTBYADDR等),因此绝大部分程序能够使用NSCD提供的缓存服务。当然如果是应用端自己用socker编写了一个网络client就无法使用NSCD提供的缓存服务,比如DNS领域常见的dig命令不会使用NSCD提供的缓存,相反ping得到的DNS解析结果将使用NSCD提供的缓存。

在需要通过域名与外界进行数据交互的时候,dns缓存就派上用场了,它可以减少域名解析的时间,提高效率。例如以下情况

使用爬虫采集网络上的页面数据,使用auth2.0协议从其他平台(如微博或QQ)获取用户数据,使用第三方支付接口,使用短信通道下发短信等。

开启NSCD DNS缓存服务的优点和缺点:

优点

本地缓存DNS解析信息,提供解析速度。

DNS服务挂了也没有问题,在缓存服务时间范围内,解析依旧正常。缺点

DNS解析信息会滞后,如域名解析更改需要手动刷新缓存,NSCD不适合做实时的切换的应用,目前对于依赖DNS切换的服务,建议不要开启DNS缓存。DNS Cache作为普通的DNS解析Cache那是没问题的,如果你使用RDS云服务器,也不建议使用DNS缓存服务。

在解析超时或者出错时,这个服务会导致一些很难发现的错误。当解析超时没有得到结果时,nscd将依据negative-time-to-live参数缓存一段时间,导致后续一段时间的请求都直接被nscd返回失败应答,导致程序没有机会重新去尝试向远端的DNS服务器解析。

当dns解析失败时,对失败结果做缓存也不是毫无道理,这是避免dns雪崩的一种手段,但是可能这个配置并不适合大多数人,我们希望的还是失败后下一次解析可以重新执行,而不是继续得到一个nscd缓存的失败结果。

NSCD命令选项

$ nscd --help用法: nscd [选项...]Name Service Cache Daemon.-d, --debugDo not fork and display messages on the currenttty-f, --config-file=名称从NAME中读取配置数据-g, --statistics Print current configuration statistics-i, --invalidate=TABLEInvalidate the specified cache-K, --shutdown 关闭服务器-t, --nthreads=NUMBER启动 NUMBER 个线程-?, --help 给出该系统求助列表--usage给出简要的用法信息-V, --version 打印程序版本号长选项的强制或可选参数对对应的短选项也是强制或可选的。For bug reporting instructions, please see:</software/libc/bugs.html>.

NSCD配置文件

NSCD配置文件为/etc/nscd.conf,NSCD程序在启动的时候会读取/etc/nscd.conf文件,每一行指定一个属性和对应的值,或者指定一个服务和对应的值,#表示注释。有效的服务设定是:passwd, group, hosts, services, or netgroup五个。

#设置日志文件logfile debug-file-name#设置debug记录的级别,默认是0debug-level value#程序启动时,等待进去请求的处理线程数,至少5个threads number#最大线程数,默认32max-threads number#nscd程序以哪个用户运行,如果设置了该选项,nscd将作为该用户运行,而不是作为root。如果每个用户都使用一个单独的缓存(-S参数),将忽略该选项。server-user user#哪个用户可以请求统计用户stat-user user#在一个缓存项被删除之前允许使用的次数,默认是5reload-count unlimited | number#是否启用偏执模式,启用会导致nscd周期性重启,默认是noparanoia <yes|no>#如果启用偏执模式,设置的定期重启nscd的时间间隔,默认是3600秒restart-interval time#开启或者关闭服务缓存,默认是noenable-cache service <yes|no>#为成功请求的元素设置缓存TTL,单位是秒,值越大缓存命中率越高,降低平均响应时间,但会增加缓存的一致性问题positive-time-to-live service value#为失败查询元素设置缓存TTL,单位是秒,应保持小值,减小缓存一致性问题negative-time-to-live service value#内部的散列表大小,value应该保持一个素数以达到优化效果。默认值是211suggested-size service value#启用或者禁用检查文件是否属于指定的服务,这些文件是/etc/passwd、/etc/group、/etc/hosts、/etc/services、/etc/netgroup等check-files service <yes|no>#设置缓存在服务器重启后,仍旧能提供缓存服务,在使用偏执模式时有用,默认是nopersistent service <yes|no>#为客户端共享nscd数据库在内存中做的映射,使客户端可以直接搜索,而不用每次都查询守护进行,默认是noshared service <yes|no>#该数据库的最大大小,单位是bytes,默认是33554432max-db-size service bytes#此选项仅使用于passwd和group服务auto-propagate service <yes|no>

NSCD服务查看和清除

NSCD缓存DB文件在/var/db/nscd下。可以通过nscd -g查看统计的信息,这里列出部分:

$ nscd -gnscd 配置:0 服务器调试级别4s server runtime5 current number of threads32 maximum number of threads0 number of times clients had to waitno paranoia mode enabled3600 restart internal5 reload count... 省略输出信息若干 ...hosts cache:yes cache is enabledyes cache is persistentyes cache is shared211 suggested size216064 total data pool size0 used data pool size60 seconds time to live for positive entries20 seconds time to live for negative entries0 cache hits on positive entries0 cache hits on negative entries0 cache misses on positive entries0 cache misses on negative entries0% cache hit rate0 current number of cached values0 maximum number of cached values0 maximum chain length searched0 number of delays on rdlock0 number of delays on wrlock0 memory allocations failedyes check /etc/hosts for changes... 省略输出信息若干 ...

清除指定类型缓存

$ nscd -i passwd$ nscd -i group$ nscd -i hosts

除了上面的方法,重启NSCD服务同样可以达到清理Cache的目的。–本人验证无效~

所有要么清除缓存,要么直接关闭NSCD服务,NSCD域名解析大概率就能够成功。

关闭NSCD服务

[root@iZv61ak4bj68kuZ ~]# service nscd stopStopping nscd:[ OK ]

结果

通过以前方法进行排除后,已经可以正确的解析域名了。

[root@iZv61ak4bj68kuZ ~]# ping api.PING api. (101.91.34.103) 56(84) bytes of data.64 bytes from 101.91.34.103: icmp_seq=1 ttl=51 time=6.10 ms64 bytes from 101.91.34.103: icmp_seq=2 ttl=51 time=6.10 ms64 bytes from 101.91.34.103: icmp_seq=3 ttl=51 time=6.11 ms64 bytes from 101.91.34.103: icmp_seq=4 ttl=51 time=6.10 ms64 bytes from 101.91.34.103: icmp_seq=5 ttl=51 time=5.92 ms64 bytes from 101.91.34.103: icmp_seq=6 ttl=51 time=5.94 ms64 bytes from 101.91.34.103: icmp_seq=7 ttl=51 time=6.10 ms64 bytes from 101.91.34.103: icmp_seq=8 ttl=51 time=5.93 ms^Z[2]+ Stopped ping api.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。