使用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 条评论

  • 林钟寒艳 评论于 回复

    您好,我和我朋友服务器连接成功,但是
    1.运行日志显示 encryption is disabled in edge
    2.对方ping不通,并且NAT类型为4,使用的是校园网,有什么基本问题排查方法嘛,虚拟网卡驱动已经安装成功了

    • 林钟寒艳 评论于 回复

      @林钟寒艳
      对方防火墙已经关闭,仍然无法Ping通,但是用TCP/UDP服务端口测试,无论是TCP还是UDP,都有发送和接受数据,游戏内实测双方都无法搜索到对方房间

      • 林钟寒艳 评论于 回复

        @林钟寒艳
        上述问题汇总:
        1.联机问题解决了,我个人的问题,忘记关闭自己的防火墙了,,,不好意思
        2.该WARNING: encryption is disabled in edge仍然存在,但可以正常使用
        3.还有个问题大佬能帮忙一下嘛,手柄连接蓝牙,驱动报错提示该设备无法启动,代码10,具体内容是{地址范围冲突}指定的地址范围与地址空间冲突,大佬能大概说一下是哪方面的问题嘛,初步判断是端口冲突,但是相关驱动全部卸载完也没用,有时间的话可以解答一下嘛 :咧嘴:

        • Bug侠 评论于 回复

          @林钟寒艳
          1.该提示可忽略,默认情况下EasyN2N数据传输不加密,当然,也可以手动在附加参数中添加 -k asdf1234(任意字符)用于加密,具体见附加参数界面。
          2.超能力范围啦,爱莫能助…… :笑哭:

          • 林钟寒艳 评论于 回复

            @Bug侠
            好的,谢谢大佬的帮助,大佬的服务器很稳定,666

  • 张霈之 评论于 回复

    大佬您好 我是b站的一个up主,最近随着Ra3日冕mod的发布,原本用来联机的浩方平台几乎没有空余的位置,偶然看到了您的EasyN2N,昨天和小伙伴尝试之后秒杀浩方垃圾服务器,我想在b站推广这个应用,不知道您是否同意

    • Bug侠 评论于 回复

      @张霈之
      没问题的,随便使用,感谢您的推广。 :doge:

  • 小小 评论于 回复

    如果用默认小组名称bugxia_9527,会不会发生和其他网友分配到同一个局域网,导致出现安全风险

    • Bug侠 评论于 回复

      @小小
      会的,所以这个 bugxia_9527 就相当于是一串密钥一样,不要设的太简单或随意 :大笑:

  • 王嘉然 评论于 回复

    大佬 为什么我的打不开 运行不了

    • Bug侠 评论于 回复

      @王嘉然
      啥叫运行不了呢~是杀毒软件给杀掉了还是说点运行没反应? :萌:

  • 卡弟 评论于 回复

    感谢大佬
    有个小问题想请教一下,主机列表里的主机名可以修改吗

    • Bug侠 评论于 回复

      @卡弟
      可以啊,主机名就是计算机名

    • Bug侠 评论于 回复

      @卡弟
      如果不修改计算机名,那最新版EasyN2N 2.3里,附加参数中 -I 参数后面就是主机名

  • 呆呆的好可爱 评论于 回复

    您好博主,发现您的宝藏网站真心荣幸,服务器端在腾讯云,客户端在本地公司,使用n2n打通后,能否只需一台电脑连接云主机后,公司网段下的所有客户机都可以通过云主机连通成为一个局域网呢?阿里云有固定的公网ip ,本地公司没有固定公网ip

    • Bug侠 评论于 回复

      @呆呆的好可爱
      感谢!你说的这个需求描述的有点模糊,我之前写过一篇好像有点类似:https://bugxia.com/2228.html
      ———–
      “公司网段下的所有客户机”这句话不太理解

      • 呆呆的好可爱 评论于 回复

        @Bug侠
        公司网段下的所有客户机 也就是公司(局域网)内网的所有机器,

      • 呆呆的好可爱 评论于 回复

        @Bug侠
        A 一台云服务器 上面搭建了n2n服务端
        B 一台公司本地个人Pc搭建了n2n客户端
        本地个人Pc(B)下网段的所有ip地址都可以ping通A服务端(前提是这些pc都没有安装n2n客户端)

        • Bug侠 评论于 回复

          @呆呆的好可爱
          好像大概貌似应该是明白了 :笑哭: ,我捋一捋
          1) A — B通过N2N联通
          2) B\C\D… 在一个物理局域网下
          3) 在不组建N2N的情况下,实现 A — B\C\D 都联通
          对吧……

        • Bug侠 评论于 回复

          @呆呆的好可爱
          如果要实现这样的功能,B这台机器就得充当网关(因为其他的C\D\E等等要去到A,必须得经过B中转到A上去)。除非B是一台路由器(我之前发的博文里的情况),否则不容易实现(需要给除B外的所有机器手动添加一条额外的路由表)

          • 呆呆的好可爱 评论于 回复

            @Bug侠
            嗯呢 您说的:“需要给除B外的所有机器手动添加一条额外的路由表” 这个额外的路由是在服务器A上添加吗?

            • Bug侠 评论于 回复

              @呆呆的好可爱
              因为A-B是通的,但是剩余的C\D\E如果要去到A,就需要经过B,怎么样才能实现C → B → A呢,就必须在C上面指定一条去到A的路由,路由的作用就是告诉C ,要去 A 该怎么走(要经过B中转)。
              同理,剩余的D\E\F等也需要添加路由,才能去到A。所以如果你的C\D\E客户端数量太多的话,就得每台机器添加路由,比较麻烦。
              但如果B是台路由器,C\D\E这些都连接在B的下面,那就只需要在B的上面添加一条路由,然后它下面连接的这些设备都会知道去A怎么走了。
              ——
              路由大概就是这么个意思,能理解的话就简单了。

              • 呆呆的好可爱 评论于 回复

                @Bug侠
                嗯呢 我明白了,现在问题就是B不是台路由器而是一台个pc电脑,但C\D\E…这些机器有的可能是交换机,有的可能是防火墙,有的可能是电脑,有的设备可能无法加路由功能,博主还有什么好的方案吗?或者说作为B来说是一台网关路由器,怎么把B变成一台网关路由器?或者说可以买什么设备来做网关路由器(这个设备上可以搭建N2N服务)博主有推荐吗?对了 博主能否加您个微信好友想请您喝个奶茶,以表示感谢您的耐心回复

                • Bug侠 评论于

                  @呆呆的好可爱
                  最现成的方法还是把 B 换成能 [自定义静态路由] 的路由器,一般情况下,商品路由器(TP、小米、华为等)基本上都不支持该功能,支持的这功能大多数是第三方固件,比如Openwrt的软路由等;如果还要在这个设备上运行N2N或者更多的功能,直接上OpenWRT软路由就行了,比如我用的这个:
                  https://bugxia.com/wp-content/uploads/2019/12/20191213021822507.jpg
                  ——————-
                  问题是,为了这实现这个需求,可能需要花更多的时间和精力去折腾去研究……
                  ——————-
                  可以加群1150222959,再加我Q就行(我是群主)
                  付费支持通道:https://bugxia.com/n2n_server_plus

  • rszhuhao 评论于 回复

    您好~打扰一下啦,因为我是小白~我想请教一下,这个有linux版本嘛?我想在我的linux服务器和win10之间建立一个局域网,从而实现文件共享~打扰您啦!

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