【联机】火炬之光2互联网连不上?虚拟局域网联机教程+转发工具

share
最近和好友一起联机火炬之光Torchlight 2,发现官方的互联网模式有些问题,虽然能搜到房间,但如果网络运营商不同或地域不同,即使关闭防火墙,仍有很大概率连接不上。因此研究了一下如何搭建虚拟局域网(vlan),从而使用局域网模式联机。联机方法简单,体验十分顺畅,在这里分享给大家。
本来写了一个非常详细的教程贴,结果可能因为里面有链接,大号直接被全吧制裁了。特地注册了一个小号,这次只能简单讲下方法,细节请大家自己探索
二楼放内容

犀利桐人哥:大佬,我想问一下,就是我用的第一个方法成功了,但是每次不过几分钟,就会出现延迟,而且一进图就卡死在加载页面 发布于 2022-07-24 10:26:44

AIYOMADAN:太长,太难没看,我就想问问我家里两台电脑能点局域网联机吗,直连行吗 发布于 2022-07-22 17:34:14

我是小MM·:牛逼题主!22年的帖子!收藏先!最近也开始复古重新玩起来了哈哈 发布于 2022-07-22 16:39:24

昧_爽:能和朋友一起连了、、但是永远不同步。。。 发布于 2022-07-22 14:50:04

xiaoliwder:题主大大。请教下一直卡在正在连接的状态是什么原因呀。 发布于 2022-07-22 03:04:54

木瓜豆腐丶丶:感谢 教程 成功联机 发布于 2022-07-20 03:55:04

宗介k:支持下,我之前用zerotier组网,软件指定游戏使用的网卡试过联机,老容易掉 发布于 2022-07-18 12:53:44

黯丶丶丶丨:题主为什么现在蒲公英看不到入网方式设置了 发布于 2022-07-17 06:59:04

phantas1:其他联机平台,如游侠/hamachi等,据说网络体验不是很好,本人没有试过。自建Vlan方法适用范围较广,理论上支持各个游戏版本,支持跨平台(steam,epic)、跨系统(win,macos)联机。本人是Steam最新1.25.5.6版本。
注意,联机游戏最基本的要求:相同游戏版本,相同mod及顺序,相同周目(未转生/NG+/NG++/…),可能还需要相同语言。 发布于 2022-07-17 01:11:24

phantas1:此贴至此结束。码字不易,欢迎支持 发布于 2022-07-17 01:11:14

phantas1:【Torchlight 2 Lan Game Server Tool转发工具原理】
由于网络设置问题,在一些网络中我们可能无法发送广播消息,或者发送时没有选择正确的网卡进行发送(看路由表中广播消息对应的路由)。为解决这个问题,我编写了一款简单的转发工具Torchlight 2 Lan Game Server Tool,建房的玩家只需要输入目标ip,就可以直接把房间信息直接发送过去。
软件的原理非常简单,就是使用绑定4549端口的udp套接字,要选择端口复用模式,因为游戏也要用4549端口。进行监听,如果收到一条本地发出的较长的消息,根据前面的抓包分析,我们可以判定为房间信息报文,那么就将这条消息直接发送给指定ip。
代码在Github开源,详见2楼链接。如有其他需要,比如更改端口号,可以自行魔改。 发布于 2022-07-17 01:09:24

phantas1:【4原理分析】
接下来将简要分析Torchlight 2局域网联机原理,以及自编转发工具原理
【Torchlight 2局域网联机原理】
(1)确定程序占用的网络端口。可使用windows资源监视器,或者在控制台中组合tasklist、netstat –nao、findstr命令查询Torchlight2.exe占用的端口号,其中局域网游戏房间信息传输端口是固定的4549,UDP协议。
(2)使用wireshark抓包。确定端口后,就可以设置过滤条件udp.port == 4549进行抓包分析。抓不到的可能是没有选对发送信息的网卡。主机创建房间后,可以发现每隔30秒发送一条len=50的广播消息(len长度和房间名有关),可以看到里面解析出了房间名(testroom)。Len=7的包暂时不知道是什么作用,猜测可能是保持NAT环境下端口占用用的吧。如下图:

而进行搜索的玩家,抓包发现,会在打开局域网菜单时,以及点击刷新按钮后,发送len=18的广播报文,如下图:

我们可以把数据复制下来,主动构造包发给主机电脑进行测试。发现主机除了每30秒广播一次房间信息外,如果收到其他玩家发送的len=18请求,会再广播一次房间信息。这样其他玩家进入局域网时,可以无需等待立即搜到房间。
不过可惜的是,即使是收到请求,主机此时发送的依然是广播消息而非点对点消息,如果网络无法广播,就需要转发工具。
关于主机广播房间信息的报文内容,我没有做详细的探究,感兴趣的可以尝试解析一下对应字段,目前只确认了房间名的字段。 发布于 2022-07-17 01:09:14

phantas1:【检查修改跃点数是否生效】
修改跃点数后,游戏中应该就可以看到房间了。如果还是看不到,可以检查一下修改跃点是否起了作用,方法如下。
(1)按键盘的win+R打开运行,输入cmd并回车打开windows命令提示符(命令行),输入route print打印路由表。找到其中的IPv4路由表,如下图:

(2)找到网络目标(第一列)为255.255.255.255的路由,可能有多行。这时候看右侧的接口(倒数第二列),找到vlan相关ip的那一行。如上图中172.29开头的是我创建的vlan网络范围内的ip,而10.187开头的是家庭局域网ip(更常见的是192.168.x.x),127.0.0.1是本地回环ip。确保vlan对应的跃点数(最后一列),是这几行里最小的即可。
跃点数越小,代表网络代价越小,优先级越高。在前面的修改前,可能家庭局域网跃点数更小,因此游戏广播包优先走家庭局域网。修改后vlan跃点数更小,就优先走vlan了。
这样,我们使用ZeroTier配合修改跃点数就可以实现局域网游戏联机了。如果修改跃点数后,广播路由中vlan对应的跃点数仍然不是最小的,那么就依然需要【使用前面的转发工具】进行发包。或者可以尝试使用route命令直接修改路由表,但这样做有一定风险。如果使用蒲公英组网,修改跃点数是无效的,因为即使优先使用对应网卡,广播包也会被蒲公英过滤掉,其他人是收不到的。 发布于 2022-07-17 01:08:54

phantas1:【3 公网IP(或校园网?)使用转发工具联机教程】
如果联机的所有人(理论上只要求主机外的所有人)都有公网IP,或者对4549端口进行了端口映射(火炬之光2局域网联机默认使用4549端口),那么可以不用vlan组网工具,直接使用我编写的转发工具,在公网上通信。校园网环境可能也适用(假如校园网过滤了广播消息,但是没有禁止点对点通信)。
这种条件下,只需要主机开启转发工具,输入其他人的公网ip(或校园网ip)即可。软件使用参考前面的教程。 发布于 2022-07-17 01:08:54

phantas1:【修改网络跃点数教程】
在使用ZeroTier搭建vlan网络后,网络可能优先级较低,导致游戏中看不到房间。
这一步的目的,是希望更改网络优先级,使得游戏广播包优先走vlan网络,而非其他局域网。之前有吧友使用ForceBindIP强制游戏走指定网卡,也是一个办法,但需要下载软件且使用起来比较麻烦,而且可能不支持mod版本游戏。其实更改优先级可以简单通过修改系统设置实现,下面进行介绍。
(1)右下角程序栏,右键点击网络图标,打开“网络和Internet”设置,弹出的设置中点击“更改适配器选项”(win7右键网络应该直接有适配器选项),如下图:


(2)在弹出的网络列表中,找到ZeroTier对应的网络,右键打开“属性”。选中“Internet协议版本4(TCP/IPv4)”,点“属性”。(此时假如选择的是“使用下面的IP地址”,但底下都是空的的话,需要点“自动获得IP地址”,否则下一步无法点确定保存。如果IP不是空的就不用管。有小概率出现空的的情况。)点“高级”,如下图:

(3)在高级设置中,将“自动跃点”取消,下面手动输入跃点数为一个较小的数,比如1。修改后一路确定保存即可,如下图:
发布于 2022-07-17 01:08:44

phantas1:【2 ZeroTier组网+修改跃点数教程】
ZeroTier:【优点】免费支持50人网络。能发广播消息,因此只需要修改跃点数就能联机(或者也可以配合我写的转发工具一起用)。【缺点】外国软件,服务器可能在外国(但本人测试联机体验还不错)。界面英文,使用较复杂。
【ZeroTier组网步骤说明】
(1)首先依然是注册(Sign Up)并下载(Download)客户端。ZeroTier目前只需要建立网络的人注册,加入网络只下载客户端即可。安装客户端的时候,好像选不了安装位置就直接安完了,稍微有点流氓,不过为了不受限的免费联机人数(50人),还是值得一试。
(2)建立网络。注册并登录后,网页端会有一个详细的建网指引,按照默认设置建立即可。点击Networks,点击Create a network一键创建网络,之后点击下方的网络信息进入管理,如图:

进入网络的管理界面后,记住网络ID,可以起一个名字,设置Access Control访问控制模式时,如果选择了private私人模式,他人加入后需要点击授权才能连接;如果选择的是public公共模式,则任何人都可以直接连接。其他设置不用变。如下图:

如果选择的是private模式,在Members栏,注意他人连接后需要勾选Auth授权,并记住他人的vlan IP,如图:

(3)加入网络。所有人都需要安装客户端。安装后软件没有在桌面创建快捷方式,首先查看ZeroTier是否已经启动(右下角程序栏是否有新图标),如果没有,点击左下角windows图标,直接输入zerotier搜索、启动即可。启动后不会自动打开软件界面,需要在右下角找到图标,并右键点击,选择Open Control Panel…启动,如下图:

之后在下方输入网络ID即可,无需修改其他设置,如下图:

如果网络设置的是private模式,需要在网页管理界面勾选Auth授权才能成功连接。
至此,ZeroTier搭建虚拟局域网就完成了。但此时大家创建游戏后可能依然看不到彼此的房间,抓包发现游戏房间信息并没有发送到正确的网卡上。游戏发送广播消息(目标ip为255.255.255.255)时,是根据路由表自动选择网卡,因此可能将消息发送到了家庭局域网(如平时用的wifi)中,而没有发到我们创建的vlan中。
如何解决看不到彼此的问题呢?这里提供两个方法:(1)使用我编写的转发工具,用法参见前面;(2)修改网络跃点数,只需简单修改系统设置即可,接下来会讲。 发布于 2022-07-17 01:07:54

phantas1:【Torchlight 2 Lan Game Server Tool转发工具使用方法】
(1)注意:只有建房的主机需要开启此软件。软件和游戏开启的先后顺序,经测试应该没有影响。
(2)建房主机打开软件,提示输入其他玩家的ip。多个ip用“空格”或“英文逗号”分隔,需要在一行内输入。例如,上面的例子里另一名玩家的蒲公英ip是172.16.0.137,输入并回车即可,如下图:

(3)回车后,软件开始探测局域网游戏的广播消息。房主可以此时游戏建房。抓包发现游戏房间消息每30秒广播一次,因此等待不超过30秒,软件就能探测到消息,并转发给其他人,如下图:

此时其他人应该就能看到房间并顺利加入了。后续连接和数据传输由游戏负责,可以将软件关闭了。也可以留着软件,一直向目标发送房间信息。运行不占cpu、内存或网络资源。
蒲公英的缺点在于,免费版最多支持3人联机。如果是4人联机的话,就需要其中一人有公网ip,或对4549端口进行了映射,从而房主可以使用转发软件将消息发送给第4人。如果不能满足以上条件,就需要使用下面介绍的ZeroTier软件进行组网。 发布于 2022-07-17 01:07:24

phantas1:【1蒲公英组网+自编转发工具使用教程】
使用蒲公英组网:【优点】国内服务器,网络稳定,操作较便捷。【缺点】免费版最多3人联机(如果第4人有公网ip或做了端口映射也行)。过滤了广播消息,需要配合我编写的转发工具一起用。
【蒲公英组网步骤说明】
(1)首先,注册并下载蒲公英访问端个人版。
(2)创建网络。创建和管理网络需要在蒲公英官网界面,点击“管理平台”(注册登录按钮的边上)。此时可能已有网络,可以查看或删除网络。如果没有网络,选择“对等网络”创建即可(免费版只能创建对等网络)。创建后记住网络ID,并注意修改“入网方式”,如下图:

如果设置了入网审核,可在“消息”中查看入网申请。使用中如果遇到问题,例如删除成员再添加后依然显示3人已满,可以随时删除网络重新创建。
(3)加入网络。所有电脑都需要下载运行蒲公英访问端,初始可能自动加入了一个网络。现在需要所有人加入同一个网络,点击上方的大星星,选择“加入其他网络”,输入上一步中的网络ID即可,如下图:

如果显示“禁止入网”请检查上一步的入网方式是否设置。入网后可以看到网络中的电脑和ip地址。创建游戏房间的主机需要记住其他人在vlan中的ip地址。右键点击可以ping其他人,但需要关掉防火墙才能ping通。
至此,蒲公英搭建vlan完毕。但此时游戏中是看不到建立的房间的,原因在于:(1)房主通过广播方式向局域网发送房间信息,但是信息没有发送到我们建立的vlan中,而是有可能发送到了“跃点数”更小的家庭局域网中;(2)经过和技术人员确认,蒲公英会过滤组播或广播消息。因此即使将广播消息发送到了vlan中,其他人依然收不到,看不到房间。有关游戏联机的原理,在【4 原理分析】部分我将详细介绍。
如何解决收不到消息的问题呢?在蒲公英vlan中,指定ip直接通信是允许的,那么我们就可以将广播消息中的内容,直接发送至其他人的电脑,这样其他人就能在游戏中看到房间了。我编写的简单的转发工具Torchlight 2 Lan Game Server Tool,就是读取游戏发送的广播房间信息,直接发送到指定ip。下面将介绍使用方法。 发布于 2022-07-17 01:06:54

phantas1:帖子原文上传到tx文档了,大家可以查看详细说明。link后缀是doc/DZVZKTkNFb3NvZVZS 发布于 2022-07-17 00:48:34

phantas1:希望可以置顶或加精,帮助更多玩家。 发布于 2022-07-17 00:42:54

phantas1:而为什么大家看不到彼此的房间呢?原因可能有两个:
(1)broadcast包发送到了错误的网络(接口、网卡)上,因为搭建的局域网不是代价(跃点数)最小的。默认可能发送到了家庭局域网中。
(2)broadcast被虚拟局域网过滤。
如果是情况(2),必须配合我写的转发工具,方可正确发送房间信息给其他玩家。如果只有情况(1),可以通过修改网络跃点数为1,提升网络优先级。或是配合转发工具使用。 发布于 2022-07-17 00:40:14

phantas1:原理分析。torchlight2局域网联机,是基于建房主机发送broadcast包到局域网,告知其他玩家房间信息,从而连接。大家可以尝试使用wire-/。shark抓包udp.port == 4549来探索。 发布于 2022-07-17 00:39:44

phantas1:详细的内容本来都写好了,但是抽楼实在厉害,后面我会把内容发到csdn。没法描述的很细致,只能靠大家自己探索了。该方法理论上适用于各种情况的联机,不限于st正版,可以跨平台,各种版本。希望可以对互联网死活连不上的各位有所帮助 发布于 2022-07-17 00:39:24

phantas1:方法中前两个的优劣在于:
蒲公英:【优点】国内服务器,网络稳定,操作较便捷。【缺点】免费版最多3人联机(如果第4人有公网ip或做了端口映射也行)。过滤了广播消息,需要配合我编写的转发工具一起用。
ZeroTier:【优点】免费支持50人网络。能发广播消息,因此只需要修改跃点数就能联机(或者也可以配合我写的转发工具一起用)。【缺点】外国工具。服务器可能在外国(但本人测试联机体验还不错)。界面英文,使用较复杂。 发布于 2022-07-17 00:37:44

phantas1:这里直接提供3种解决方案:
【1】蒲公英+自编开源转发工具
【2】ZeroTier+修改网络跃点数为1或用转发工具
【3】公网IP(或校园网?)使用转发工具联机 发布于 2022-07-17 00:37:24

更多【联机】火炬之光2互联网连不上?虚拟局域网联机教程+转发工具相关问题

问题:【联机】火炬之光2互联网连不上?虚拟局域网联机教程+转发工具

回答:应该是张郃后面六出祁山还能用,许攸死的太早。没啥深挖余地了。 详情 >

问题:《火炬之光2》新手求助,游侠局域网联机如何设置

回答:不玩刘备,反倒是不管玩谁都喜欢上来先弄死刘备,收关张, 详情 >

问题:求教!大佬们,steam版火炬之光2线上联机体验如何?

回答:逐个击破,打白和,挺简单的 详情 >

问题:《火炬之光2》不通过游侠的联机方法!

回答:首先定位还是高端局无球功能性C,你要说突出的优势,肯定是不如邓肯和奥尼尔,一个是目前无球三号位的天花板,另一个终结能力独一档。这个远古C的功能性能比较的是拉塞尔,加内特,吉尔这一类,比护框,他应该是比较弱的在这几个人里面,徽章和部分数值没有任... 详情 >

问题:《火炬之光2》关于steam账号上进行internet联机图文方法[申精]

回答:题主能分享吗? 详情 >