使用N2N搭建虚拟局域网联机游戏(EasyN2N\小黄鸭)

N2N, 折腾 2018/08/02

最近在折腾的一件事:朋友天南海北,如何进行局域网游戏?

若干年前,一伙同学约战网吧,CS、红警之类的联机游戏玩的不亦乐乎,如今再想找回当年的感觉已经非常不容易。其中一个比较直接的原因是,不在一个局域网内。

捣鼓了一些很古老的虚拟局域网软件Hamachi和LAN Bridger。问题很多,延迟奇高,放弃……

接着就是各种尝试不同的方案,最终找到了一个比较完美的解决方案:N2N

相对于其他虚拟局域网方案,N2N在网络环境良好的情况下,能够实现P2P直连,有效的降低虚拟局域网的延迟,即便无法直连,通过服务器中转,也能获得不错的延迟

只要支持局域网的联机游戏,N2N都支持。目前我个人已测试成功的有:

CS、红警2、红警3、星际争霸1、魔兽争霸3、DOTA、方舟生存进化、文明6、群星Stellaris

流星蝴蝶剑、人类一败涂地、百战天虫、求生之路1&2、我的世界、火炬之光2、帝国时代2……

下载客户端

EasyN2N

使用方法

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连接

此时所有的数据传输不会经过服务器中转,延迟能够极大程度降到最低

如何让N2N虚拟局域网走P2P?简单测试

常见问题

一些常见的问题汇总

本文标签:


381 条评论

  • ReekyStive 评论于 回复

    bugxia.com 的服务器连不上啊
    WARNING: Supernode not responding – moving to 0 of 1

  • 安抚 评论于 回复

    或许是我想的比较天真,有没有可能,可以增加一个设置。强制直连。强制走中转这样!!!

    • Bug侠 评论于 回复

      @安抚
      又找了一下,这里有比较直观的直连条件说明:
      ====================
      关于打洞的问题,这取决于网络环境了,简单说下:
      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还要绕一圈服务器导致,延迟很高。不知道有没有办法解决这个问题? :笑哭:

    • Bug侠 评论于 回复

      @安抚
      嗯~~毕竟是易语言写的,难免报毒……我用的火绒,很安静。
      —————-
      n2n确实是支持直连,但仅仅只是多种连接方式的一种,n2n在无法直连的时候会切换为中转模式。想要直连,还需要视本地的网络环境而定。具体的知识可以参见这里:http://www.lucktu.com/archives/767.html

  • linbanxian 评论于 回复

    楼主过年好,我用的你这个,我是直接搭建的服务器 ping都可以ping通 就是玩魔兽的时候可以看到房间但就是没法加入进去 :嘴锤: :汗: :汗: :惊讶: :惊讶:

    • war3 评论于 回复

      @linbanxian
      老哥,我也是弄来玩魔兽的,我们连看都看不到对方,你是怎么弄的?

      • linbanxian 评论于 回复

        @war3
        要保证都连接上自己的内网

    • Bug侠 评论于 回复

      @linbanxian
      正好楼下的哥们跟你的问题差不多,我也测试了一下,你可以尝试关闭Windows的防火墙来测试。过程见楼下。

      • linbanxian 评论于 回复

        @Bug侠
        好点老哥,关了防火墙果然好使 ,但是这个延迟有点高啊

        • Bug侠 评论于 回复

          @linbanxian
          :咧嘴: 搞定就好,n2n组网毕竟没有第三方平台稳定,延迟的话,只能将就了,我自用的是第三个服务器,相对比另外两个要低一点。

  • war3 评论于 回复

    大佬 我按你办法弄了两台电脑能PING通 但是我们联机打魔兽在局域网里看不到对方啊

    • Bug侠 评论于 回复

      @war3
      呃……魔兽3我没测试,我们当时玩了CS和流星蝴蝶剑,这两个是可以的。如果一定要使用N2N组虚拟网,可以试试别的游戏可不可以联机,比如CS1.6。如果只是为了联机,现成的平台就挺好了。

      • war3 评论于 回复

        @Bug侠
        大佬 就是因为不想在平台打才自己弄的 我们自己改的图和自己做的图在平台没法玩~那个连接端口9527有影响么?我在百度查魔兽端口是6112 需要怎么调试么?

      • war3 评论于 回复

        @Bug侠
        大佬 刚才我试乐 流星蝴蝶剑也不行 我完全按照你你的步骤来的 是不是电脑还需要调些什么东西 求指教~~~~新年快乐

        • 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

  • closer_ex 评论于 回复

    博主,win10更新1809之后,我的启动器调试窗口就什么都不显示了(本来是控制台的地方什么都没有),朋友也ping不通,更新之前还是正常的,这种情况该怎么办呢

    • Bug侠 评论于 回复

      @closer_ex
      我先更新到1809看看,应该是Bug了,待修复

      • closer_ex 评论于 回复

        @Bug侠
        博主更新后有这个问题吗?另外在启动时弹出来的cmd窗口里显示的是连接成功的提示,ping自己也能通

        • Bug侠 评论于 回复

          @closer_ex
          嗯,我更到1809了。确实有这个问题,不过还没时间研究怎么解决。可以先用命令行的方式连接,命令行日志在n2n_client\commandline.log

  • Ieven 评论于 回复

    感谢感谢,也是想和几个朋友搞一下局域网游戏,试试,还没成功,继续试试,感谢博主!

    • Bug侠 评论于 回复

      @Ieven
      n2n组网还是很方便的,有需要的帮助的话尽管说

      • 明日 评论于 回复

        @Bug侠
        n3n组虚拟局域网 如何保证其他软件正常访问外网?

  • zeronet 评论于 回复

    写得不错,我准备搬到zeronet中去啦

  • lucktu 评论于 回复

    无意当中发现楼主研究N2N自成一派,非常不错,学习到不少东西,感谢!!我们N2N有一个群的:256572040。

    试用楼主的N2N客户端,提点建议可以吗?
    1、可选服务器,建议从一个文件读取,这样我们可以自定义服务器。因为N2N不总是直连,都大面积用你的,会卡的。
    2、你编辑的v2,被我们群定义为v2s了,以便与官方的v2作区别,中心节点不通用,所以请再设计一个v2s的界面,我们也可以用。

    感谢您的文章和软件!

    • Bug侠 评论于 回复

      @lucktu
      感谢感谢,去你的网站转了一圈,发现你才是职业N2N玩家啊……我只是小打小闹一下,几个朋友偶尔联机的时候用一下。我做的那个启动器也只是套了个壳子,方便使用罢了。针对你说的几点:
      1、服务器列表可以做成从本地文件读取,但是也可以做成可选择是否从远端更新服务器列表文件,保证可用性。
      2、新的官方n2n我还没研究,不过要是启动的命令行差不多的话,那实现起来也很快。

      • lucktu 评论于 回复

        @Bug侠
        没想到博主回答挺及时的!
        我只是用得早一点,其实不懂编程,只是一个使用者而已。还是你厉害,一个人创造了这么多!!
        我目前在windows7x32位上测试,实际上这个程序是运行不起来的,点击后显示“启动失败”,而且Debug按钮也是无效的,希望能修复一下。
        关于你的回答,我觉得很好,
        1、服务器列表你的方法很好,方便自定义即可。注意可以从列表上读取到版本。例如,我们同一个IP提供 3 个版本的n2n,希望能自动与下面的版本号对应。
        2、官方的2.5与官方以前的2是完全兼容的,你现在编辑的(我们叫v2s),属于非官方的版本(但这个目前直连成功率是最高的),他与官方的v1、v2都不能共用中心节点。他们的使用方法都差不多,v2s多-L、-i两个参数而已。如果方便做,可以在现在的基础上增加一个v3(现在还没有,也许不久就有了)。反正后台替换主程序即可。

        • Bug侠 评论于 回复

          @lucktu
          去git上看了一下,官方新发布的这个2.4版本(2.5我没看到,只看到stable是2.4,还有个dev开发版)没有增加新的功能,只是对代码做了一些优化和删减,不过他们承诺后续还有新功能,很期待啊。
          —————————
          但是……我尝试了一下编译,貌似这个版本的Windows下的Edge编译还是有点些问题(或是我的问题),还没法正常编译。所以这个等待官方后续更新,我继续研究。 :汗:
          ————
          我做的那个启动器,因为只是简单用用,所以没怎么做测试。我去装个Win7 32的虚拟机再研究研究是哪儿出问题了。感谢反馈!

          • lucktu 评论于 回复

            @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启动器!! :笑哭:

          • lucktu 评论于 回复

            @Bug侠
            博主如果有新的程序了,可以联系我来测试啊:在此评论里有我的QQ及邮箱(这个快),可与我联系。

            另外,能否把你编辑的 n2n 程序的 supernode 给我一份?我还缺少64位的呢,先谢过了!

          • lucktu 评论于 回复

            @Bug侠
            博主请回QQ看一下吧,有信息给你呢

        • lucktu 评论于 回复

          @lucktu
          现在发现是系统的问题,我的系统是windows7-32位的,需要32位的edge来支持,我将后台的edge-v1、v2换了,基本可以正常工作,但是v2s换上去不行。但在dos下测试又没有问题。我提供的共享链接里有64/32位的版本。

          另外,右边的那个debug窗口,有点小bug:显示不大完全,甚至还有外部的背景进去,请适当调整一下,谢谢!!

  • 爱美爱魅 评论于 回复

    博主的所有文章我都看了,很详细,很用心。这种博客真心喜欢。希望网站能一直维持下去。

    • Bug侠 评论于 回复

      @爱美爱魅
      哈哈,过奖了。都是记录一些我平时正好用到的东西,乱七八糟的一个小博客。 :大笑:

    评论(本站已开启评论回复邮件通知功能,请如实填写邮箱以便及时收到回复)