V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mawen0726
V2EX  ›  宽带症候群

[远程组网] [异地局域网玩游戏] 相关问题请教

  •  1
     
  •   mawen0726 · 64 天前 · 2723 次点击
    这是一个创建于 64 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为比较高配的服务器用的自家的宽带,只有公网 ipv6 ,没有 ipv4 。之前联机都是游戏内支持自定义 ip+端口,然后通过轻量云服务器搭建的 frp 做端口转发实现联机。

    最近玩新的游戏,非生物因子,这游戏没有提供控制台直输命令自定义 ip+端口(可能是我没找到),只能在游戏内提供的大厅找房间或者局域网游玩。

    最开始尝试过 frp 端口转发无效,然后尝试 openvpn

    openvpn 的方案是在高配服务启动的 openvpn 服务+云服务器的 frp 端口转发实现,通过异地机器的内网 ip 访问 nginx 成功,但是游戏内找不到服务器。 openvpn 成功访问内网 nginx openvpn 找不到局域网游戏

    然后尝试 zerotier ,也是同样的可以通过分配的组网 ip 访问到 nginx ,但是局域网游戏还是找不到 zerotier 组网 zerotier 分配的 ip 访问 nginx 成功 zerotier 找不到局域网的游戏

    目前这个游戏服务器是在 docker 搭建的,最开始用的 bridger 的网络模式,朋友 1 (服务器在他家)通过局域网是能找到的,朋友 2 、3 、4 包括我都找不到。后面我将容器的网络改成了 host 模式,一样无果。

    后面搜索到一个相关的问题,linux 游戏开服务但是 windows 搜不到,但是对网络知识实在欠缺,看的不是太懂,模仿尝试了一下并没有效果。

    后面为了排除 linux 和 windows 之间的问题,尝试过 windows 开服务器,但是另一端的人局域网也搜不到房间。

    然后开始怀疑游戏的局域网搜索方式,用 wireshark 抓包,也没什么效果 - -

    希望大神指导下,折腾好久

    第 1 条附言  ·  63 天前

    贴一下成果,目前已经可以搜到局域网的服务器了

    今天折腾到这一步的时候,网络上已经是全通的了,但是就没有按常理是通的

    想到游戏服务器部署在docker,网络用的bridge模式,绑的172网段。抱着试试的心态改成了host模式,就成功了。

    至于前面wireshark为什么抓不到zerotier网卡的流量还在排查

    第 2 条附言  ·  63 天前

    目前基本可以确定怎么实现的了,能够访问通靠的是WinIPBroadcast

    我给朋友再配环境的时候,刚加入zerotier虚拟网络时,查看路由表已经存在255.255.255.255到zerotier网卡的路由了,而且优先级也不算低,然后尝试了一下直接搜局域网搜不到

    然后让朋友安装 WinIPBroadcast 后重启(貌似重启也是个关键步骤),再去观察路由表,没有任何变化,但是已经可以搜到局域网游戏了

    然后我尝试把 WinIPBroadcast 的服务改成手动,并且停了,重启电脑,发现还是可以搜索到局域网游戏,实在不懂 WinIPBroadcast 的原理了,希望有大佬请教下,下图就是关闭服务,并重启,但是还能搜到局域网的图

    服务停止依然可以搜索局域网

    47 条回复    2024-07-18 13:35:59 +08:00
    eijnix
        1
    eijnix  
       64 天前
    看看是不是这个问题 https://bugxia.com/3128.html
    tediorelee
        2
    tediorelee  
       64 天前
    我前段时间和朋友找游戏玩也研究过这个, 确实貌似没有看到 ip+port 直连的地方, 不知道现在有没有; 一般 steam 的 dedicated server 会有个游戏端口, 还有一个用来“广播”到服务器列表的端口, 如果那个端口不通的话肯定服务器列表页面看不到
    你可以试试在 steam 的软件左上角, 找到 View-Game Servers-Favorite, 把你的服务器添加进去, 点连接看看能不能加入
    mawen0726
        3
    mawen0726  
    OP
       64 天前
    @eijnix 我粗读了一下跟我 reddit 找的很像,也是什么广播的,我去试试
    bobryjosin
        4
    bobryjosin  
       64 天前 via iPad
    用 softether 打通 2 层就行了
    feimin
        5
    feimin  
       64 天前
    有没有试试其他方式比如皎月链 或者 tailscale 组网等
    mawen0726
        6
    mawen0726  
    OP
       64 天前
    @tediorelee 收藏的我也试过了,能加进收藏列表,但是感觉游戏有 bug ,从收藏那里点连接,启动了游戏,就只启动了游戏,并不会自动加入对应的服务器...
    github 上也找到过 [方案]( https://github.com/Pleut/abiotic-factor-linux-docker/issues/4#issuecomment-2118034064) ,在启动命令加 +connect ip:port 但是也解决不了
    mawen0726
        7
    mawen0726  
    OP
       64 天前
    @feimin 我现在的感觉是跟组网应该没什么关系了(笑哭),感觉是游戏,或者说 steam 局域网发现服务的规则的问题
    NessajCN
        8
    NessajCN  
       64 天前
    有效信息太少,只能给你算一卦了
    能找到朋友 1 找不到其他人,那可能是路由没设对
    Turismo
        9
    Turismo  
       64 天前
    公网+密码/白名单 ?还是说喜欢折腾点不一样的
    iceecream
        10
    iceecream  
       64 天前
    1:cmd 输入 route print 看看是不跃点数的问题
    2:wireshark 抓包,看看 往 “游戏客户端上”配置的“游戏服务器地址” 发包的源地址是哪个,然后 route add 手动添加路由就行。
    Turismo
        11
    Turismo  
       64 天前
    看错了一行 sorry
    mawen0726
        12
    mawen0726  
    OP
       64 天前
    @NessajCN
    ![服务器路由表]( https://img.erpweb.eu.org/imgs/2024/07/91d6a8fdbd8c5ef5.png)
    因为服务器是假设在朋友 1 的家里的,服务器和朋友 1 同属于同一个物理网络
    patrickwangqy
        13
    patrickwangqy  
       64 天前
    sing-box 开 tun 模式
    gam2046
        14
    gam2046  
       64 天前
    另一种解决方案呢,如果家里的上行带宽能有 20Mbps ,可以尝试下远程串流。

    我自己尝试过广域网串流,720P 10Mbps ,基本上是能玩的程度,整体网络延迟大约 20ms 左右。
    ns2250225
        15
    ns2250225  
       64 天前
    可以试试 happynet
    zbatman
        16
    zbatman  
       64 天前
    之前给朋友解决 恐怖黎明 这个游戏的联机,就是用的 zerotier ,延迟很低。
    但是这款游戏的设置页面能选网卡,必须双方都选到 zerotier 创建的虚拟网卡,才可以互相发现,不知道这款游戏支不支持。
    frzquantum
        17
    frzquantum  
       64 天前
    n2n supernode: https://github.com/ntop/n2n
    n2n windows 客户端: https://bugxia.com/357.html
    Jhma
        18
    Jhma  
       64 天前
    openvpn 改成 tun 模式看看,客户端获得的 IP 地址跟你局域网是同一个网段的
    ldyisbest
        19
    ldyisbest  
       64 天前
    openvpn 改成 tun 模式就可以了,我试过玩局域网的 war3
    tediorelee
        20
    tediorelee  
       64 天前
    @mawen0726 那跟我当时的情况一样了, 我也是收藏的服务器那里点连接之后, 加入不进去, 所以当时就放弃这游戏玩其他的去了(
    NessajCN
        21
    NessajCN  
       64 天前
    @mawen0726 你自己机器的路由表呢
    内网地址默认是不走路由的,也就是你往 10.11.12.31 这些内网地址发包都不会经过 10.11.12.1
    NessajCN
        22
    NessajCN  
       64 天前
    @mawen0726 内网地址默认不走网关,错字纠正一下
    walkingmoonwell
        23
    walkingmoonwell  
       64 天前
    想问问你们这玩的是什么游戏?
    mawen0726
        24
    mawen0726  
    OP
       64 天前
    @NessajCN
    ![本地的 windows 路由表]( https://img.erpweb.eu.org/imgs/2024/07/0c2f0b4b62759246.png)
    (说实话路由表不是很会看,windows 的更不会看了)
    mawen0726
        25
    mawen0726  
    OP
       64 天前
    @walkingmoonwell
    我应该是在非生物因子那里做了 steam 的链接的...
    https://store.steampowered.com/app/427410/Abiotic_Factor/?l=schinese
    mawen0726
        26
    mawen0726  
    OP
       64 天前
    @tediorelee 想着折腾下,后面再玩这种游戏就不用再折腾了。然后 vpn 和组网老早也想弄一下了,正是个契机,嘿嘿
    mawen0726
        27
    mawen0726  
    OP
       64 天前
    @ldyisbest
    @Jhma
    我去试试~
    NessajCN
        28
    NessajCN  
       64 天前
    @mawen0726 想办法加一条 10.11.12.0/24 via 10.11.12.1 ,如上所述内网发包默认不走网关
    tediorelee
        29
    tediorelee  
       64 天前
    @mawen0726 我觉得这个更偏向是游戏本身的问题, 不提供 ip+端口直连的方式, 其他可以开私服的游戏我都是直接跑一个 server 然后把 tailscale 分享给朋友他们直接打洞直连很简单
    stonerAAA
        30
    stonerAAA  
       64 天前
    也许你在找这个: https://www.radmin-lan.cn/
    sudosu
        31
    sudosu  
       64 天前 via iPhone
    parsec
    Vitumoc
        32
    Vitumoc  
       64 天前
    可以试试 n2n ,通过公网服务器把不同局域网的主机组织到一个局域网下

    这是一个我之前搭建的示例

    https://vitsumoc.github.io/n2nBeginner.html

    这是一个支持 IPV6 的 n2n

    https://github.com/mxre/n2n
    HoverCHN
        33
    HoverCHN  
       64 天前   ❤️ 1
    应该是局域网游戏的广播问题,局域网联机的游戏基本上是通过向 255.255.255.255 发送 UDP 广播数据包来传播游戏房间信息,如果通过实际局域网能发现游戏,而虚拟局域网不能,说明广播包没有被广播到对应虚拟网卡上或其他主机没有收到广播包。
    你提到的那个 reddit 问题,是因为其 linux 设备上 zerotier 虚拟网卡没有正确收到广播,手动添加了一条“sudo route add -host 255.255.255.255 dev my_zeroztier_interface”路由
    mawen0726
        34
    mawen0726  
    OP
       64 天前
    @iceecream
    ![本地的 windows 路由表]( https://img.erpweb.eu.org/imgs/2024/07/0c2f0b4b62759246.png)
    看着广播的 255.255.255.255 的优先级还是蛮高的,但是 0.0.0.0 的优先级就是最低的了...
    mawen0726
        35
    mawen0726  
    OP
       64 天前
    @NessajCN
    10.11.12.1 ,小白想问下这个 ip (或者叫网关吗?)是怎么计算来的,我去 ping 了一下这个地址没有响应...
    mawen0726
        36
    mawen0726  
    OP
       64 天前
    @Vitumoc
    感觉 n2n 和 zerotier 核心逻辑是一样的,都是将异地的机器组织到一个虚拟网络下,你可以看下我这个照片
    https://img.erpweb.eu.org/imgs/2024/07/003ff8789a472891.png

    现在感觉是组网成功了,毕竟 nginx 能访问,但像是卡在游戏局域网发现的机制上了
    ldyisbest
        37
    ldyisbest  
       64 天前
    @mawen0726 记反了,应该是 tap 模式,可以参考这个帖子 https://www.v2ex.com/t/941856
    thereone
        38
    thereone  
       64 天前
    都用 softether 不就行了,这个三层二层完全没有问题特别是你这种场景的需求。
    CczYa
        39
    CczYa  
       64 天前
    可能的原因比较多哦。
    先查查路由表吧?
    你的机器什么网段? openvpn 什么网段?服务器什么网段啊?
    seeyourface
        40
    seeyourface  
       63 天前
    没几个人就用蒲公英好了,省了折腾
    mawen0726
        41
    mawen0726  
    OP
       63 天前
    @CczYa
    暂时放弃了 openvpn 的方案了,感觉没有 zerotier 优雅
    昨晚在 win 系统用 wireshark 抓包 zerotier 网卡的数据,一直没有抓到,不知道为什么。
    刚刚瞎捣鼓了一下,现在 wireshark 抓到了数据,确实找局域网游戏走的 255.255.255.255 。
    在服务器端,用 iftop 也监听到 win 打过来的流量了,但是不知道还是不行
    https://img.erpweb.eu.org/imgs/2024/07/849bab70ca737522.png
    mawen0726
        42
    mawen0726  
    OP
       63 天前
    @tediorelee 弄成功了,可以去看看我第一个贴条


    @HoverCHN 应该就是 windows 广播用 255.255.255.255 的问题了,本身没有路由让 255.255.255.255 到 zerotier 的网卡,WinIPBroadcast 安装之后给每个网卡都加了这一条路由貌似就可以了,然后就是 docker 的网络模式问题了
    ragnaroks
        43
    ragnaroks  
       63 天前   ❤️ 1
    简而言之,虚拟局域网的优先级不够高,(使用系统默认实现的)广播没(正确)发出去,zerotier 文档中也提到这个问题 https://docs.zerotier.com/windows-lan-game/,如果是用家里机器开服务端,可以用虚拟机开,并在虚拟机里面装 zerotier 即可避免此类问题,可能需要配置宿主机到虚拟机的端口 1 比 1 映射( host:27015 => virt:27015 )。
    ragnaroks
        44
    ragnaroks  
       63 天前
    很久以前贪便宜弄了一堆云桌面开 csgo 的服务端就遇到过这个问题,只能使用 windows7 不说出口 IP 几十分钟变一次
    mawen0726
        45
    mawen0726  
    OP
       63 天前
    @ragnaroks
    确实是 zerotier 文档有哦,当时去查看过 zerotier 的文档,想着这档事不归它管...
    allenby
        46
    allenby  
       62 天前 via Android
    估计是用的广播包,得要支持广播才行,还得看这个游戏需不需要无 nat 到 pc
    tediorelee
        47
    tediorelee  
       62 天前
    @mawen0726 学习了,已收藏
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5483 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 89ms · UTC 01:35 · PVG 09:35 · LAX 18:35 · JFK 21:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.