cURL error 6: Could not resolve host
sean908 opened this issue · 30 comments
curl error 6 一般是跟你环境的 dns 有关。你 ping 不通不能得出任何结论,因为服务器那边可以禁止 ping。你尝试从软路由访问其它网站地址能不能连通?通过 curl 命令访问。
curl error 6 一般是跟你环境的 dns 有关。你 ping 不通不能得出任何结论,因为服务器那边可以禁止 ping。你尝试从软路由访问其它网站地址能不能连通?通过 curl 命令访问。
curl www.baidu.com
curl www.google.com
均OK
curl my.freenom.com
返回这个
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.10.3</center>
</body>
</html>
PS: 夭寿,有个freemon的域名正好到期,被回收了😢
以前正常执行的?再次重启 docker 试试?
这个跟代码没关系。是你环境的问题,你本地环境如果不稳,建议在免费的环境多部署一份。
以前正常执行的?再次重启 docker 试试?
对,以前都是正常的,每天收到一次推送。
失效那天的前一天,我给tg_bot另外加了一个推送任务。
这个跟你加任务没关系。你能不能在命令行,以交互模式进到容器里?我怀疑是不是容器里的 dns 配置有问题
这个跟你加任务没关系。你能不能在命令行,以交互模式进到容器里?我怀疑是不是容器里的 dns 配置有问题
需要到容器执行啥命令,或者查看什么文件?
docker exec 能满足需求不?
执行
docker exec -it freenom /bin/bash
进入后,看看有没有 cat 命令
进入后,看看有没有 cat 命令
可以。要查什么不?
cat /etc/resolv.conf
看看这个文件的内容
cat /etc/resolv.conf 看看这个文件的内容
search lan
nameserver 8.8.8.8
nameserver 8.8.4.4
你的路由器环境里有没有代理?
OpenWrt 我记得是路由器的系统
你的路由器环境里有没有代理?
有代理,passwall
是全局的吗?容器的流量会不会全局走代理?
是全局的吗?容器的流量会不会全局走代理?
非全局,规则匹配的
那么我怀疑是因为,你的路由器在国内,而容器里使用的是谷歌 dns,谷歌的 dns 可能经常受到干扰。你换个 dns 提供商试试?可以先换成和你 OpenWrt 系统里一样的 dns,你看看你的 OpenWrt 系统里的 dns 是用的哪家?
那么我怀疑是因为,你的路由器在国内,而容器里使用的是谷歌 dns,谷歌的 dns 可能经常受到干扰。你换个 dns 提供商试试?可以先换成和你 OpenWrt 系统里一样的 dns,你看看你的 OpenWrt 系统里的 dns 是用的哪家?
有可能是!
我刚把容器的dns改成了路由器本身的,curl baidu/google 都有了输出
现在重启容器试下
那么我怀疑是因为,你的路由器在国内,而容器里使用的是谷歌 dns,谷歌的 dns 可能经常受到干扰。你换个 dns 提供商试试?可以先换成和你 OpenWrt 系统里一样的 dns,你看看你的 OpenWrt 系统里的 dns 是用的哪家?
呃不行,重启容器后resolv.conf会恢复成默认的谷歌dns...
你临时修改后,先不要重启,先验证一下。修改后,去到 /app 目录,执行 php run 然后看看输出
你临时修改后,先不要重启,先验证一下。修改后,去到 /app 目录,执行 php run 然后看看输出
可以了。
所以我该如何修改容器的resolv.conf呢?
那目前可以确定是 dns 服务器的问题。
你看看,容器环境里,有没有 /etc/udhcpc/udhcpc.conf 文件?
那目前可以确定是 dns 服务器的问题。
你看看,容器环境里,有没有 /etc/udhcpc/udhcpc.conf 文件?
/etc/udhcpd.conf 有这个
在 /etc/udhcpc/udhcpc.conf 文件里添加一行
RESOLV_CONF=no
保存
然后再去修改 /etc/resolv.conf
保存
重启容器看看 /etc/resolv.conf 是否被恢复默认
如果没有 /etc/udhcpc/udhcpc.conf 文件,就新建立一个
另外,你目前能正常使用的 dns 是怎样的?我考虑下个版本将它添加到容器里的备用 dns 项
另外,你目前能正常使用的 dns 是怎样的?我考虑下个版本将它添加到容器里的备用 dns 项
解决了,在docker run命令中使用了--dns
参数。
DNS的话,我机器自身有DNS服务,所以我直接使用了
网络超时是你服务器的线路问题,跟代码无关。