• 请不要在回答技术问题时复制粘贴 AI 生成的内容
edward1987
V2EX  ›  程序员

请教下 war3 局域网远程联机问题

  •  
  •   edward1987 · May 22, 2023 · 7161 views
    This topic created in 1266 days ago, the information mentioned may be changed or developed.

    背景:和朋友最近复古打机,玩 war3 ,想各自在家的时候也能玩,查资料得知 war3 局域网是通过 udp:6112 + tcp:6112 两种交互完成

    我有一台腾讯云的 vps 。

    尝试 1:我的电脑 A,朋友电脑 B,朋友家有一台和 B 局域网的服务器 C 。

    通过 vps+gost ,在 C 上开启本地端口( udp+tcp) 6112 并转发到 VPS 上,在我的电脑 A 上通过远程端口转发 ( rtcp 和 rudp ),将 VPS 上的请求转发到我本地 6112 上。

    整体调用链是:B 开了房间,会全局广播 UDP ,C 收到广播,通过 VPS 转发到我本地 6112 端口。 但是 UDP 转发却失败了,每次广播我本地是有看到请求的,但是 C 上面一直报 i/o timeout 。我电脑上也看不到房间。方案一失败,不知道为何?

    尝试 2: 组建 zerotier 内网,组建成功,设备都加入了同一个子网,也能 ping 的通,延时 30ms 。但是还是看不到房间,udp 的广播一点都没收到,我也不知道为啥😂

    大佬们有啥好的方案嘛? 或者帮忙看看我的方案有啥问题,中年人打机不容易

    Supplement 1  ·  May 22, 2023
    谢谢大家的建议,今晚回去我试试 UP 平台~
    Supplement 2  ·  May 23, 2023
    昨晚试了,UP 平台可以,就不继续折腾了~ 谢谢大家
    Supplement 3  ·  May 31, 2023
    2023-05-31 更新

    关于 UP 平台,之前是自己开房试了自定义地图,没问题。 昨晚和朋友玩,如果是平台自带的图没问题,但是本地的图另一个人进不了房间,一直报下载失败。

    于是重拾 zerotier ,感谢 @LinePro 的指点,将 zerotier 网卡跃点数设置为小于 以太网的就行了,成功通过 zerotier 联网,并且玩了一把没问题。
    50 replies  •  2023-05-23 20:57:07 +08:00
    liuzhedash
    liuzhedash
    May 22, 2023
    1
    没理解 C 的用途是啥,只是看 udp 广播有没有广播出去?
    其实有个简单的思路,在 vps 上搭个 openvpn ,然后 AB 都连上去。
    bruce0
    bruce0
    May 22, 2023
    2
    VPN 应该能解决这个问题吧, 一个人开 VPN 服务, 另一个人连接上去, 前提是开 VPN 服务的那个人需要有公网 IP
    FlyPuff
    FlyPuff
    May 22, 2023 via Android
    3
    最无脑的解决方法,这种现成的 xx 对战平台就支持的游戏,直接用就好了诶。不过,不知道这些对战平台还健在没有,很多年没玩过了。。。
    ikuan
    ikuan
    May 22, 2023❤️1
    4
    这个之前玩文明 6 局域网连接研究过,挺复杂的,试过一堆开源软件,而且 windows 上还要配虚拟网卡的优先级,还得看当前网络 nat 类型啥的,不过有个现成的软件解决方案 搜搜 EasyN2N(小黄鸭),亲测可用。
    bruce0
    bruce0
    May 22, 2023
    5
    @bruce0 具体的我也没有搭建过, 你可以搜一下 open vpn 的搭建方式 我们公司居家办公的的时候用的就是 open vpn 连接到公司内网, 两个人联机打游戏, 只要模拟链接到另一个人的内网应该能满足
    edward1987
    edward1987
    OP
    May 22, 2023
    6
    @liuzhedash C 作用是收到广播并转发广播用,没有 C 的话我不知道咋直接转发😂,openVPN 我看看~
    @bruce0 嗯好我下次试下 openvpn
    @FlyPuff 对战平台现在存活的很少了,不支持自己开图了
    yswb
    yswb
    May 22, 2023❤️1
    7
    windows 的 udp 广播只发一个网卡,试试类似 https://github.com/ubihazard/broadcast 这样的工具,把广播发到所有网卡(理论可行,我没试过)
    edward1987
    edward1987
    OP
    May 22, 2023
    8
    @yswb zerotier 确实有可能是这个问题!下回我试下
    @ikuan 好,下回我试试 EasyN2N~
    ipfox
    ipfox
    May 22, 2023
    9
    @FlyPuff +1 ,省的折腾
    root01
    root01
    May 22, 2023
    10
    n2n 专门搞这个的
    fuzzys
    fuzzys
    May 22, 2023
    11
    radmin vpn 专门局域网联机用的,甚至不需要 vps
    documentzhangx66
    documentzhangx66
    May 22, 2023
    12
    1.技术上:
    A.你朋友家里,FRP 服务器 C 的 war3 Server 端口到 VPS 的任意端口。
    B.你的 PC ,socat 转发 war3 client 本地端口到 VPS 的相关端口。

    你第一次搞这事的话,整个调试过程非常麻烦。

    2.使用 zerotier ,VPS 上建立 moon 节点,然后服务器 C 与你的电脑安装 leaf 节点,你的电脑能直接 ping 通服务器 C 就够了。

    3.以上两条方案,我都不建议。我建议你使用现成的对战平台。

    4.但以上 3 条方案,我也不太建议。因为现在 Steam 上面有非常多的好玩的联机游戏,你和朋友玩,不超过 4 个人,我强推 Deep Rock Galactic 。这游戏现在是 Steam 上组队 PVE TOP 1 的游戏。你可以去 B 站看看游戏视频。
    dode
    dode
    May 22, 2023 via Android
    13
    两边都是家庭宽带,有公网 IP 吗,直接端口映射,wiregurad 组网看看,
    CheckMySoul
    CheckMySoul
    May 22, 2023
    14
    试试 openvpn 的桥接模式,腾讯云 vps 启动 openvpn 服务 tap 桥接模式,你和朋友练上去,网卡分配 VPC 的 IP ,具体看这 https://community.openvpn.net/openvpn/wiki/BridgingOverview 和 https://community.openvpn.net/openvpn/wiki/BridgingAndRouting
    lesismal
    lesismal
    May 22, 2023❤️1
    15
    搭个 BN 大家一起玩?
    https://github.com/pvpgn/pvpgn-server
    Hansah
    Hansah
    May 22, 2023
    16
    整那么麻烦干嘛,11 平台自建地图房
    happyn
    happyn
    May 22, 2023
    17
    我们的服务 happyn ,基于 n2n 的,可以用于游戏联机:
    missdeer
    missdeer
    May 22, 2023
    19
    记得当年 war3 联机是用 IPX 啥的协议,像浩方之类的平台是在 TCP/IP 上模拟出来的。
    GuuJiang
    GuuJiang
    May 22, 2023 via iPhone
    20
    搜索 Battle.Lan ,当年上大学时都用这个来和其他栋楼的寝室甚至其他学校的人联机
    LuffyGu
    LuffyGu
    May 22, 2023
    21
    有现成的不用,非得造个轮子吗?
    Huelse
    Huelse
    May 22, 2023
    22
    我在想能不能通过 wireguard/zerotier 来实现?能指定网卡或网段就好。
    LaGeNanRen
    LaGeNanRen
    May 22, 2023
    23
    如果你不是为了讨论技术问题,只是为了满足联机需求,为什么不考虑一下现成的各大平台呢
    exqibao
    exqibao
    May 22, 2023
    24
    可以搭建 N2N ,war3 联机玩没啥问题。

    不过有些局域网游戏找不到房间,可以尝试修改网卡优先级,和禁用多余网卡,只保留物理网卡和 n2n 虚拟网卡。
    knva
    knva
    May 22, 2023❤️1
    25
    特地试了下,zerotier 可以
    Champa9ne
    Champa9ne
    May 22, 2023
    26
    为啥不用 wireguard 异地组网?既然有云服务器,云服务器做 wg 主节点,两边家庭宽带连过去不就得了。

    国内的云服务器基本都是低带宽低延迟的状态,做这个贼适合。毕竟联机也不会有很多流量过。
    cloudfox
    cloudfox
    May 22, 2023
    27
    @edward1987 11 平台 up 平台都支持自己开图啊,找一下入口
    edward1987
    edward1987
    OP
    May 22, 2023
    28
    @siknet
    @LaGeNanRen
    @cloudfox
    朋友上次下载了 11 平台,说是要账号达到多少等级才支持自己开图 我下载试试看,如果可以我也不想折腾😂
    edward1987
    edward1987
    OP
    May 22, 2023
    29
    @knva 我的不行诶,ping 的通倒是没 udp 广播,不知道是不是因为两个人是不同运营商的原因
    LaGeNanRen
    LaGeNanRen
    May 22, 2023
    30
    @edward1987 太多了,当年的浩方,联众世界,qq 对战平台,网易有个平台,11 等等等,就算你朋友说的有限制,你付费那点点钱也比你自己捣鼓的成本要低多了
    LinePro
    LinePro
    May 22, 2023❤️2
    31
    1. 单说 war3 联机的话可以看看 UP 对战平台 https://www.reckfeng.com (前身是网易和暴雪还没闹掰之前的官方对战魔兽平台),印象中开自定义图是不需要付费的。
    2. 不管 ZeroTier 方案还是 OpenVPN Tap 方案,要记得将所用的虚拟网卡 IPv4 的跃点数设置成 1 (或者手动修改路由表优先级),确保 UDP 广播包能够发送到虚拟网卡上。还有一点就是系统防火墙要放行游戏的流量,允许入站。这对于其他局域网联机游戏来说也适用。
    ysc3839
    ysc3839
    May 22, 2023 via Android
    32
    最不折腾的方案是 VPS 装个 OpenWrt ,然后配置 OpenVPN tap 模式,IP 地址由 OpenWrt 分配,这样就组建了虚拟的以太网,这些依赖以太网广播啥的游戏也就能玩了。这个基础上再弄一下就可以支持 UPnP 以及 Fullcone NAT ,玩一些 P2P 网游(如 GTAOL)也能解决问题。
    arrhenius
    arrhenius
    May 22, 2023
    33
    回忆流走一波
    ql562482472
    ql562482472
    May 22, 2023
    34
    我 08 年玩的时候是用 hamachi 。10 年网络恢复之后就是各种对战平台 qq 对战平台、浩方对战平台 之类的。
    14 年之后就不怎么玩了
    zjsxwc
    zjsxwc
    May 22, 2023
    35
    frp 是支持 udp 的,比如例子里

    https://github.com/fatedier/frp#forward-dns-query-requests

    这个公网 server 转发 udp 请求到 client ,client 再转发到 google 的 udp dns 服务器。
    bobbyshmurda
    bobbyshmurda
    May 22, 2023
    36
    整这么复杂。。。
    还是去平台吧,虽然最多人玩的网易平台已经去世,但是浩方 /11 还是经典的味道
    zeusho871
    zeusho871
    May 22, 2023 via Android
    37
    easyn2n ,很好用
    MeikoZh
    MeikoZh
    May 22, 2023
    38
    openvpn 简单又快捷应该是没问题的。我之前也和朋友联机用其他平台,后来自己搭在 vps 上就好了,现在你测试过了么?
    lisxour
    lisxour
    May 22, 2023
    39
    @bobbyshmurda 没死,换名字了,叫 UP 对战平台,就是改了 LOGO ,文件数据、界面全都一毛一样的。😂
    keller
    keller
    May 22, 2023
    40
    不是有各种对战平台吗?费这个事干啥?
    vdrapb
    vdrapb
    May 22, 2023❤️1
    41
    @edward1987 我和我朋友一直都是用的 UP 对战平台。自己开图也没有等级限制
    palxie
    palxie
    May 22, 2023
    42
    你们当年没用过 浩方 吗 😂
    sanqian
    sanqian
    May 22, 2023
    43
    UP 平台就好..就是上面的 RPG 图让人恶心
    binyu
    binyu
    May 22, 2023
    44
    那么,古尔丹,代价是什么呢?
    xuzheliang
    xuzheliang
    May 22, 2023❤️1
    45
    我之前也做过联机,你没法连接的问题是因为 war3 对多网卡(或者说多网络适配器)的情况没有做好处理,导致 upd 的广播包发到了错误的网络上,进而不能联机。
    举个例子,如果你同时有 wifi 和网线,那么 war3 可能只走网线或者只走 wifi (具体根据排名,war3 应该永远走第一个)。如果你的好友在另一个网络上,那就无法联机。
    此外,如果你装的有 vmware 等虚拟机,就会安装上虚拟网络适配器,这时候 war3 甚至会只在这些虚拟网段上查找 peer ( zerotier 也会有虚拟网络适配器,甚至你有多个网络还会有多个)。
    解决方案似乎只有禁用其他网络适配器,强迫 war3 用剩下的那个连接,具体用了哪一个,可以用 wireshark 抓包来查看。最后,记得关闭 windows 的防火墙,不然你会倒在黎明前的黑暗里。
    py2ex
    py2ex
    May 22, 2023
    46
    hamachi VPN 上面有人提到过
    记得有人说过是通过收发局域网 UDP 包发现房间的
    Meltdown
    Meltdown
    May 23, 2023
    47
    等废半天劲折腾好了还有心情玩吗,直接上平台
    c3de3f21
    c3de3f21
    May 23, 2023❤️1
    48
    @lesismal 欸,这个好,这个好
    LinePro
    LinePro
    May 23, 2023
    49
    @xuzheliang #45
    有关你提的这个问题,可以查看我在 #31 的回复。
    关键就是广播包在路由表里的优先级,调整跃点数即可,不必禁用网卡。
    此外防火墙也不必完全禁用,设置相关程序允许入站即可。
    xuzheliang
    xuzheliang
    May 23, 2023
    50
    @LinePro 受教了,我之前认为是按照某个 API 的返回值取第一个适配器,这样看来,可能是对 0.0.0.0:xx (端口)这种写法的默认表现
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3492 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 112ms · UTC 01:15 · PVG 09:15 · LAX 17:15 · JFK 20:15
    ♥ Do have faith in what you're doing.