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

  • locpater 评论于 回复

    请问自建服务器中转的话吃的是上行还是下行啊?

    • Bug侠 评论于 回复

      @locpater
      上行

  • mdoe123 评论于 回复

    电脑有的游戏貌似要防火墙单独开放端口比如像素工厂的6567端口,后来弄了很久,才发现这个问题。

  • admin 评论于 回复

    :嘻嘻: 您好 请问我按照您的教程在腾讯云服务器上安装了你这个N2N服务器,也开放了对应端口,客户端上能看可以连上服务器而且能获取到IP地址,但是就是ping不通对方(双方防火墙都关了),也无法联机,这是怎么回事?

    • Bug侠 评论于 回复

      @admin
      这个问题很奇怪,我只能盲猜。
      1.服务器都连接的是同一台吗?或者自定义IP试试
      2.再加入一台客户端试试?多一些样本,就能分析排查出问题所在。

      • admin 评论于 回复

        @Bug侠
        非常感谢!自定义IP就可以了。。 还想请问一下三个问题,期待能解答一下:
        1、怎么改服务器的端口号?
        2、这个DHCP的IP地址段在哪改?
        3、在服务器上能查看上线的主机用户吗?

        • Bug侠 评论于 回复

          @admin
          1.参考此文说明 https://bugxia.com/n2n_supernode_param
          2.同上
          3.服务端查看客户端列表需使用API,说明文档:https://github.com/ntop/n2n/blob/dev/doc/ManagementAPI.md

          • admin 评论于 回复

            @Bug侠
            请问是我建的地址段有问题吗?
            supernode -p 18000 -a 10.255.255.0-10.255.255.254/24
            30/Nov/2023 15:57:22 [supernode.c:262] WARNING: bad prefix ’24’ in ‘10.255.255.0-10.255.255.254/32’, defaulting to ‘10.128.0.0…10.255.255.0/24’

          • admin 评论于 回复

            @Bug侠
            客户端自动获取地址还是只能获取到10.233.82.0 这个段的地址 没法获取到指定地址段

            • Bug侠 评论于 回复

              @admin
              已在下方评论回复 :笑哭:

          • www 评论于 回复

            @Bug侠
            您好 大佬可以帮忙解答一下这个问题吗 客户端自动获取地址没法获取到指定地址段,我在服务器上设置了分配的地址段还是没用

            • www 评论于 回复

              @www
              不用了 问题解决了,重启一下进程就可以了。 :笑哭: 还是谢谢大佬

              • Bug侠 评论于 回复

                @www
                好吧,我以为你跟楼上一样也是IP段参数理解有问题 :嘴锤:

            • Bug侠 评论于 回复

              @www
              它的这个参数描述的有点不清楚,导致很多人不理解,可以参考这里:
              https://github.com/ntop/n2n/issues/967
              ——————
              这里补充一下参数原文解释是【-a net-net/n】
              直译过来就是【第一个网络地址-最后一个网络地址/掩码】
              需要注意的是,网络地址和IP地址不是一个概念
              参考:https://zhuanlan.zhihu.com/p/146841397
              我们正常的逻辑却是【第一个IP地址-最后一个IP地址/掩码】
              ——————
              比如上面评论里的这个例子
              想要分配的IP段是10.255.255.0/24
              那参数其实是【-a 10.255.255.0-10.255.255.0/24】
              10.255.255.0/24这个IP段,对应的【网络地址】是10.255.255.0
              因为只有一个C段,所以第一个和最后一个网络地址是一样的
              ——————
              另外,也可用通过使用【-c community.list】参数来加载组名称文件
              比如就直接在community.list文件里写:
              bugxia 10.255.255.0/24
              使用这样的形式,当客户端使用bugxia作为组名称时,就直接分配到指定的IP段了

  • 小毛 评论于 回复

    请问一下,我买了捐赠服务器,为何无主之地3还联机不了?本地局域网联机是没问题的。用小黄鸭在网上和朋友连不上,同一个城市。

  • deli 评论于 回复

    如何开机自启的时候自动开启连接

  • 青岩 评论于 回复

    好奇怪,明明我和朋友都是电信的网络,同一个城市,但是用radmin vpn的时候我们之间经常都是中继,特别的卡,不过时不时会有一两天可以tcp或udp直连,那时候就非常低延迟,现在来试着用一下小黄鸭,依旧是卡到爆炸,都不知道咋办好 :困:

  • corgixx 评论于 回复

    为啥启动之后,一直卡在等待自动分配ip :害羞:

    • Bug侠 评论于 回复

      @corgixx
      服务端的问题,长时间运行后IP池会无法自动释放旧IP,导致无法分配到新IP,我这边尝试优化和改善,如果是自建服务器的话,需要定时重启一下服务端

  • 大王爱吃肉 评论于 回复

    想玩红警联机 的不会配置的可以来找我 战网要钱的 而且不花钱容易断 教你哦

    • 二狗子 评论于 回复

      @大王爱吃肉
      大佬 麻烦教教我 谢谢

  • TKI 评论于 回复

    感谢博主
    和朋友尝试ping发现大部分时候都能在50ms以内,但是每两三次会突然跳ping(飙升到300然后马上又恢复)
    不知道这种情况有没有什么解决方案

  • Facelessl 评论于 回复

    不管是赞助服务器还是免费服务器或者别人的自建服务器都是显示连接成功但ping不通,自己ping自己或者别人ping自己都试过了,卸载虚拟网卡重装小黄鸭也都试过但还是连接成功但ping不通

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