Linux CURL或WGET无法解析域名,但是用ping正常解析解决办法。

  • 发布时间:2017-04-28 11:06:36
  • 作者:醉眼识朦胧
  • 标签:linux,curl

前言:

    在使用Centos7下载文件的时候出现了个奇怪的现象,使用curl或wget均不能解析域名

   a

    但是使用ping进行域名解析完全正常

    b

    

    或者在使用yum makecache 更新仓库的时候也会出现Could not resolve host的情况。


原因分析:

    首先,出现这种问题的第一反应是想到肯定是dns解析的问题,修改了dns解析后发现仍是这样。

    最后进行查找了一些资料后才得知,通过curl(依赖libcurl)的程序。如果开启了IPv6,curl默认会优先解析IPv6,在对应域名没有IPv6的情况下,会等待IPv6dns解析失败timeout之后才按以前的正常流程去找IPv4原因。而由于我的ipv6网卡设置问题造成无法通信的原因。造成通过curl或libcurl的程序均无法解析域名。


解决办法:

    1.强制指定curl使用ipv4进行通信

curl -4 baidu.com

c


    2.禁用ipv6

        将ipv6禁用之后再使用curl baidu.com也可以解决