使用N2N搭建虚拟局域网联机游戏(EasyN2N\小黄鸭)
最近在折腾的一件事:朋友天南海北,如何进行局域网游戏?
若干年前,一伙同学约战网吧,CS、红警之类的联机游戏玩的不亦乐乎,如今再想找回当年的感觉已经非常不容易。其中一个比较直接的原因是,不在一个局域网内。
捣鼓了一些很古老的虚拟局域网软件Hamachi和LAN Bridger。问题很多,延迟奇高,放弃……
接着就是各种尝试不同的方案,最终找到了一个比较完美的解决方案:N2N
相对于其他虚拟局域网方案,N2N在网络环境良好的情况下,能够实现P2P直连,有效的降低虚拟局域网的延迟,即便无法直连,通过服务器中转,也能获得不错的延迟
只要支持局域网的联机游戏,N2N都支持。目前我个人已测试成功的有:
CS、红警2、红警3、星际争霸1、魔兽争霸3、DOTA、方舟生存进化、文明6、群星Stellaris
流星蝴蝶剑、人类一败涂地、百战天虫、求生之路1&2、我的世界、火炬之光2、帝国时代2……
下载客户端
使用方法
1.解压上述下载的压缩包
2.运行
请以管理员权限运行n2n.exe(小黄鸭图标右键 —— 以管理员身份运行)
初次运行时,启动器会自动安装所需要的虚拟网卡驱动
注:安装驱动时如果出现Windows安全提示,请信任即可
3.启动
需要选择或操作的几个选项
服务器:提供N2N组网的服务器(EasyN2N内置,请根据软件内指引免费获取)
小组名称:指定一个虚拟网小组名称(请尽量复杂,以便和公共N2N服务器上其他小组区分开)
虚拟IP:指定一个虚拟的局域网IP(或者让软件自动分配,但可能存在一些未知问题)
准备就绪后,点击启动
注:可能会弹出Windows防火墙的提示,请放行
4.查看状态
其他客户端
当需要让更多朋友加入你的虚拟小组时,可以使用以下方法
方法1:快捷加入
点击图标后,EasyN2N将把当前连接的服务器、虚拟IP、小组名称等导出为专用分享链接
如:
easyn2n://bjJuLnMxLmJ1Z3hpYS5jb206OTUyN0B6U213VUg0VldiQGF1dG9A
将上述链接复制粘贴给朋友,在朋友的客户端上,点击菜单导入
注:
若导出端为手动指定虚拟IP,则导入端需要手动填写虚拟IP的最后一位
方法2:手动加入
新加入的客户端,除虚拟IP设置不同而外,其他设置均需保持一致即可
朋友A:IP地址:192.168.66.1,组名称:zSmwUH4VWb,服务器:n2n.test.com
朋友B:IP地址:192.168.66.2,组名称:zSmwUH4VWb,服务器:n2n.test.com
朋友C:IP地址:192.168.66.3,组名称:zSmwUH4VWb,服务器:n2n.test.com
……
注:
1.若选择自定义虚拟IP(比如192.168.66.1),则需要所有客户端均在该IP段内(如192.168.66.x)
2.虚拟小组的服务器、组名称均需保持一致,每个客户端虚拟IP最后一位均需独立设置
测试
同理,也可以在两个客户端间建立TCP、UDP连接进行测试
关于延迟
目前常见的N2N传输,有两种方式
中转
当参与方网络环境相对复杂(比如校园网,或存在多层交换),无法建立P2P连接时,所有的数据传输都会经过服务器中转
中转模式下,A到B的延迟 ≈ A到服务器的延迟 + B到服务器的延迟
直连
当组网参与方网络环境比较纯净,NAT状态良好的情况下,N2N会在参与方之间建立P2P连接
此时所有的数据传输不会经过服务器中转,延迟能够极大程度降到最低
381 条评论
bugxia.com 的服务器连不上啊
WARNING: Supernode not responding – moving to 0 of 1
或许是我想的比较天真,有没有可能,可以增加一个设置。强制直连。强制走中转这样!!!
@安抚
又找了一下,这里有比较直观的直连条件说明:
====================
关于打洞的问题,这取决于网络环境了,简单说下:
1、双方中只要有一方是完全锥形NAT(NAT1),可以直连;
2、双方都是非对称型的NAT(受限型NAT:NAT2和端口受限型NAT:NAT3),这种情况可以打洞,通过supernode握手以后,双方的数据不再经过服务端;
3、一方为受限型NAT(NAT2),另一方为对称型NAT(NAT4)可以打洞,通过supernode握手以后,双方的数据不再经过服务端;
4、一方为端口受限型NAT(NAT3),另一方为对称型NAT(NAT4),这种情况无法打洞,数据要走supernode中转;
5、双方都为对称型NAT,这种情况也是无法打洞的,数据要走supernode中转。
====================
https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=260898
楼主的东西很方便,就是报毒太厉害!这个就不说了。我想问下楼主,理论上N2N应该是IP直连的。为什么实际使用下来,都是过中转服务器的。就好像我本地两台真局域网主机的电脑。我用别的一些虚拟网工具或者是STEAM的话直接就是局域网延迟了。用了N2N还要绕一圈服务器导致,延迟很高。不知道有没有办法解决这个问题?
@安抚
嗯~~毕竟是易语言写的,难免报毒……我用的火绒,很安静。
—————-
n2n确实是支持直连,但仅仅只是多种连接方式的一种,n2n在无法直连的时候会切换为中转模式。想要直连,还需要视本地的网络环境而定。具体的知识可以参见这里:http://www.lucktu.com/archives/767.html
楼主过年好,我用的你这个,我是直接搭建的服务器 ping都可以ping通 就是玩魔兽的时候可以看到房间但就是没法加入进去
@linbanxian
老哥,我也是弄来玩魔兽的,我们连看都看不到对方,你是怎么弄的?
@war3
要保证都连接上自己的内网
@linbanxian
正好楼下的哥们跟你的问题差不多,我也测试了一下,你可以尝试关闭Windows的防火墙来测试。过程见楼下。
@Bug侠
好点老哥,关了防火墙果然好使 ,但是这个延迟有点高啊
@linbanxian
搞定就好,n2n组网毕竟没有第三方平台稳定,延迟的话,只能将就了,我自用的是第三个服务器,相对比另外两个要低一点。
大佬 我按你办法弄了两台电脑能PING通 但是我们联机打魔兽在局域网里看不到对方啊
@war3
呃……魔兽3我没测试,我们当时玩了CS和流星蝴蝶剑,这两个是可以的。如果一定要使用N2N组虚拟网,可以试试别的游戏可不可以联机,比如CS1.6。如果只是为了联机,现成的平台就挺好了。
@Bug侠
大佬 就是因为不想在平台打才自己弄的 我们自己改的图和自己做的图在平台没法玩~那个连接端口9527有影响么?我在百度查魔兽端口是6112 需要怎么调试么?
@Bug侠
大佬 刚才我试乐 流星蝴蝶剑也不行 我完全按照你你的步骤来的 是不是电脑还需要调些什么东西 求指教~~~~新年快乐
@war3
我这边和朋友下了魔兽3测试了一下,同时也测试了CS、流星,都是可以正常联机的。见图:
https://s2.ax1x.com/2019/02/07/ktQu4J.png
https://s2.ax1x.com/2019/02/07/ktQmEF.png
https://s2.ax1x.com/2019/02/07/ktQnN4.png
============
不过测试过程中,发现一个问题:
A建立的房间,B能看见也能加入;而B建立的房间,A无法看见也无法加入,但是双方都能ping通。
于是就尝试把B的电脑防火墙关闭,重启游戏,再次建立房间,A就可以看见B的房间并成功加入游戏。
所以你可以尝试关闭windows防火墙来测试一下,我和朋友均为Win10 1803,关闭防火墙方法:https://jingyan.baidu.com/article/17bd8e52083ce685ab2bb839.html
@war3
对了,我测试用魔兽3的是游侠的这个:
http://down.ali213.net/pcgame/War3FT.html
博主,win10更新1809之后,我的启动器调试窗口就什么都不显示了(本来是控制台的地方什么都没有),朋友也ping不通,更新之前还是正常的,这种情况该怎么办呢
@closer_ex
我先更新到1809看看,应该是Bug了,待修复
@Bug侠
博主更新后有这个问题吗?另外在启动时弹出来的cmd窗口里显示的是连接成功的提示,ping自己也能通
@closer_ex
嗯,我更到1809了。确实有这个问题,不过还没时间研究怎么解决。可以先用命令行的方式连接,命令行日志在n2n_client\commandline.log
感谢感谢,也是想和几个朋友搞一下局域网游戏,试试,还没成功,继续试试,感谢博主!
@Ieven
n2n组网还是很方便的,有需要的帮助的话尽管说
@Bug侠
n3n组虚拟局域网 如何保证其他软件正常访问外网?
写得不错,我准备搬到zeronet中去啦
无意当中发现楼主研究N2N自成一派,非常不错,学习到不少东西,感谢!!我们N2N有一个群的:256572040。
试用楼主的N2N客户端,提点建议可以吗?
1、可选服务器,建议从一个文件读取,这样我们可以自定义服务器。因为N2N不总是直连,都大面积用你的,会卡的。
2、你编辑的v2,被我们群定义为v2s了,以便与官方的v2作区别,中心节点不通用,所以请再设计一个v2s的界面,我们也可以用。
感谢您的文章和软件!
@lucktu
感谢感谢,去你的网站转了一圈,发现你才是职业N2N玩家啊……我只是小打小闹一下,几个朋友偶尔联机的时候用一下。我做的那个启动器也只是套了个壳子,方便使用罢了。针对你说的几点:
1、服务器列表可以做成从本地文件读取,但是也可以做成可选择是否从远端更新服务器列表文件,保证可用性。
2、新的官方n2n我还没研究,不过要是启动的命令行差不多的话,那实现起来也很快。
@Bug侠
没想到博主回答挺及时的!
我只是用得早一点,其实不懂编程,只是一个使用者而已。还是你厉害,一个人创造了这么多!!
我目前在windows7x32位上测试,实际上这个程序是运行不起来的,点击后显示“启动失败”,而且Debug按钮也是无效的,希望能修复一下。
关于你的回答,我觉得很好,
1、服务器列表你的方法很好,方便自定义即可。注意可以从列表上读取到版本。例如,我们同一个IP提供 3 个版本的n2n,希望能自动与下面的版本号对应。
2、官方的2.5与官方以前的2是完全兼容的,你现在编辑的(我们叫v2s),属于非官方的版本(但这个目前直连成功率是最高的),他与官方的v1、v2都不能共用中心节点。他们的使用方法都差不多,v2s多-L、-i两个参数而已。如果方便做,可以在现在的基础上增加一个v3(现在还没有,也许不久就有了)。反正后台替换主程序即可。
@lucktu
去git上看了一下,官方新发布的这个2.4版本(2.5我没看到,只看到stable是2.4,还有个dev开发版)没有增加新的功能,只是对代码做了一些优化和删减,不过他们承诺后续还有新功能,很期待啊。
—————————
但是……我尝试了一下编译,貌似这个版本的Windows下的Edge编译还是有点些问题(或是我的问题),还没法正常编译。所以这个等待官方后续更新,我继续研究。
————
我做的那个启动器,因为只是简单用用,所以没怎么做测试。我去装个Win7 32的虚拟机再研究研究是哪儿出问题了。感谢反馈!
@Bug侠
嗯,官方的说明里说的是2.4,下一个版本2.5里面会有新功能,没错。但是我们编辑出来居然是2.5,有点奇怪,而且更重要的是,我发现貌似比以前的更容易直连,因为还缺少一个windows版本的对应,所以比较期待编辑出来做测试。如果有幸编出来的话,不妨共享一下方法。我自己后来搜索到一个window下的编辑方法,可以编辑出来v2s版本的了,利用的是cmake,但是使用make命令编辑v2.4/2.5时出错。
这是我整理出来的一些主程序,感兴趣的话,欢迎下载
https://pan.baidu.com/s/1nwuKlvj key: 9nfi
非常期待你的下一个windows启动器!!
@Bug侠
博主如果有新的程序了,可以联系我来测试啊:在此评论里有我的QQ及邮箱(这个快),可与我联系。
另外,能否把你编辑的 n2n 程序的 supernode 给我一份?我还缺少64位的呢,先谢过了!
@Bug侠
博主请回QQ看一下吧,有信息给你呢
@lucktu
现在发现是系统的问题,我的系统是windows7-32位的,需要32位的edge来支持,我将后台的edge-v1、v2换了,基本可以正常工作,但是v2s换上去不行。但在dos下测试又没有问题。我提供的共享链接里有64/32位的版本。
另外,右边的那个debug窗口,有点小bug:显示不大完全,甚至还有外部的背景进去,请适当调整一下,谢谢!!
博主的所有文章我都看了,很详细,很用心。这种博客真心喜欢。希望网站能一直维持下去。
@爱美爱魅
哈哈,过奖了。都是记录一些我平时正好用到的东西,乱七八糟的一个小博客。