V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
edward1987
V2EX  ›  程序员

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

  •  
  •   edward1987 · 2023-05-22 11:15:38 +08:00 · 4490 次点击
    这是一个创建于 585 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景:和朋友最近复古打机,玩 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 的广播一点都没收到,我也不知道为啥😂

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

    第 1 条附言  ·  2023-05-22 17:05:24 +08:00
    谢谢大家的建议,今晚回去我试试 UP 平台~
    第 2 条附言  ·  2023-05-23 11:11:07 +08:00
    昨晚试了,UP 平台可以,就不继续折腾了~ 谢谢大家
    第 3 条附言  ·  2023-05-31 14:38:15 +08:00
    2023-05-31 更新

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

    于是重拾 zerotier ,感谢 @LinePro 的指点,将 zerotier 网卡跃点数设置为小于 以太网的就行了,成功通过 zerotier 联网,并且玩了一把没问题。
    50 条回复    2023-05-23 20:57:07 +08:00
    liuzhedash
        1
    liuzhedash  
       2023-05-22 11:23:15 +08:00
    没理解 C 的用途是啥,只是看 udp 广播有没有广播出去?
    其实有个简单的思路,在 vps 上搭个 openvpn ,然后 AB 都连上去。
    bruce0
        2
    bruce0  
       2023-05-22 11:25:35 +08:00
    VPN 应该能解决这个问题吧, 一个人开 VPN 服务, 另一个人连接上去, 前提是开 VPN 服务的那个人需要有公网 IP
    FlyPuff
        3
    FlyPuff  
       2023-05-22 11:26:46 +08:00 via Android
    最无脑的解决方法,这种现成的 xx 对战平台就支持的游戏,直接用就好了诶。不过,不知道这些对战平台还健在没有,很多年没玩过了。。。
    ikuan
        4
    ikuan  
       2023-05-22 11:28:47 +08:00   ❤️ 1
    这个之前玩文明 6 局域网连接研究过,挺复杂的,试过一堆开源软件,而且 windows 上还要配虚拟网卡的优先级,还得看当前网络 nat 类型啥的,不过有个现成的软件解决方案 搜搜 EasyN2N(小黄鸭),亲测可用。
    bruce0
        5
    bruce0  
       2023-05-22 11:29:45 +08:00
    @bruce0 具体的我也没有搭建过, 你可以搜一下 open vpn 的搭建方式 我们公司居家办公的的时候用的就是 open vpn 连接到公司内网, 两个人联机打游戏, 只要模拟链接到另一个人的内网应该能满足
    edward1987
        6
    edward1987  
    OP
       2023-05-22 11:31:08 +08:00
    @liuzhedash C 作用是收到广播并转发广播用,没有 C 的话我不知道咋直接转发😂,openVPN 我看看~
    @bruce0 嗯好我下次试下 openvpn
    @FlyPuff 对战平台现在存活的很少了,不支持自己开图了
    yswb
        7
    yswb  
       2023-05-22 11:35:00 +08:00   ❤️ 1
    windows 的 udp 广播只发一个网卡,试试类似 https://github.com/ubihazard/broadcast 这样的工具,把广播发到所有网卡(理论可行,我没试过)
    edward1987
        8
    edward1987  
    OP
       2023-05-22 11:38:39 +08:00
    @yswb zerotier 确实有可能是这个问题!下回我试下
    @ikuan 好,下回我试试 EasyN2N~
    ipfox
        9
    ipfox  
       2023-05-22 11:40:25 +08:00
    @FlyPuff +1 ,省的折腾
    root01
        10
    root01  
       2023-05-22 11:41:43 +08:00
    n2n 专门搞这个的
    fuzzys
        11
    fuzzys  
       2023-05-22 11:45:31 +08:00
    radmin vpn 专门局域网联机用的,甚至不需要 vps
    documentzhangx66
        12
    documentzhangx66  
       2023-05-22 11:48:21 +08:00
    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
        13
    dode  
       2023-05-22 12:39:53 +08:00 via Android
    两边都是家庭宽带,有公网 IP 吗,直接端口映射,wiregurad 组网看看,
    CheckMySoul
        14
    CheckMySoul  
       2023-05-22 12:46:45 +08:00
    试试 openvpn 的桥接模式,腾讯云 vps 启动 openvpn 服务 tap 桥接模式,你和朋友练上去,网卡分配 VPC 的 IP ,具体看这 https://community.openvpn.net/openvpn/wiki/BridgingOverviewhttps://community.openvpn.net/openvpn/wiki/BridgingAndRouting
    lesismal
        15
    lesismal  
       2023-05-22 12:48:39 +08:00   ❤️ 1
    搭个 BN 大家一起玩?
    https://github.com/pvpgn/pvpgn-server
    siknet
        16
    siknet  
       2023-05-22 12:55:00 +08:00
    整那么麻烦干嘛,11 平台自建地图房
    happyn
        17
    happyn  
       2023-05-22 12:58:28 +08:00
    我们的服务 happyn ,基于 n2n 的,可以用于游戏联机:
    happyn
        18
    happyn  
       2023-05-22 12:58:40 +08:00
    missdeer
        19
    missdeer  
       2023-05-22 13:04:36 +08:00
    记得当年 war3 联机是用 IPX 啥的协议,像浩方之类的平台是在 TCP/IP 上模拟出来的。
    GuuJiang
        20
    GuuJiang  
       2023-05-22 13:42:20 +08:00 via iPhone
    搜索 Battle.Lan ,当年上大学时都用这个来和其他栋楼的寝室甚至其他学校的人联机
    LuffyGu
        21
    LuffyGu  
       2023-05-22 13:51:01 +08:00
    有现成的不用,非得造个轮子吗?
    Huelse
        22
    Huelse  
       2023-05-22 13:51:29 +08:00
    我在想能不能通过 wireguard/zerotier 来实现?能指定网卡或网段就好。
    LaGeNanRen
        23
    LaGeNanRen  
       2023-05-22 14:12:47 +08:00
    如果你不是为了讨论技术问题,只是为了满足联机需求,为什么不考虑一下现成的各大平台呢
    exqibao
        24
    exqibao  
       2023-05-22 14:16:27 +08:00
    可以搭建 N2N ,war3 联机玩没啥问题。

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

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

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

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