ddns-go icon indicating copy to clipboard operation
ddns-go copied to clipboard

阿里云解析失败(返回状态码: 400)

Open JoyInk opened this issue 1 year ago • 13 comments
trafficstars

问题描述

阿里云请求失败

DNS服务商

Alidns(阿里云)

是否已搜索同类问题

已搜索,但未能解决

操作系统

Linux

架构

x86_64

版本

v6.0.2

安装方式

Docker

额外信息

2024/01/14 00:32:22 查询域名信息发生异常! 返回内容: {"RequestId":"CA434CC3-4F14-595D-99B0-0337C6259DF8","Message":"Specified time stamp or date value is expired.","Recommend":"https://api.aliyun.com/troubleshoot?q=InvalidTimeStamp.Expired&product=Alidns&requestId=CA434CC3-4F14-595D-99B0-0337C6259DF8","HostId":"alidns.aliyuncs.com","Code":"InvalidTimeStamp.Expired"} ,返回状态码: 400

JoyInk avatar Jan 13 '24 08:01 JoyInk

操作系统时间不对

jeessy2 avatar Jan 13 '24 08:01 jeessy2

是否可以修改ddns-go容器的时区,修改为UTC

修改 TZ 变量,默认是 Asia/Shanghai

https://github.com/jeessy2/ddns-go/blob/20f1b2963fa3307bea6d004c57073c0ffaa2aea0/Dockerfile#L19

docker run -e TZ="UTC" jeessy/ddns-go

WaterLemons2k avatar Jan 13 '24 10:01 WaterLemons2k

时区问题已解决,出现了新的问题:Get "https://alidns.aliyuncs.com/": tls: failed to verify certificate: x509: certificate signed by unknown authority

JoyInk avatar Jan 13 '24 10:01 JoyInk

时区问题已解决,出现了新的问题:Get "alidns.aliyuncs.com": tls: failed to verify certificate: x509: certificate signed by unknown authority

可能是因为时间不正确导致的证书问题,加 skipVerify 参数:

docker run jeessy/ddns-go -skipVerify

WaterLemons2k avatar Jan 13 '24 10:01 WaterLemons2k

1705146069757 时间看起来是正确的,但还是会报时间的问题(截图为容器中时间)

JoyInk avatar Jan 13 '24 11:01 JoyInk

时间是对的(UTC+8)但时区是错的(UTC)。

WaterLemons2k avatar Jan 13 '24 11:01 WaterLemons2k

主机的时间和时区正确吗?

WaterLemons2k avatar Jan 13 '24 13:01 WaterLemons2k

安装了个zimaos,那个系统是UTC时区的,但时间竟然是正确的,,所以docker里时区调整为UTC时,时间就是正确的,但时区就不对了,没弄明白,觉得不是容器

JoyInk avatar Jan 13 '24 14:01 JoyInk

在主机上运行 sudo hwclock --verbose 看看硬件时钟的时间正确吗?

WaterLemons2k avatar Jan 13 '24 14:01 WaterLemons2k

这个系统甚至精简掉了命令行,无法对系统做具体操作,暂时没有找到解决办法,已经把此问题提交给了官方。

JoyInk avatar Jan 15 '24 09:01 JoyInk

主机时间修改时间为UTC时间,减8个小时

jeessy2 avatar Jan 15 '24 09:01 jeessy2

首先主机时区显示的是UTC,但时间是正确的中国时间 其次,如果ddns-go容器启动时使用TZ=UTC,那么容器中时区为UTC,时间也为正确时间, 如果不更改TZ,时区为CTS,时间为CTS+8

JoyInk avatar Jan 15 '24 09:01 JoyInk

时区和具体时间要匹配。UTC时区,时间又是+8小时。说明系统时间快了8小时, 阿里云要30分钟内

jeessy2 avatar Jan 15 '24 09:01 jeessy2

@jeessy2 已修改环境变量TZ=UTC-8,系统时间变为了中国时间。重启过容器依旧报错。

# 系统运行date 命令结果如下,为中国时间
Sun Feb  4 16:20:58 UTC 2024

目前的报错日志

2024/02/04 08:25:05 查询域名信息发生异常! 返回内容: {"success":false,"errors":[{"code":6003,"message":"Invalid request headers","error_chain":[{"code":6111,"message":"Invalid format for Authorization header"}]}],"messages":[],"result":null} ,返回状态码: 400

通过date命令行获取的系统时间为中国时间,但ddns-go日志的时间不对。报错问题依旧存在

Iain33 avatar Feb 04 '24 08:02 Iain33

重新生成token试下

jeessy2 avatar Feb 04 '24 09:02 jeessy2