Kaillera 联机连接失败 问题定位与解决
问题定位框架
联机连接失败的原因分布在不同环节:
你的 WinKawaks → 网络链路 → 防火墙 → 路由器端口映射 → 对方 WinKawaks
任何一个环节出问题都会导致连接失败。最有效的排查方式是先测最简单的,逐步增加复杂度。
第一步:局域网先测
目的:把问题缩小到"外部网络"还是"你的服务器本身"。
- 你的电脑启动 kaillerasrv.exe
- 用同 Wi-Fi 下的另一台设备(或手机模拟器)尝试连接你的内网 IP(cmd 里
ipconfig看 IPv4,比如192.168.1.100) - 能不能连上?
| 局域网能连上 | 局域网连不上 |
|---|---|
| ✅ 服务器本身没问题 | ❌ 服务器或本机防火墙问题 |
| → 问题在端口映射或公网 IP | → 继续查 Windows 防火墙 |
第二步:Windows 防火墙放行
如果局域网连不上,先查这个:
- 启动 kaillerasrv.exe 时 Windows 防火墙有没有弹提示?
- 如果弹了但你点了"取消"或没注意到,手动补放行:
- Win+R 输
wf.msc打开高级防火墙 - 入站规则 → 新建规则 → 程序 → 选择 kaillerasrv.exe → 允许连接
- 出站规则同样建一条
同时确认 WinKawaks.exe 也有对应的防火墙规则(联机客户端也用 UDP)。
第三步:路由器端口映射
如果局域网能连上但公网朋友连不上:
- 打开路由器管理页(
192.168.1.1或类似) - 找到端口映射/虚拟服务器/NAT 转发
- 确保一条规则:UDP 27888 → 你的内网 IP(server.ini 里的端口号要和这里一致)
- 保存后有些路由器需要重启
验证映射是否生效:手机用流量(切到蜂窝网,别连 Wi-Fi)输入你的公网 IP 测试。
第四步:服务器软件版本匹配
客户端(WinKawaks)和服务器(kaillerasrv)的版本兼容性:
- WinKawaks 1.54+ 通常内置 Kaillera 客户端
- 官方 kaillerasrv.exe 版本和客户端版本建议用同一套(比如都从 WinKawaks.full.zip 里取)
- 不同版本的客户端/服务器可能有协议差异导致连接失败
第五步:ROM CRC 匹配
能连上服务器但 Join 不上房间?大概率是 ROM 版本不匹配:
- 在服务器列表里选中对方的房间
- Join 时如果弹出 "ROM CRC mismatch" 或类似提示 → 确认双方的 ROM ZIP CRC 值完全一致
- 让房主告诉你他用的 ROM 具体版本名(比如 "World 版" 还是 "Asia 版")
- 下载相同版本的 ROM
ROM CRC 不匹配的后果:
| 阶段 | 不匹配表现 |
|---|---|
| 加入房间时 | Join 被服务器拒绝,弹 CRC mismatch 提示 |
| 勉强加入后开始对战 | 双方画面不同步、操作无反应、卡住不动 |
其他常见联机问题
联机时按键延迟很高(> 150ms)
- 换个离你更近的公网服务器
- 局域网对战应该只有 1-5ms 延迟
- 国内联机尽量连国内服务器,跨洋服务器延迟会高很多
有人掉线整个房间崩了
- Kaillera 协议没有断线重连机制
- 某个人网络抖动或断连会导致 Lockstep 不同步
- 解决:找网络稳定的服务器,或者用 GGPO / Parsec 等新一代协议
服务器列表是空的
你创建了房间但 Kaillera 客户端窗口里看不到?检查 kaillerasrv.exe 是否还在运行中。服务器窗口显示的在线数和房间数对不对。