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

Docker Host网络下Steam专用服务器连接失败问题求助

Docker部署自研多人游戏Steam专用服务器无法登录Steam的问题

我正在为自研多人游戏部署Docker化的Steam专用服务器,相关配置如下:

Dockerfile

FROM ubuntu:22.04

RUN useradd -m steam
COPY --chown=steam:steam LinuxServer /home/steam/ 
COPY --chown=steam:steam steamclient.so /home/steam/.steam/sdk64/steamclient.so

USER steam 

WORKDIR /home/steam

CMD  ./Server.sh

docker-compose.yml

services:
  server:
    image: server
    network_mode: host

启动容器后,专用服务器无法登录Steam,日志呈现两种矛盾现象:

正常连接测试日志(Steam/logs/connection_log.txt)

[2022-10-11 10:04:10] Connectivity test: Starting test, fetching 'http://test.steampowered.com/204'
[2022-10-11 10:04:10] Connectivity test: OK!
[2022-10-11 10:04:10] Connectivity test: result=Connected (since 0.0s ago), prev=Unknown, in progress=0
[2022-10-11 10:04:22] Connectivity test: Starting test, fetching 'http://test.steampowered.com/204'
[2022-10-11 10:04:22] Connectivity test: OK!
[2022-10-11 10:04:22] Connectivity test: result=Connected (since 11.5s ago), prev=Unknown, in progress=0
[2022-10-11 10:04:23] Connectivity test: Starting test, fetching 'http://test.steampowered.com/204'
[2022-10-11 10:04:23] Connectivity test: OK!

错误日志(Steam/logs/connection_log_7777.txt)

[2022-10-11 10:04:10] IPv6 HTTP connectivity test (ipv6check-http.steamcontent.com / [2a01:bc80:8:103::9b85:fc12]:80 ([2a01:bc80:8:103::9b85:fc12]:80)) - TIMEOUT
[2022-10-11 10:04:12] IPv6 UDP connectivity test (ipv6check-udp.steamcontent.com / 2a01:bc80:a:100::b919:b604) - TIMEOUT
[2022-10-11 10:04:21] [0,0] SetSteamID( [G:1:0] )
[2022-10-11 10:04:21] CCMInterface::YieldingConnect -- calling ISteamDirectory/GetCMListForConnect web api
[2022-10-11 10:04:21] [0,0] SetSteamID( [G:1:0] )
[2022-10-11 10:04:21] GetCMListForConnect -- web API call failed (status = 0)
[2022-10-11 10:04:21] [0,0] PingWebSocketCM() (cm2-iad1.cm.steampowered.com.:443) starting...
[2022-10-11 10:04:21] [0,0] PingWebSocketCM() (cm2-lax1.cm.steampowered.com:27021) starting...
[2022-10-11 10:04:21] [0,0] PingWebSocketCM() (cm1-lax1.cm.steampowered.com:27021) starting...
[2022-10-11 10:04:21] [0,0] PingWebSocketCM() (cm2-iad1.cm.steampowered.com.:443) failed talking to cm (timeout/neterror - Invalid)
[2022-10-11 10:04:21] [0,0] PingWebSocketCM() (cm2-lax1.cm.steampowered.com:27021) failed talking to cm (timeout/neterror - Invalid)
[2022-10-11 10:04:21] [0,0] PingWebSocketCM() (cm1-lax1.cm.steampowered.com:27021) failed talking to cm (timeout/neterror - Invalid)
[2022-10-11 10:04:21] [1,3] Connect() starting connection (eNetQOSLevelMedium, cm2-iad1.cm.steampowered.com.:443, WebSocket)
[2022-10-11 10:04:21] [1,0] ConnectFailed('Connection Failed':0) (0.0.0.0:0, WebSocket)
[2022-10-11 10:04:21] [1,0] Client thinks it can connect via: UDP - yes, TCP - yes, WebSocket:443 - yes, WebSocket:Non443 - yes
[2022-10-11 10:04:21] [0,0] StartAutoReconnect() will start in 4.0 seconds (attempt 1)
[2022-10-11 10:04:22] [0,0] SetSteamID( [G:1:0] )

该服务器在宿主机直接运行时完全正常,我已经使用了host网络模式,理论上网络环境应该和宿主机一致,但仍出现此问题,请问哪里操作有误?


排查与解决方案

1. 强制禁用IPv6

从错误日志看,IPv6连接测试全部超时,Docker的host模式下可能存在IPv6配置不兼容,导致Steam客户端优先尝试IPv6连接失败后无法正常回退到IPv4。

修改docker-compose.yml添加环境变量强制使用IPv4:

services:
  server:
    image: server
    network_mode: host
    environment:
      - STEAMFORCEIPV4=1

或者在Server.sh开头加入:

export STEAMFORCEIPV4=1

2. 替换兼容的steamclient.so

手动从宿主机拷贝的steamclient.so可能存在系统依赖或版本不匹配问题,建议通过SteamCMD在容器内下载对应版本的SDK文件:

修改Dockerfile:

FROM ubuntu:22.04

RUN apt-get update && apt-get install -y steamcmd
RUN useradd -m steam

# 容器内下载Steam SDK
RUN su steam -c "steamcmd +login anonymous +force_install_dir /home/steam/steam_sdk +app_update 1007 +quit"

COPY --chown=steam:steam LinuxServer /home/steam/ 
# 使用容器内下载的steamclient.so
COPY --chown=steam:steam /home/steam/steam_sdk/linux64/steamclient.so /home/steam/.steam/sdk64/steamclient.so

USER steam 
WORKDIR /home/steam

CMD  ./Server.sh

3. 检查网络权限限制

即使使用host模式,容器内用户可能受宿主机防火墙、SELinux规则限制:

  • 临时关闭宿主机防火墙测试:sudo ufw disable(测试后记得恢复)
  • 若SELinux开启,临时设置为宽容模式:sudo setenforce 0

4. 验证Server.sh启动参数

确保Server.sh中没有硬编码绑定特定宿主机IP的参数,避免容器内无法正常监听网络。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 05:55:16