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

  • ABB 评论于 回复

    研究了几天还是没能解决,想请问博主帝国时代3亚洲王朝需要什么设置才能优先识别EasyN2N的网卡呢?我的电脑总是优先识别zerotier的网卡,禁用zerotier网卡后就优先识别电脑物理网卡,网卡越点也设置过了,优先级1最高也不行,求指教 :害羞:

  • 秋雲 评论于 回复

    赞助服务器连不上 :笑哭:

  • xcw 评论于 回复

    还以为是免费线路的问题,不过捐赠了也没用,两台电脑其中一个走手机热点一个走宽带来测试,死活连不上。
    两边都关了防火墙了,按照要求选同一线路、相同组名,同一网段IP,绿色对钩提示连接成功,就是ping不通……偶尔又能ping通,大部分时候不行。宽带路由器NAT类型全锥,不过哪怕是中转也不该ping不通啊。

  • 明明是滑稽 评论于 回复

    请问我想用家里网自建服务器怎么搞,据说是光猫改桥接路由拨号上网,后面怎么操作不懂了,这一系列操作有名字嘛,我想自己搜一下教程,谢谢!

    • Bug侠 评论于 回复

      @明明是滑稽
      关键词:“路由器 公网IP 映射 端口”
      其实核心就是把你的公网IP和你局域网内自建的这台服务器关联起来,然后映射好端口,就可以了。多找找教程,需要折腾折腾 :笑哭:

  • LMKT 评论于 回复

    咱有在用这个软件,经过朋友介绍
    咱也详细发了博客的内容,我也没搞明白
    想进群 但是群问题难住了,咱试了很多也没办法进群
    咱想知道进群的答案是什么 有些东西真的搞不懂,看了也不明白

    • Bug侠 评论于 回复

      @LMKT
      呃……常见数据传输协议无非TCP或UDP,选一种吧 :嘻嘻:

  • hoshinomio 评论于 回复

    站长你好。我有个游戏需要一个主机端与其他游玩端。我在虚拟机上部署了主机端,但是虚拟机与宿主机ping不通,请问是为什么。

  • eae 评论于 回复

    为什么我分享的链接粘贴之后就是这个easyn2n:/JuLnMyLmJ1Z3hpYS5jb206NTI0MTlANXh5NFd6RTZsU0BhdXRvQExVVU5DaTE0SURFPQ==
    这样子根本联机不了

    • Bug侠 评论于 回复

      @eae
      请私信回复邮件,你的主界面截图,及附加参数截图

    • aaa 评论于 回复

      @eae
      复制到QQ上面的某些符号会自动识别成表情,你链接内的/b被识别成QQ默认表情了,自己新建个文档复制粘贴最好。

  • newcc39 评论于 回复

    你好,请问后续的付费服务器获取,获取出来只有一个文本框怎么解决

    • Bug侠 评论于 回复

      @newcc39
      使用Ctrl + F5强制刷新浏览器缓存,然后重试几次
      或者更换浏览器尝试

  • 龙雨 评论于 回复

    大佬您好,
    看来qq联系您不方便。在网站这边留言。
    我们目前快要上线的一个产品现在需要内置类似小黄鸭的转发/打洞服务,目前试验下来在国内小黄鸭也是性能最好的。既然小黄鸭是n2n的一层皮,我们希望能在unity环境中用C#重写这层皮,达成和小黄鸭一样的效果。我们希望能和您有偿沟通,看看能否达成一些帮助和合作。
    十分感谢您。

    • Bug侠 评论于 回复

      @龙雨
      感谢支持~但也很抱歉
      我的主要开发语言是pyhton和php……做小黄鸭纯属业余的爱好,所以可能没法帮到你
      N2N的底层实现逻辑需要你这边自行学习解决啦。我这边顶多说作为资深使用者,给你们一些经验
      官方git:https://github.com/ntop/n2n :笑哭: :笑哭: :笑哭:

      • 龙雨 评论于 回复

        @Bug侠
        嗯嗯,感谢回复。
        没有事的,您的技术栈不匹配也无妨的。我们主要是想要理解您在n2n的基础上做了什么,以及小黄鸭能否开源。这些信息能帮助我们最快地上手。

        • Bug侠 评论于 回复

          @龙雨
          Sorry,小黄鸭暂不开源。不过核心思路和原理也很好理解,一句话:
          CreateProcess、CreatePipe带参启动edge.exe,读取其输出
          ———————
          小黄鸭其实是在上述核心功能的基础上,整合一些和原N2N不相干的东西,比如测试工具、安装Tap网卡等等,再比如在线列表的功能也是利用官方的API做成了GUI

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