基岩版服务器显示不出MOTD,绝大多数情况下是查询协议不兼容或SRV解析异常,直接改用UDP端口查询并检查SRV记录即可解决。
这个问题在基岩版开服圈里非常典型,尤其是玩家用“服务器列表”刷新时看不到简介,但直连IP又能进,原因很简单:基岩版的MOTD走的是UDP 19132端口的“查询”机制,跟Java版那个基于TCP的“服务器列表Ping”完全是两套东西,很多面板商或教程只教了Java版那套,搬到基岩版自然就翻车。
排查方向一:先确认服务器本身有没有开启“查询”功能
基岩版服务端(BDS)默认情况下,查询功能是关闭的,你需要在server.properties里把这两项改掉:
enable-lan-visibility=true(部分旧版本叫online-mode,但别动它)enable-query=true(这是关键,很多版本默认是false)
改完后重启服务端,再用工具测一下UDP 19132端口的“query”响应。如果服务器端压根没开查询,外部任何工具都拉不到MOTD,这是最常见的第一层原因。
如何验证查询是否开启
- 用
nmap -sU -p 19132 --script=msn-query(需要装相关脚本)扫一下,看返回里有没有MOTD字段。 - 或者直接用基岩版客户端的服务器列表刷一下,能显示“在线人数/最大人数”就说明查询通了,光显示“无法连接”但能进服,基本就是查询没开。
排查方向二:SRV记录写错导致基岩版服务器显示不出MOTD
很多腐竹喜欢用play.example.com这种域名让别人进服,于是加了SRV记录_minecraft._udp指向example.com:19132。但基岩版对SRV的支持并不像Java版那么成熟,尤其新版BDS和第三方服务端(如BedrockConnect、Geyser)解析策略不同,SRV记录一旦写错或TTL缓存,客户端列表就会直接超时,自然也就看不到MOTD。
正确的SRV格式
- 主机名:
_minecraft._udp - 目标:
你的域名(不带端口,端口单独写) - 端口:
19132
注意:很多服务商默认只让填“主机记录”不支持下划线开头的名称,这时候你要选“自定义记录类型”或“SRV记录专用入口”,比如简米云DNS、Cloudflare都是支持_minecraft._udp的。
基岩版SRV的坑
- 基岩版官方客户端只在“服务器列表”里尝试SRV解析,如果你用“加入服务器”直连IP+端口,SRV根本没参与。
- 部分第三方启动器(比如PocketMine-MP的客户端)根本不认SRV,只认
host:port格式,这也会导致“基岩版服务器显示不出motd”但实际能进去。
排查方向三:UDP端口被防火墙或面板拦截
MOTD查询走的是UDP,而不是TCP,很多人只放行了TCP 19132,UDP没放行,你可以在同一台服务器上跑一个Java版服务器,TCP通,基岩版UDP被墙,列表自然空白。
命令检查方法
在服务器本机执行:
nc -u -vz 127.0.0.1 19132
如果通,再用外部机器测试:
nc -u -vz 你的公网IP 19132
不通就查防火墙:
- Linux:
iptables -L -n看UDP规则,ufw status看是否allow 19132/udp - Windows:检查“高级安全Windows Defender防火墙”,新建入站规则,协议选UDP,端口填19132
很多云厂商的安全组也分TCP和UDP,记得在安全组里单独放行UDP 19132,简米云、酷番云、华为云的控制台都有“添加规则”按钮,端口类型选UDP。
排查方向四:MOTD内容包含非法字符或超长
基岩版的MOTD格式跟Java版不一样,它支持颜色代码,但不支持Java版的\n换行,也不支持JSON文本,如果你直接把Java版的MOTD复制过来,里面有加颜色码,正常情况下基岩版能解析,但如果字符串里包含中文引号、&加数字(比如&1这种,基岩版不认),就会导致查询协议返回异常。
规范写法
- 直接在
server.properties的motd=后面写纯文本,比如motd=我的生存服 1.20 纯净。 - 想要颜色,用加色码,例如
motd=§a我的生存服§r 1.20。 - 不要用
\n、<、>、[、]里的方括号,实测部分客户端会被截断。
长度限制
基岩版MOTD最长59个字符,多出来的会被截断甚至直接不显示,用英文和符号凑数容易超长,建议控制在50字符以内,据社区测试,超过59字符时,部分旧版客户端会显示空白,这就是“显示不出motd”但又没报错的原因之一。
排查方向五:使用第三方面板或映射工具的特殊情况
如果你用的是MCSManager、翼龙面板、NginxProxyManager这类工具,或者用frp/蒲公英做内网穿透,基岩版服务器显示不出motd的概率会直线上升。
面板方面的常见问题
- MCSManager默认转发的是TCP流量,基岩版查询是UDP,需要额外配置UDP隧道。
- 翼龙面板的分配端口只映射了TCP,没有自动放行UDP,需要你在面板的“网络”选项卡里手动添加UDP端口。
- 用frp做穿透时,
frpc.ini里必须写type = udp,如果你只写了tcp,那MOTD查询就永远是超时。
行业共识
业内专家指出,基岩版服务器的MOTD查询和Java版不共用端口协议,任何基于TCP的代理、反代、负载均衡都拿不到基岩版查询包,如果你想既让MOTD显示,又用域名转发,建议直接UDP端口映射,而不是用HTTP反向代理。
排查方向六:客户端缓存和DNS污染问题
有时候服务器本身没问题,但玩家手机上的客户端缓存了旧的SRV记录或IP地址,基岩版客户端的服务器列表缓存时间较长,改完SRV记录后可能需要重启游戏或清除缓存。
实际测试步骤
- 在服务器列表里删除该服务器,重新添加一次。
- 切换Wi-Fi和4G再测一遍,排除本地DNS缓存。
- 用另一个设备(比如平板)测,如果显示正常,就说明是原设备缓存问题。
需要注意:部分地区ISP的DNS对_minecraft._udp这种SRV记录支持不好,解析超时也会导致MOTD不显示,可以改用公共DNS(如29.29.29或8.8.8),或者在服务器端直接关闭SRV,让玩家填IP和端口。
Q&A:基岩版服务器MOTD常见疑问
Q1:基岩版服务器显示不出motd,但能进服,这是为什么?
两个原因:一是查询协议没开,服务端默认enable-query=false;二是防火墙只放行了TCP没放行UDP,直连能进服说明游戏端口是通的,但MOTD走的是独立UDP查询请求,那个没通,按本文第一、三部分检查即可。
Q2:用Geyser或Floodgate的基岩版服务器,MOTD显示不出来怎么办?
Geyser本身是Java版和基岩版之间的代理,它监听的是一个UDP端口(默认19132),但它的MOTD是从Java版服务器拉取的,如果Java版服务器列表显示正常,而基岩版显示不出来,检查Geyser配置里的sport和proxy-protocol选项,多数情况下,把server.properties里的motd改成纯基岩版格式,并确保Geyser的passthrough-motd设为true,就能解决。
Q3:我把MOTD改成中文,显示乱码或空白,怎么处理?
基岩版MOTD支持UTF-8编码,但服务端配置文件必须是UTF-8无BOM格式,如果你用记事本编辑server.properties并保存为带BOM的UTF-8,客户端可能读串,用Notepad++或VS Code重新保存为“UTF-8 without BOM”,然后重启服务端,如果仍然不行,把中文换成英文测试,排除编码问题。
基岩版MOTD显示不出来,核心就一句话:查询协议没走通或解析链路有断层,从enable-query=true开始改,放行UDP 19132,再检查SRV记录格式,多数问题能在十分钟内定位,别被Java版教程带偏,基岩版永远把UDP查询优先级放第一位。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/796884.html


