N2N 新手向导及最新信息(2019-12-05 更新)

如果你是一名刚接触 N2N 的朋友,希望此教程能起到导航的作用,让你更快的学习了解到 N2N 的相关知识。建议你学习、实践的方法是:先易后难,循序渐进

N2N 是什么?
N2N 是指通过 UDP 方式,建立虚拟局域网的一种轻量级 VPN,是全端口开放的 VPN。所以,如果某个网络禁用了 UDP,那么该网络下的设备就不适合使用本软件来加入这个虚拟局域网(用"blue's port scanner",选择UDP来扫描,扫出来的就是未被封的,正常情况下应该超级多)

N2N 的工作原理是什么?特点是什么?
打个比喻:需要买、卖牛的 A、B 互不认识,他们还可能不在一起。他们虽然都有了这个想法,但是对方并不知道,那该怎么办?此时他们都找到了百事通能人 S,在他的帮助下,A、B 就联系上了。如果他们之间语言相通,那么他们就可以撇开 S 直接交流实现买、卖牛的过程,如果不通,那么他们就只好请 S 帮忙翻译了。这次生意结束后,他们就要分手了,可是他们可能连名字、住址都没有,分了手就又成了路人不再相识,下次他们有想法还得找 S。S 是一个大好人,免费帮忙,毫无索取。

这个思想就是 N2N 的工作原理:可能没有外网IP,处于大内网的 A、B,通过中心节点 S 的帮助,建立起“虚拟局域网”,实现了通讯,如果他们之间的网络结构比较好,那么他们之间就建立起直连关系,速度、保密性大大的,如果不好,就只好通过 S 转发了。并且中心节点 S 可以服务许多相互隔离的虚拟局域网,他们互不干扰,独立运行,中心节点也不会知道组内的人在干什么,所以中心节点可以共享给别人使用。N2N 软件免费、开源,布置简单(一行代码即可),缺点就是所有的终端必须运行客户端软件 edge。

N2N 适合什么人玩?
适合有点折腾精神的屌丝玩。如果你想简简单单就达到比较完美的体验,那是不可能的。N2N 需要折腾,需要有一定的 DOS、linux 类知识,特别是防火墙规则方面的网络知识,有了这些,你会爱死它的。如果你不属于这类人,那么早日转向玩其他的吧,zerotier 是一个不错的选择,相对来说,zerotier 高度自动化、傻瓜化,并且也比较成熟,所以早日转向是一个脱离苦海的好办法。而屌丝们可以配合官方的不断更新,不断折腾,不断反馈,不断完善,寻找到折腾的乐趣,追求至善至美。

怎样得到帮助?
直接主程序后加上 -h 运行即可,例如: edge -h,supernode -h

N2N 目前有几个版本?
目前有三个版本,他们互不相容,必须分开独立使用。每一个版本都有两个主程序,一个是 edge (客户端),一个是 supernode(服务器端)。edge 和 supernode 必须成对使用,不能用 v1 的 edge 连接 v2 的 supernode。推荐你使用官方新版 V2(2019-6-10 以后的):速度最快、直连率高,最重要的是,官方正在更新,你也可以参与进来,帮助完善。
V1 : https://github.com/meyerd/n2n/tree/master/n2n_v1 (版本号是 v.1.x.x)(使用 edge -h 可见,下同)
V2 : https://github.com/ntop/n2n ---------------------------------(版本号是 v.2.x.x)
V2s: https://github.com/meyerd/n2n/tree/master/n2n_v2 (版本号是 v.2.1.0;V2s 是我们为便于区分,给它取的别名,它其实是一个德国网友写的 n2n v2 分支,非官方版本。曾经在三个版本中,它的直连率和稳定性是最高的)

建立 N2N 网络的前提条件?
需要在所有的设备上运行一个 n2n 的客户端 edge(点对网、网对网的除外),并需要一个服务端 supernode(即中心节点)的帮助。这个服务端 supernode 既可以是公用的(一个 supernode 可以同时支持很多 edge,同时支持多个虚拟局域网),也可以是自建的,但它必须要有一个外网 IP 以及对外开放的固定端口(别人通过这个 IP 和端口可以访问到它提供的服务)。而且所在的网络环境没有封 UDP 通讯(这个基本都没有封)。

我应该怎么样尽快体验一下 N2N 网络?
建立 N2N 虚拟局域网的第一步不是自己编译 edge 和 supernode,再自己建立中心节点 supernode,而是利用现成的客户端软件,再借用别人的中心节点。合适的客户端可以到这里去下载: github.com/lucktu/n2n,可用的中心节点可以去这里寻找:supernode.ml(或者:http://www.lucktu.com/archives/749.html 不过比较旧)假设你的系统自带虚拟网卡,就可以使用下面的命令运行起来了(最精简方式),(edge、supernode 都可以改名运行,v2 及 v2s 可以不带 -k 参数运行)

edge -a 10.0.0.100 -c n2n -k test -l n2n.lucktu.com:10086

根据运行 edge 时的输出信息,查看这篇文章:http://www.lucktu.com/archives/776.html 里的一些解释,我们就能知道 N2N 网络的运行状态,判断是否工作正常。如法炮制,你可以运行第二个、第三个客户端 edge,组建一个临时的虚拟局域网。从一端 ping 另外一端,也许就能 ping 通了。对于 windows 系统,需要在被 ping 端关闭防火墙,否则,是 ping 不通的。如果是在 padavan 上运行的 edge,那么你只要在 padavan 设置界面里设置允许 ping 即可。

虚拟网卡驱动应该怎么装?
1、在 windows 下:从上面提供的链接里(windows/other/),随便下载一个第三方的客户端,里面就有,安装即可。可以安装多个这样的虚拟网卡,每一个虚拟网卡对应可运行一个 edge 客户端(linux 下不需要,直接加 -d 参数区分,即可运行多个)
2、在 linux下:有些系统默认就有虚拟网卡,不需安装。我的系统是 ubuntu 16.04x64,在后台直接打开“TUN/TAP”开关即可。如果没有(运行 modifo tun 来查看),就需要自己去研究和安装,虚拟网卡的支持是必须的,安装详情

N2N 的速度咋样?
为了排除带宽、以及 ISP 的 Qos 的影响,我们以局域网内的测试来说明。新版 n2n_v2 用上 A 参数,群友(by 黑夜)在 CPU100% 的时候,达到了 23.9MB/s。

下面说说我的测试,也是在局域网内、受限于 CPU 的性能(群晖的 CPU 都是 100%)测得的(上:下):

0.71:1.41 MB/s --- n2n_v2,默认加密(无 A 参数);测试图
3.36:6.06 MB/s --- n2n_v2,增加 A 参数;测试图
3.62:6.52 MB/s --- n2n_v2,不用 k 参数(无加密);测试图
0.71:1.39 MB/s --- n2n_v2s,与默认加密方式的 n2n_v2 速度差不多;测试图
3.12:2.40 MB/s --- Tinc,特别之处:tinc一端在群晖,一端在7621路由器(受影响的数值:2.40MB/s);测试图
0.92:2.38 MB/s --- zerotier,从群晖拷贝波动很大0.5~1.3,反向拷贝时群晖的 zerotier 居然重启了;测试图

设备情况:群晖 DS-213J(armada370 + dsm6.1.7,感觉此 CPU 稍弱于 intel N270)<---> 笔记本 HP tpn-q171(i5 + windows10x64位),路由器是 mtk7621 cpu 的padavan。我只是简单的局域网内拷贝文件(smb),上传端 CPU 的压力大。测试时间:2019-12-3 ~ 2019-12-4。

N2N 怎么才能直连?
首先优先使用最新的 v2(2019-6-10 以后的 edge 和 supernode),以及 v2s,然后尽量改善我们的网络结构(即 NAT,见本站的一个“经验”的帖子)。对于有些网络,例如移动、长城宽带,特别是后者,本身体质很差,是不容易直连的。还有,如果你的设备处于一个很复杂的网络结构的底层(在很多网关及路由器的后面),那么也可能是很难直连的。理论上,如果通讯的 A、B 不都是 NAT4 网络,基本上经过调整,都能直连(强调一下:针对 N2N_v2 新版,如果你的 edge 运行时使用 -p xxx 参数设置固定的端口,再在上级所有路由器上设置端口 xxx UDP 转发到这台机器,那么基本上都能直连)。v2目前在局域网内不能直连,除非用“强调一下”的方法,而 v2s 只要加上 -L 参数即可。

怎么样设置自己的中心节点?

建立自己的中心节点,不是必须的。但建立的方法其实也非常简单,首先你要有一个有外网 IP(IPv4) 的网络环境,然后你需具有端口开放的权限就可以了(外网可以访问某个未被占用的端口)。如下所示,你只要保持它在线,然后再打开 10086 端口的 UDP 被访问权限即可(v1 建议再开放 tcp 权限;supernode 可以不要虚拟网卡的支持即可运行)

supernode -l 10086

然后别人使用你的 IP 加端口就可以与之连接了。如果你的 IP 不是固定的,你就必须使用域名来代替 IP,此时你的客户端(edge)命令行里需要带上 -b 参数。这样你的 IP 发生改变,客户端也能及时更新,所以 edge 使用动态域名型 supernode 时,这个 -b 一定要加(2019-8-19 以后的官方 v2,已经自动识别了,并取消了-b 这个参数)。

怎么样编译自己的 n2n 主程序?
由于这个编译有较大难度,而且官方还在经常变化,我也只能编译一些简单的,还是借助大师们的工具,所以这里我就不介绍了,有能力你就上(编译方法,官方说明文件里有),做不了你就用别人编译好的吧,一样的。

更多帮助信息
N2N 官网: https://github.com/ntop/n2n (目前在更新的是 V2 的 dev 版)
N2N 文章:本站。我收集、整理了很多这方面的文章,如果你想更进一步,那么就认真阅读吧。
N2N 交流:QQ群 5804301。我觉得本站提供的都有了,不必进群。如果你钱太多,或者你需要长期关注,那就请进吧!


100%(7)

0%(0)

发表评论

*