背景:和朋友最近复古打机,玩 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
liuzhedash 2023-05-22 11:23:15 +08:00
没理解 C 的用途是啥,只是看 udp 广播有没有广播出去?
其实有个简单的思路,在 vps 上搭个 openvpn ,然后 AB 都连上去。 |
2
bruce0 2023-05-22 11:25:35 +08:00
VPN 应该能解决这个问题吧, 一个人开 VPN 服务, 另一个人连接上去, 前提是开 VPN 服务的那个人需要有公网 IP
|
3
FlyPuff 2023-05-22 11:26:46 +08:00 via Android
最无脑的解决方法,这种现成的 xx 对战平台就支持的游戏,直接用就好了诶。不过,不知道这些对战平台还健在没有,很多年没玩过了。。。
|
4
ikuan 2023-05-22 11:28:47 +08:00 1
这个之前玩文明 6 局域网连接研究过,挺复杂的,试过一堆开源软件,而且 windows 上还要配虚拟网卡的优先级,还得看当前网络 nat 类型啥的,不过有个现成的软件解决方案 搜搜 EasyN2N(小黄鸭),亲测可用。
|
5
bruce0 2023-05-22 11:29:45 +08:00
@bruce0 具体的我也没有搭建过, 你可以搜一下 open vpn 的搭建方式 我们公司居家办公的的时候用的就是 open vpn 连接到公司内网, 两个人联机打游戏, 只要模拟链接到另一个人的内网应该能满足
|
6
edward1987 OP @liuzhedash C 作用是收到广播并转发广播用,没有 C 的话我不知道咋直接转发😂,openVPN 我看看~
@bruce0 嗯好我下次试下 openvpn @FlyPuff 对战平台现在存活的很少了,不支持自己开图了 |
7
yswb 2023-05-22 11:35:00 +08:00 1
windows 的 udp 广播只发一个网卡,试试类似 https://github.com/ubihazard/broadcast 这样的工具,把广播发到所有网卡(理论可行,我没试过)
|
8
edward1987 OP |
10
root01 2023-05-22 11:41:43 +08:00
n2n 专门搞这个的
|
11
fuzzys 2023-05-22 11:45:31 +08:00
radmin vpn 专门局域网联机用的,甚至不需要 vps
|
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 站看看游戏视频。 |
13
dode 2023-05-22 12:39:53 +08:00 via Android
两边都是家庭宽带,有公网 IP 吗,直接端口映射,wiregurad 组网看看,
|
14
CheckMySoul 2023-05-22 12:46:45 +08:00
试试 openvpn 的桥接模式,腾讯云 vps 启动 openvpn 服务 tap 桥接模式,你和朋友练上去,网卡分配 VPC 的 IP ,具体看这 https://community.openvpn.net/openvpn/wiki/BridgingOverview 和 https://community.openvpn.net/openvpn/wiki/BridgingAndRouting
|
15
lesismal 2023-05-22 12:48:39 +08:00 1
搭个 BN 大家一起玩?
https://github.com/pvpgn/pvpgn-server |
16
siknet 2023-05-22 12:55:00 +08:00
整那么麻烦干嘛,11 平台自建地图房
|
17
happyn 2023-05-22 12:58:28 +08:00
我们的服务 happyn ,基于 n2n 的,可以用于游戏联机:
|
18
happyn 2023-05-22 12:58:40 +08:00
|
19
missdeer 2023-05-22 13:04:36 +08:00
记得当年 war3 联机是用 IPX 啥的协议,像浩方之类的平台是在 TCP/IP 上模拟出来的。
|
20
GuuJiang 2023-05-22 13:42:20 +08:00 via iPhone
搜索 Battle.Lan ,当年上大学时都用这个来和其他栋楼的寝室甚至其他学校的人联机
|
21
LuffyGu 2023-05-22 13:51:01 +08:00
有现成的不用,非得造个轮子吗?
|
22
Huelse 2023-05-22 13:51:29 +08:00
我在想能不能通过 wireguard/zerotier 来实现?能指定网卡或网段就好。
|
23
LaGeNanRen 2023-05-22 14:12:47 +08:00
如果你不是为了讨论技术问题,只是为了满足联机需求,为什么不考虑一下现成的各大平台呢
|
24
exqibao 2023-05-22 14:16:27 +08:00
可以搭建 N2N ,war3 联机玩没啥问题。
不过有些局域网游戏找不到房间,可以尝试修改网卡优先级,和禁用多余网卡,只保留物理网卡和 n2n 虚拟网卡。 |
25
knva 2023-05-22 14:22:27 +08:00 1
特地试了下,zerotier 可以
|
26
Champa9ne 2023-05-22 14:23:53 +08:00
为啥不用 wireguard 异地组网?既然有云服务器,云服务器做 wg 主节点,两边家庭宽带连过去不就得了。
国内的云服务器基本都是低带宽低延迟的状态,做这个贼适合。毕竟联机也不会有很多流量过。 |
27
cloudfox 2023-05-22 14:41:38 +08:00
@edward1987 11 平台 up 平台都支持自己开图啊,找一下入口
|
28
edward1987 OP |
29
edward1987 OP @knva 我的不行诶,ping 的通倒是没 udp 广播,不知道是不是因为两个人是不同运营商的原因
|
30
LaGeNanRen 2023-05-22 14:55:22 +08:00
@edward1987 太多了,当年的浩方,联众世界,qq 对战平台,网易有个平台,11 等等等,就算你朋友说的有限制,你付费那点点钱也比你自己捣鼓的成本要低多了
|
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 广播包能够发送到虚拟网卡上。还有一点就是系统防火墙要放行游戏的流量,允许入站。这对于其他局域网联机游戏来说也适用。 |
32
ysc3839 2023-05-22 15:42:43 +08:00 via Android
最不折腾的方案是 VPS 装个 OpenWrt ,然后配置 OpenVPN tap 模式,IP 地址由 OpenWrt 分配,这样就组建了虚拟的以太网,这些依赖以太网广播啥的游戏也就能玩了。这个基础上再弄一下就可以支持 UPnP 以及 Fullcone NAT ,玩一些 P2P 网游(如 GTAOL)也能解决问题。
|
33
arrhenius 2023-05-22 15:42:54 +08:00
回忆流走一波
|
34
ql562482472 2023-05-22 15:51:33 +08:00
我 08 年玩的时候是用 hamachi 。10 年网络恢复之后就是各种对战平台 qq 对战平台、浩方对战平台 之类的。
14 年之后就不怎么玩了 |
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 服务器。 |
36
bobbyshmurda 2023-05-22 15:58:41 +08:00
整这么复杂。。。
还是去平台吧,虽然最多人玩的网易平台已经去世,但是浩方 /11 还是经典的味道 |
37
zeusho871 2023-05-22 16:03:05 +08:00 via Android
easyn2n ,很好用
|
38
MeikoZh 2023-05-22 16:08:57 +08:00
openvpn 简单又快捷应该是没问题的。我之前也和朋友联机用其他平台,后来自己搭在 vps 上就好了,现在你测试过了么?
|
39
lisxour 2023-05-22 16:20:48 +08:00
@bobbyshmurda 没死,换名字了,叫 UP 对战平台,就是改了 LOGO ,文件数据、界面全都一毛一样的。😂
|
40
keller 2023-05-22 16:44:14 +08:00
不是有各种对战平台吗?费这个事干啥?
|
41
vdrapb 2023-05-22 17:03:38 +08:00 1
@edward1987 我和我朋友一直都是用的 UP 对战平台。自己开图也没有等级限制
|
42
palxie 2023-05-22 17:06:23 +08:00
你们当年没用过 浩方 吗 😂
|
43
sanqian 2023-05-22 17:23:55 +08:00
UP 平台就好..就是上面的 RPG 图让人恶心
|
44
binyu 2023-05-22 18:01:21 +08:00
那么,古尔丹,代价是什么呢?
|
45
xuzheliang 2023-05-22 19:12:23 +08:00 1
我之前也做过联机,你没法连接的问题是因为 war3 对多网卡(或者说多网络适配器)的情况没有做好处理,导致 upd 的广播包发到了错误的网络上,进而不能联机。
举个例子,如果你同时有 wifi 和网线,那么 war3 可能只走网线或者只走 wifi (具体根据排名,war3 应该永远走第一个)。如果你的好友在另一个网络上,那就无法联机。 此外,如果你装的有 vmware 等虚拟机,就会安装上虚拟网络适配器,这时候 war3 甚至会只在这些虚拟网段上查找 peer ( zerotier 也会有虚拟网络适配器,甚至你有多个网络还会有多个)。 解决方案似乎只有禁用其他网络适配器,强迫 war3 用剩下的那个连接,具体用了哪一个,可以用 wireshark 抓包来查看。最后,记得关闭 windows 的防火墙,不然你会倒在黎明前的黑暗里。 |
46
py2ex 2023-05-22 21:48:32 +08:00
hamachi VPN 上面有人提到过
记得有人说过是通过收发局域网 UDP 包发现房间的 |
47
Meltdown 2023-05-23 00:22:57 +08:00
等废半天劲折腾好了还有心情玩吗,直接上平台
|
49
LinePro 2023-05-23 12:45:56 +08:00
|
50
xuzheliang 2023-05-23 20:57:07 +08:00
@LinePro 受教了,我之前认为是按照某个 API 的返回值取第一个适配器,这样看来,可能是对 0.0.0.0:xx (端口)这种写法的默认表现
|