DNS正常,使用curl时无法解析主机的解决办法
1.问题
在使用curl www.baidu.com时无法获取到网页的信息,显示无法解析主机,但是使用ping命令能正常ping通百度,说明不是DNS解析的问题
2.原因
通过curl(依赖libcurl)的程序。如果服务器开启了IPv6功能,curl默认会优先解析IPv6,在对应域名没有IPv6的情况下,会等待IPv6dns解析失败timeout之后才按以前的正常流程去找IPv4原因。而由于我的ipv6网卡设置问题造成无法通信的原因。造成通过curl或libcurl的程序均无法解析域名。
可以使用curl www.baidu.com -4测试一下,-4表示使用ipv4进行通信,如果有结果,就说明是ipv6的问题
3.解决办法
1、echo 'GRUB_CMDLINE_LINUX="ipv6.disable=1"' >> /etc/default/grub ##在系统启动项添加禁用ipv6的参数
2、grub2-mkconfig -o /boot/grub2/grub.cfg ##将方才配置的文件输出至/boot/grub2/grub.cfg
3、reboot ##重启机器生效
grub2-mkconfig命令由grub2-tools包提供,下载地址https://mirrors.aliyun.com/centos/7.7.1908/os/x86_64/Packages/grub2-2.02-0.80.el7.centos.x86_64.rpm,安装命令rpm -ivh grub2-2.02-0.80.el7.centos.x86_64.rpm --force --nodeps
重启机器后问题成功解决