You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署AzerothCore后客户端仍用回环地址连接问题求助

问题描述

我克隆了AzerothCore的master分支(提交哈希为42a1650d3146e025d996ce5b9b5dfbd9bd8fbe88),按照文档完成Docker构建、端口暴露等操作。但更新realmlist为可公网访问的DNS条目后,抓包显示客户端仍尝试通过回环地址连接。

我的DNS条目可解析到正确的公网IP,且未在hosts文件中配置,8085端口也可通过telnet从测试客户端访问。

realmlist查询结果

mysql> select * from realmlist\G
*************************** 1. row ***************************
                  id: 1
                name: BB Home
             address: boonebytes.example.internet.accessible
        localAddress: 127.0.0.1
     localSubnetMask: 255.255.255.0
                port: 8085
                icon: 0
                flag: 0
            timezone: 1
allowedSecurityLevel: 0
          population: 0
           gamebuild: 12340
1 row in set (0.00 sec)

认证服务器日志片段(已识别DNS条目)

Updating Auth database...
>> Auth database is up-to-date! Containing 1 new and 35 archived updates.

Started auth database connection pool.
Loading IP Location Database...

Added realm "BB Home" at boonebytes.example.internet.accessible:8085.
Ping MySQL to keep connection alive

世界服务器日志片段

AzerothCore rev. unknown 1970-01-01 00:00:00 +0000 (Archived branch)
(Unix, RelWithDebInfo, Static) (worldserver-daemon) ready...
Starting up Auction House Listing thread...
Calendar deletion of old events.
AC> Update time diff: 2. Players online: 0.
Update time diff: 1. Players online: 0.

抓包情况

Wireshark抓包显示,服务器返回给客户端的Realmlist响应包中包含回环地址(公网访问,无VPN),且抓包未发现客户端尝试连接8085端口,仅连接3724端口。

Wireshark截图,显示BB Home的服务器套接字为127.0.0.1:8085


解决方案

1. 检查并修改authserver.conf的强制局域网地址配置

打开authserver.conf文件,找到ForceLocalAddress选项,确保其值为0(该配置强制所有客户端使用localAddress,默认应为0):

ForceLocalAddress = 0

修改后重启authserver服务。

2. 调整realmlist表的子网掩码或统一地址

当前realmlist的localSubnetMask为255.255.255.0,若authserver因Docker网络误判客户端IP归属局域网,可通过以下两种方式修复:

  • 若无需区分局域网与公网客户端,直接将localAddress与公网address统一:
    UPDATE realmlist SET localAddress = 'boonebytes.example.internet.accessible' WHERE id = 1;
    
  • 若需保留局域网适配,将localSubnetMask设为更严格的子网(仅匹配127.0.0.1自身):
    UPDATE realmlist SET localSubnetMask = '255.255.255.255' WHERE id = 1;
    

执行SQL后重启authserver。

3. 修复Docker网络的客户端IP获取问题

Docker bridge模式默认会做NAT转换,导致authserver无法获取客户端真实公网IP,进而误判为局域网用户。可通过以下方式解决:

  • 使用Docker host网络模式运行服务(需注意端口冲突):
    docker run --network=host [你的容器参数]
    
  • 若保留bridge模式,确保authserver.conf的BindIP设为0.0.0.0,同时在Docker run命令中正确映射端口:
    docker run -p 3724:3724 -p 8085:8085 [你的容器参数]
    

并开启Docker主机的IP转发功能,确保容器能获取真实客户端IP。

4. 验证服务重启生效

修改配置或数据库后,必须重启authserver和worldserver,查看authserver日志确认出现Added realm "BB Home" at boonebytes.example.internet.accessible:8085.,说明配置已加载。


内容的提问来源于stack exchange,提问作者boonebytes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 21:07:40