Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cURL error 6: Could not resolve host #87

Closed
sean908 opened this issue May 24, 2022 · 30 comments
Closed

cURL error 6: Could not resolve host #87

sean908 opened this issue May 24, 2022 · 30 comments

Comments

@sean908
Copy link

sean908 commented May 24, 2022

描述问题

2022/04/18后tg再未收到freenom容器推送的消息
昨天查询,发现后台一直在输出'cURL error 6: Could not resolve host'的错误日志

重现步骤

截图&日志
image

你做了哪些尝试

已尝试重启容器、重启docker、更新容器版本
从软路由ping对应url,其中my.freenom.com无法响应

环境信息

  • 系统: OpenWrt
  • PHP 版本: 未知
  • 脚本版本: v0.4.4 以及 最新
  • 是否 Docker:

额外的备注

@luolongfei
Copy link
Owner

luolongfei commented May 24, 2022

curl error 6 一般是跟你环境的 dns 有关。你 ping 不通不能得出任何结论,因为服务器那边可以禁止 ping。你尝试从软路由访问其它网站地址能不能连通?通过 curl 命令访问。

@sean908
Copy link
Author

sean908 commented May 24, 2022

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的域名正好到期,被回收了😢

@luolongfei
Copy link
Owner

以前正常执行的?再次重启 docker 试试?

@luolongfei
Copy link
Owner

这个跟代码没关系。是你环境的问题,你本地环境如果不稳,建议在免费的环境多部署一份。

@sean908
Copy link
Author

sean908 commented May 24, 2022

以前正常执行的?再次重启 docker 试试?

对,以前都是正常的,每天收到一次推送。
失效那天的前一天,我给tg_bot另外加了一个推送任务。

@luolongfei
Copy link
Owner

这个跟你加任务没关系。你能不能在命令行,以交互模式进到容器里?我怀疑是不是容器里的 dns 配置有问题

@sean908
Copy link
Author

sean908 commented May 24, 2022

这个跟你加任务没关系。你能不能在命令行,以交互模式进到容器里?我怀疑是不是容器里的 dns 配置有问题

需要到容器执行啥命令,或者查看什么文件?
docker exec 能满足需求不?

@luolongfei
Copy link
Owner

执行
docker exec -it freenom /bin/bash

@luolongfei
Copy link
Owner

进入后,看看有没有 cat 命令

@sean908
Copy link
Author

sean908 commented May 24, 2022

进入后,看看有没有 cat 命令

可以。要查什么不?

@luolongfei
Copy link
Owner

cat /etc/resolv.conf
看看这个文件的内容

@sean908
Copy link
Author

sean908 commented May 24, 2022

cat /etc/resolv.conf 看看这个文件的内容

search lan

nameserver 8.8.8.8
nameserver 8.8.4.4

@luolongfei
Copy link
Owner

你的路由器环境里有没有代理?

@luolongfei
Copy link
Owner

OpenWrt 我记得是路由器的系统

@sean908
Copy link
Author

sean908 commented May 24, 2022

你的路由器环境里有没有代理?

有代理,passwall

@luolongfei
Copy link
Owner

是全局的吗?容器的流量会不会全局走代理?

@sean908
Copy link
Author

sean908 commented May 24, 2022

是全局的吗?容器的流量会不会全局走代理?

非全局,规则匹配的

@luolongfei
Copy link
Owner

那么我怀疑是因为,你的路由器在国内,而容器里使用的是谷歌 dns,谷歌的 dns 可能经常受到干扰。你换个 dns 提供商试试?可以先换成和你 OpenWrt 系统里一样的 dns,你看看你的 OpenWrt 系统里的 dns 是用的哪家?

@sean908
Copy link
Author

sean908 commented May 24, 2022

那么我怀疑是因为,你的路由器在国内,而容器里使用的是谷歌 dns,谷歌的 dns 可能经常受到干扰。你换个 dns 提供商试试?可以先换成和你 OpenWrt 系统里一样的 dns,你看看你的 OpenWrt 系统里的 dns 是用的哪家?

有可能是!
我刚把容器的dns改成了路由器本身的,curl baidu/google 都有了输出
现在重启容器试下

@sean908
Copy link
Author

sean908 commented May 24, 2022

那么我怀疑是因为,你的路由器在国内,而容器里使用的是谷歌 dns,谷歌的 dns 可能经常受到干扰。你换个 dns 提供商试试?可以先换成和你 OpenWrt 系统里一样的 dns,你看看你的 OpenWrt 系统里的 dns 是用的哪家?

呃不行,重启容器后resolv.conf会恢复成默认的谷歌dns...

@luolongfei
Copy link
Owner

你临时修改后,先不要重启,先验证一下。修改后,去到 /app 目录,执行 php run 然后看看输出

@sean908
Copy link
Author

sean908 commented May 24, 2022

你临时修改后,先不要重启,先验证一下。修改后,去到 /app 目录,执行 php run 然后看看输出

可以了。
所以我该如何修改容器的resolv.conf呢?

@luolongfei
Copy link
Owner

那目前可以确定是 dns 服务器的问题。

你看看,容器环境里,有没有 /etc/udhcpc/udhcpc.conf 文件?

@sean908
Copy link
Author

sean908 commented May 24, 2022

那目前可以确定是 dns 服务器的问题。

你看看,容器环境里,有没有 /etc/udhcpc/udhcpc.conf 文件?

/etc/udhcpd.conf 有这个

@luolongfei
Copy link
Owner

在 /etc/udhcpc/udhcpc.conf 文件里添加一行
RESOLV_CONF=no
保存
然后再去修改 /etc/resolv.conf
保存
重启容器看看 /etc/resolv.conf 是否被恢复默认

@luolongfei
Copy link
Owner

如果没有 /etc/udhcpc/udhcpc.conf 文件,就新建立一个

@luolongfei
Copy link
Owner

另外,你目前能正常使用的 dns 是怎样的?我考虑下个版本将它添加到容器里的备用 dns 项

@sean908
Copy link
Author

sean908 commented May 24, 2022

另外,你目前能正常使用的 dns 是怎样的?我考虑下个版本将它添加到容器里的备用 dns 项

解决了,在docker run命令中使用了--dns参数。

DNS的话,我机器自身有DNS服务,所以我直接使用了

@yikexiaoyao
Copy link

我第一次部署的时候一切正常,但是没几天就开始一直在报“登录freenom出错操作超时”,cURL error 28
image
求解,谢谢

@luolongfei
Copy link
Owner

网络超时是你服务器的线路问题,跟代码无关。

Repository owner locked as resolved and limited conversation to collaborators Jan 13, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants