加了些显示更多调试信息的代码,刚发包 1.2.2
可以试试升级一下然后再用调试模式查询试试看
直接使用IP查询是正常的
域名查询,新版调试显示为
command options : {"type":"minecraft","debug":true}
game type paresed result : minecraft
server address paresed result : [{"host":"mc.cloudcraft.pro"}]
[minecraft mc.cloudcraft.pro] query error : Error: Failed all 1 attempts
at QueryRunner.run (/koishi/node_modules/gamedig/lib/QueryRunner.js:96:21)
at async Gamedig.query (/koishi/node_modules/gamedig/lib/index.js:11:16)
at async Gamedig.query (/koishi/node_modules/gamedig/lib/index.js:19:16)
at async Proxy.query (/koishi/node_modules/koishi-plugin-gamedig/lib/service.js:24:20)
at async /koishi/node_modules/koishi-plugin-gamedig/lib/index.js:55:40
at async Promise.all (index 0)
at async _Command. (/koishi/node_modules/koishi-plugin-gamedig/lib/index.js:94:30)
at async Array. (/koishi/node_modules/@koishijs/core/lib/index.cjs:1332:14)
at async _Command.execute (/koishi/node_modules/@koishijs/core/lib/index.cjs:1347:22)
at async /koishi/node_modules/@koishijs/core/lib/index.cjs:2182:22
Attempt #1 - Port=25565 Retry=0:
Error: getaddrinfo ENOTFOUND mc.cloudcraft.pro
at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:107:26)
Error : no any query success
指定端口后是这样的
command options : {"type":"minecraft","debug":true}
game type paresed result : minecraft
server address paresed result : [{"host":"mc.cloudcraft.pro","port":36653}]
[minecraft mc.cloudcraft.pro:36653] query error : Error: Failed all 1 attempts
at QueryRunner.run (/koishi/node_modules/gamedig/lib/QueryRunner.js:96:21)
at async Gamedig.query (/koishi/node_modules/gamedig/lib/index.js:11:16)
at async Gamedig.query (/koishi/node_modules/gamedig/lib/index.js:19:16)
at async Proxy.query (/koishi/node_modules/koishi-plugin-gamedig/lib/service.js:24:20)
at async /koishi/node_modules/koishi-plugin-gamedig/lib/index.js:55:40
at async Promise.all (index 0)
at async _Command. (/koishi/node_modules/koishi-plugin-gamedig/lib/index.js:94:30)
at async Array. (/koishi/node_modules/@koishijs/core/lib/index.cjs:1332:14)
at async _Command.execute (/koishi/node_modules/@koishijs/core/lib/index.cjs:1347:22)
at async /koishi/node_modules/@koishijs/core/lib/index.cjs:2182:22
Attempt #1 - Port=36653 Retry=0:
Error: getaddrinfo ENOTFOUND mc.cloudcraft.pro
at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:107:26)
Error : no any query success
看上去似乎就是 dns 解析的问题
mc 的查询用到的协议我还不太了解,我研究一下怎么进一步排查问题
可以尝试在服务器上运行以下命令查看 SRV记录
是否解析正常
dig SRV _minecraft._tcp.mc.cloudcraft.pro
如果正常的话应该会包含以下输出
...
;; ANSWER SECTION:
_minecraft._tcp.mc.cloudcraft.pro. 3600 IN SRV 0 0 36653 mc32.rhymc.com.
...
如果不一样的话需要更改一下dns服务器
除了3600显示的是3383以外都是一样的
一眼使用 Docker 导致的,你刚提问我就在猜测会不会是这个问题了
使用 Docker 导致的问题就搜 Docker 解决吧,Koishi 遇到 Docker 导致的这个问题已经不下 50 人了
怎么解决(
我还真没解决过,我遇到十几个人有这样的问题都是过了两天自己说好了,不知道怎么解决的
有可能在另一个插件 catch 到这个错误吗,我想处理一下(
过了一天没好,再等一天(
个人认为应该还是 docker 的 dns 问题。
要不尝试用以下命令检查宿主主机的docker dns配置是否正常
docker run -it --rm alpine nslookup -type=srv _minecraft._tcp.mc.cloudcraft.pro
应该会得到类似以下结果
tianzi@sh ~> docker run -it --rm alpine nslookup -type=srv _minecraft._tcp.mc.cloudcraft.pro
Server: 183.60.83.19
Address: 183.60.83.19:53
Non-authoritative answer:
_minecraft._tcp.mc.cloudcraft.pro service = 0 0 36653 mc32.rhymc.com
成疑案了,游戏和我的本地koishi都能正常访问这个域名,但任何dns都解析不了这个域名,nslookup也查不到,ping也ping不到,但这个域名在游戏里也能进,插件也能查询到,太怪了
mc.cloudcraft.pro 这个域名本来就没有任何 DNS 记录
MC客户端和 gamedig插件都是先解析 _minecraft._tcp.mc.cloudcraft.pro
这条 SRV 记录
得到真实的服务器地址 mc32.rhymc.com:36653
,然后再连接到服务器(查询服务器数据)的
srv也查过了,没有
意思是 mc 客户端会自动在域名前面加 _minecraft._tcp.
组成 _minecraft._tcp.mc.cloudcraft.pro
这个域名然后解析它的 SRV记录