curl: (6) Couldn‘t resolve host ‘xxxx‘报错问题解决

本文解决了一个常见问题:在内网环境中使用curl访问外网时遇到的DNS解析错误。通常,这种情况发生在外网访问正常,但内网访问时报错的情况。文章详细解释了可能的原因,并提供了解决方案,包括修改或添加DNS服务器地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

报错如下



当某一个网址外网访问(即使用手机端或电脑端对网页进行访问)正常,而内网(网站服务器内网)使用curl对网页进行查看时,却报如下错误。

curl: (6) Couldn’t resolve host ‘xxxxxx’

在这里插入图片描述



原因及解决方法



原因:外网使用正常,证明提供服务未出问题。内部访问报错’dns找不到这个网址‘,可能是某dns服务器或dns解析出现了问题。



解决方法:
修改或添加dns(dns服务器地址可网上查询)

cat /etc/resolv.conf

nameserver 114.114.114.114
nameserver 223.5.5.5


补充



这水文怎么阅读量还挺多。
很多年前的时候写的很水的文档,没有具体介绍事件背景,导致很多人说是没联网什么的。这就很尴尬了,要是服务器没联网,外网访问为什么是正常的,又不是自己的笔记本突然忘了插网线和连wifi,导致出现这种问题。
起因是之前公司的devops自研的监控平台,它在某个项目的服务器中部署了一个监控节点(一个项目是一个机房环境或者云环境),它会用curl等方式探测一批内网和外网的web服务是否正常,并向主站发送结果。然后有天这个平台突然某个网站的频繁报错,于是以为是业务出现异常,访问业务的网站,结果都是正常的。接着一查,别的监控节点都没报警,某个地区的节点报警了,应该是这个机房的网络环境或者服务出问题了。
于是跳板机登录该网站所在的机房的内网服务器中。当时常用得做法是依次使用curl测试,先测试异常的链接,再把链接中的域名换成实例的IP 测试,看看是哪个实例请求不到,再处理,因为那时候常有发生,以为是服务本身出现了问题。结果当时测试其他外网链接的时候正常,再测试报异常的那条链接,其他节点包括电脑访问它都正常,就这个机房怎么测那个服务的链接和域名都报这个错,因此没联网这个问题是不存在的,可能是dns问题。 然后排查resolv.conf,发现这个项目的服务器dns走的是内网,给常用网站做了解析,但没给监控的那个网站的域名做解析,导致解析不到出现问题。后来还是修改了dns为常用的外网dns,把部分服务依赖的域名,在这个机房的服务器内批量的在hosts配置域名解析了。
原因就是监控平台添加了个web监控,推送到了各个监控节点了,结果某个地区的服务器配置的是内网dns,这个监控节点无法解析这些网站,导致了web链接报错。



还有几种可能也会导致这个报错:
1、没联网或笔记本上的内网dns限制了。这个常见于笔记本电脑,不会在服务器上出现,要是服务器出现这问题,反而更加直观。服务完全无法访问,服务器连都连不过去,zabbix等监控会有报警。

2、如果换到云服务器环境,应该考虑的是服务器的安全组出方向可能被阻止了,需要手动添加规则。

3、可能是服务器上iptables等防火墙规则导致,但是根据部分公司的习惯来说,通常机房有硬件防火墙,内网的服务中通常是很少设置iptables规则的,避免引入问题和方便使用。有时候只是等保的时候设置几条能看的,nginx服务器上配置些ip黑名单,排查问题可以顺便查看一下。

4、也有可能是WAF限制了访问。常见于技术好的学校机房或者安全性高的环境。
这个要看是哪方在维护,在WAF平台上查看就知道了。
如果WAF不是你维护的,可以从其他地方看到。

访问网站的表象都是无法访问,但是拦截特征响应‌常返回403 Forbidden、406 Not Acceptable或429 Too Many Requests,而非服务器原生的404/500错误‌;而且通常拦截页面内容‌会有带品牌标识的拦截页,内容包含Blocked by WAF、Captcha required等关键词‌。

curl 的报错到不是这个报错,-v输出若出现X-Protected-By: WAF、Server: cloudflare等自定义Header,即证明流量经WAF过滤‌
可以搜索一下其他查看方法,我也只见过网页上拦截带品牌。这时候要是其他方维护的,让你的网站无法访问,你上面有领导就得先报告一下,然后这个得想办法要联系对方,问一下为什么拦截了,是过节日,是有要整改的,还是误拦截了?有没有提前通知?基本时间是在沟通等待,这个得看网站的重要程度,得看用户多不多,有没有重大活动,哪边的领导是否着急。不管如何要形成完整的证据链,别忘了截图和通报起因经过结果。

### IntelliJ IDEA 中 Java 时区设置和问题解决方案 #### 设置项目全局时区 为了确保整个项目的日期时间操作都遵循同一时区,在 `pom.xml` 或者构建文件中指定 JVM 参数可以实现这一点。对于 Maven 构建工具而言,可以在 `<properties>` 节点下加入如下配置: ```xml <properties> <!-- 配置默认时区 --> <argLine>-Duser.timezone=Asia/Shanghai</argLine> </properties> ``` 此方法适用于所有通过Maven运行的应用程序[^1]。 #### 数据库连接字符串中的时区参数 当遇到与 MySQL 数据库交互过程中产生的时区错误提示时,应该修改 JDBC URL 来显式指定时区属性。具体做法是在数据库连接URL后面追加 `&serverTimezone=GMT%2B8` 类似的参数来声明目标时区。例如完整的连接串可能看起来像这样: ```plaintext jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8 ``` 需要注意的是,这个改动通常需要配合应用程序服务器或者开发环境(如IntelliJ IDEA)一起调整,并且有时还需要重启计算机才能生效[^2]。 #### 修改 IDE 的启动选项 为了让 IntelliJ IDEA 使用特定的时区执行编译和其他任务,可以通过编辑IDE本身的启动脚本来添加 `-Duser.timezone=Your/TimeZone` 到 VM options 文件里。这一步骤能够影响到由该IDE发起的所有Java进程所使用的默认时区设定。 对于 Windows 用户来说,路径通常是 `%USERPROFILE%\.{product_name}\config\options\vmoptions.txt`; 对于 macOS 和 Linux 用户,则位于 `~/.{product_name}/config/options/vmoptions.txt`. 将下面这一行添加进去并保存更改: ```bash -Duser.timezone=Asia/Shanghai ``` 完成以上任一方式的操作后,请记得重新加载项目以及任何必要的服务实例以使新的时区设置生效。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漠效

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值