因为比较高配的服务器用的自家的宽带,只有公网 ipv6 ,没有 ipv4 。之前联机都是游戏内支持自定义 ip+端口,然后通过轻量云服务器搭建的 frp 做端口转发实现联机。
最近玩新的游戏,非生物因子,这游戏没有提供控制台直输命令自定义 ip+端口(可能是我没找到),只能在游戏内提供的大厅找房间或者局域网游玩。
最开始尝试过 frp 端口转发无效,然后尝试 openvpn
openvpn 的方案是在高配服务启动的 openvpn 服务+云服务器的 frp 端口转发实现,通过异地机器的内网 ip 访问 nginx 成功,但是游戏内找不到服务器。
然后尝试 zerotier ,也是同样的可以通过分配的组网 ip 访问到 nginx ,但是局域网游戏还是找不到
目前这个游戏服务器是在 docker 搭建的,最开始用的 bridger 的网络模式,朋友 1 (服务器在他家)通过局域网是能找到的,朋友 2 、3 、4 包括我都找不到。后面我将容器的网络改成了 host 模式,一样无果。
后面搜索到一个相关的问题,linux 游戏开服务但是 windows 搜不到,但是对网络知识实在欠缺,看的不是太懂,模仿尝试了一下并没有效果。
后面为了排除 linux 和 windows 之间的问题,尝试过 windows 开服务器,但是另一端的人局域网也搜不到房间。
然后开始怀疑游戏的局域网搜索方式,用 wireshark 抓包,也没什么效果 - -
希望大神指导下,折腾好久
贴一下成果,目前已经可以搜到局域网的服务器了
今天折腾到这一步的时候,网络上已经是全通的了,但是就没有按常理是通的
想到游戏服务器部署在docker,网络用的bridge模式,绑的172网段。抱着试试的心态改成了host模式,就成功了。
至于前面wireshark为什么抓不到zerotier网卡的流量还在排查
目前基本可以确定怎么实现的了,能够访问通靠的是WinIPBroadcast
我给朋友再配环境的时候,刚加入zerotier虚拟网络时,查看路由表已经存在255.255.255.255到zerotier网卡的路由了,而且优先级也不算低,然后尝试了一下直接搜局域网搜不到
然后让朋友安装 WinIPBroadcast 后重启(貌似重启也是个关键步骤),再去观察路由表,没有任何变化,但是已经可以搜到局域网游戏了
然后我尝试把 WinIPBroadcast 的服务改成手动,并且停了,重启电脑,发现还是可以搜索到局域网游戏,实在不懂 WinIPBroadcast 的原理了,希望有大佬请教下,下图就是关闭服务,并重启,但是还能搜到局域网的图
1
eijnix 140 天前
看看是不是这个问题 https://bugxia.com/3128.html
|
2
tediorelee 140 天前
我前段时间和朋友找游戏玩也研究过这个, 确实貌似没有看到 ip+port 直连的地方, 不知道现在有没有; 一般 steam 的 dedicated server 会有个游戏端口, 还有一个用来“广播”到服务器列表的端口, 如果那个端口不通的话肯定服务器列表页面看不到
你可以试试在 steam 的软件左上角, 找到 View-Game Servers-Favorite, 把你的服务器添加进去, 点连接看看能不能加入 |
4
bobryjosin 140 天前 via iPad
用 softether 打通 2 层就行了
|
5
feimin 140 天前
有没有试试其他方式比如皎月链 或者 tailscale 组网等
|
6
mawen0726 OP @tediorelee 收藏的我也试过了,能加进收藏列表,但是感觉游戏有 bug ,从收藏那里点连接,启动了游戏,就只启动了游戏,并不会自动加入对应的服务器...
github 上也找到过 [方案]( https://github.com/Pleut/abiotic-factor-linux-docker/issues/4#issuecomment-2118034064) ,在启动命令加 +connect ip:port 但是也解决不了 |
8
NessajCN 140 天前
有效信息太少,只能给你算一卦了
能找到朋友 1 找不到其他人,那可能是路由没设对 |
9
Turismo 140 天前
公网+密码/白名单 ?还是说喜欢折腾点不一样的
|
10
iceecream 140 天前
1:cmd 输入 route print 看看是不跃点数的问题
2:wireshark 抓包,看看 往 “游戏客户端上”配置的“游戏服务器地址” 发包的源地址是哪个,然后 route add 手动添加路由就行。 |
11
Turismo 140 天前
看错了一行 sorry
|
12
mawen0726 OP @NessajCN
![服务器路由表]( https://img.erpweb.eu.org/imgs/2024/07/91d6a8fdbd8c5ef5.png) 因为服务器是假设在朋友 1 的家里的,服务器和朋友 1 同属于同一个物理网络 |
13
patrickwangqy 140 天前
sing-box 开 tun 模式
|
14
gam2046 140 天前
另一种解决方案呢,如果家里的上行带宽能有 20Mbps ,可以尝试下远程串流。
我自己尝试过广域网串流,720P 10Mbps ,基本上是能玩的程度,整体网络延迟大约 20ms 左右。 |
15
ns2250225 140 天前
可以试试 happynet
|
16
zbatman 140 天前
之前给朋友解决 恐怖黎明 这个游戏的联机,就是用的 zerotier ,延迟很低。
但是这款游戏的设置页面能选网卡,必须双方都选到 zerotier 创建的虚拟网卡,才可以互相发现,不知道这款游戏支不支持。 |
17
frzquantum 140 天前
|
18
Jhma 140 天前
openvpn 改成 tun 模式看看,客户端获得的 IP 地址跟你局域网是同一个网段的
|
19
ldyisbest 140 天前
openvpn 改成 tun 模式就可以了,我试过玩局域网的 war3
|
20
tediorelee 140 天前
@mawen0726 那跟我当时的情况一样了, 我也是收藏的服务器那里点连接之后, 加入不进去, 所以当时就放弃这游戏玩其他的去了(
|
23
walkingmoonwell 140 天前
想问问你们这玩的是什么游戏?
|
24
mawen0726 OP @NessajCN
![本地的 windows 路由表]( https://img.erpweb.eu.org/imgs/2024/07/0c2f0b4b62759246.png) (说实话路由表不是很会看,windows 的更不会看了) |
25
mawen0726 OP @walkingmoonwell
我应该是在非生物因子那里做了 steam 的链接的... https://store.steampowered.com/app/427410/Abiotic_Factor/?l=schinese |
26
mawen0726 OP @tediorelee 想着折腾下,后面再玩这种游戏就不用再折腾了。然后 vpn 和组网老早也想弄一下了,正是个契机,嘿嘿
|
29
tediorelee 140 天前
@mawen0726 我觉得这个更偏向是游戏本身的问题, 不提供 ip+端口直连的方式, 其他可以开私服的游戏我都是直接跑一个 server 然后把 tailscale 分享给朋友他们直接打洞直连很简单
|
30
stonerAAA 140 天前
也许你在找这个: https://www.radmin-lan.cn/
|
31
sudosu 140 天前 via iPhone
parsec
|
32
Vitumoc 140 天前
可以试试 n2n ,通过公网服务器把不同局域网的主机组织到一个局域网下
这是一个我之前搭建的示例 https://vitsumoc.github.io/n2nBeginner.html 这是一个支持 IPV6 的 n2n https://github.com/mxre/n2n |
33
HoverCHN 140 天前 1
应该是局域网游戏的广播问题,局域网联机的游戏基本上是通过向 255.255.255.255 发送 UDP 广播数据包来传播游戏房间信息,如果通过实际局域网能发现游戏,而虚拟局域网不能,说明广播包没有被广播到对应虚拟网卡上或其他主机没有收到广播包。
你提到的那个 reddit 问题,是因为其 linux 设备上 zerotier 虚拟网卡没有正确收到广播,手动添加了一条“sudo route add -host 255.255.255.255 dev my_zeroztier_interface”路由 |
34
mawen0726 OP @iceecream
![本地的 windows 路由表]( https://img.erpweb.eu.org/imgs/2024/07/0c2f0b4b62759246.png) 看着广播的 255.255.255.255 的优先级还是蛮高的,但是 0.0.0.0 的优先级就是最低的了... |
36
mawen0726 OP @Vitumoc
感觉 n2n 和 zerotier 核心逻辑是一样的,都是将异地的机器组织到一个虚拟网络下,你可以看下我这个照片 https://img.erpweb.eu.org/imgs/2024/07/003ff8789a472891.png 现在感觉是组网成功了,毕竟 nginx 能访问,但像是卡在游戏局域网发现的机制上了 |
37
ldyisbest 140 天前
@mawen0726 记反了,应该是 tap 模式,可以参考这个帖子 https://www.v2ex.com/t/941856
|
38
thereone 139 天前
都用 softether 不就行了,这个三层二层完全没有问题特别是你这种场景的需求。
|
39
CczYa 139 天前
可能的原因比较多哦。
先查查路由表吧? 你的机器什么网段? openvpn 什么网段?服务器什么网段啊? |
40
seeyourface 139 天前
没几个人就用蒲公英好了,省了折腾
|
41
mawen0726 OP @CczYa
暂时放弃了 openvpn 的方案了,感觉没有 zerotier 优雅 昨晚在 win 系统用 wireshark 抓包 zerotier 网卡的数据,一直没有抓到,不知道为什么。 刚刚瞎捣鼓了一下,现在 wireshark 抓到了数据,确实找局域网游戏走的 255.255.255.255 。 在服务器端,用 iftop 也监听到 win 打过来的流量了,但是不知道还是不行 https://img.erpweb.eu.org/imgs/2024/07/849bab70ca737522.png |
42
mawen0726 OP @tediorelee 弄成功了,可以去看看我第一个贴条
@HoverCHN 应该就是 windows 广播用 255.255.255.255 的问题了,本身没有路由让 255.255.255.255 到 zerotier 的网卡,WinIPBroadcast 安装之后给每个网卡都加了这一条路由貌似就可以了,然后就是 docker 的网络模式问题了 |
43
ragnaroks 139 天前 1
简而言之,虚拟局域网的优先级不够高,(使用系统默认实现的)广播没(正确)发出去,zerotier 文档中也提到这个问题 https://docs.zerotier.com/windows-lan-game/,如果是用家里机器开服务端,可以用虚拟机开,并在虚拟机里面装 zerotier 即可避免此类问题,可能需要配置宿主机到虚拟机的端口 1 比 1 映射( host:27015 => virt:27015 )。
|
44
ragnaroks 139 天前
很久以前贪便宜弄了一堆云桌面开 csgo 的服务端就遇到过这个问题,只能使用 windows7 不说出口 IP 几十分钟变一次
|
46
allenby 138 天前 via Android
估计是用的广播包,得要支持广播才行,还得看这个游戏需不需要无 nat 到 pc
|
47
tediorelee 138 天前
@mawen0726 学习了,已收藏
|