N2N 新手向导

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

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

N2N 的工作原理是什么?特点是什么?
需要通讯的 A、B,它们之间(可能)不能直接通讯,但是它们都能与中心节点 S 进行通讯。如果 A、B 的网络结构(NAT)比较好,那么它们通过中心节点 S 的帮助后就能建立起直连关系,不再依靠 S 就也能相互通讯(即 P2P,一种不经过中心节点的,彼此之间直接的通讯方式);反之,如果网络比较差,他们之间就建立起全部流量通过中心节点 S 的转发关系(即所有的通讯都离不开中心节点,并全部由它来转发才能相互通讯)。除此之外,我觉得 A、B 之间还可能建立一种叫做借道的连接关系,就是用别人已经建立好的通道进行通讯(例如 v2 走 v1 的通道,走Tinc、pptp的通道)。所有的设备只要以具有相似的特征运行 N2N 客户端(查看下面最精简方式,保证这个 IP 最后一位不同:10.0.0.100,其余相同即可),就能加入到同一个“虚拟局域网”,实现彼此之间的通讯。

在同一个“虚拟局域网”里面可能有 A、B、C、D 等等很多终端,A 可能与 B 只能建立转发关系,但是 A 可能与 C 建立直连关系,只要可能,它会优先建立直连,不行再建立转发,从而大大减轻中心节点 S 的负担,同时提高能直连的终端之间的通讯速度,这就是 N2N 最大的优点,其次是该软件全开源。缺点就是所有的终端必须运行客户端软件 edge,目前还不大成熟。我熟悉的同样工作原理的软件还有:tinc 和 zerotier,他们都比 N2N 成熟。美中不足的是: zerotier 的服务器端不开源,而且服务器离中国太远,部分地区及网络使用体验差;tinc 的布置没有 n2n 简便。

N2N 适合什么人玩?
适合有点折腾精神的屌丝玩。如果你想简简单单就达到比较完美的体验,那是不可能的。N2N 需要折腾,需要有一定的 DOS、linux 类知识,特别是防火墙规则方面的网络知识。如果你不属于这类人,那么早日转向玩其他的吧,zerotier 是一个不错的选择。相对来说,n2n 不傻瓜化,目前也不大完善,不管是稳定性,还是速率,以及直连的成功率,都不及 zerotier,所以早日转向是一个脱离苦海的好办法。而屌丝们可以配合官方的不断更新,不断折腾,不断反馈,不断完善,寻找到折腾的乐趣,追求至善至美。

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

N2N 目前有几个版本?
目前有三个版本,他们互不相容,必须分开独立使用。它有两个主程序,一个是 edge (客户端),一个是 supernode(服务器端)。edge 和 supernode 必须版本对应使用,不能用 v1 的 edge 连接 v2 的 supernode,v2s 的 edge 就必须连接 v2s 的 supernode。目前推荐你使用 V2 版本,因为速度最快,直连率也高,最重要的是,官方正在不停的更新。
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 网络的前提条件?
需要在所有的设备上(本地网络没有禁用 UDP 端口的通讯)运行一个 n2n 的客户端 edge(点对网、网对网的除外),并需要一个服务端 supernode(即中心节点)的帮助。这个服务端 supernode 既可以是公用的(一个 supernode 可以同时支持很多 edge,同时支持多个虚拟局域网),也可以是自建的,但它必须要有一个外网 IP 以及对外开放的固定端口(别人通过这个 IP 和端口可以访问到它提供的服务)

我应该怎么样尽快体验一下 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、在 ubuntu 下:我的系统是 ubuntu 16.04X64,在后台直接打开“TUN/TAP”开关即可,有些系统默认就有虚拟网卡,不需安装和设置。 其他情况下,可能需要自己去研究和安装,这个我也不会。安装虚拟网卡的驱动是必须的,在没有做好之前,你的 n2n 是运行不起来的。

N2N 的速度咋样?
去这里看看吧,有我做的测试,供官方改进、提高用(总体上,v2 最优):https://github.com/ntop/n2n/issues/146

N2N 怎么才能直连?
首先优先使用最新的 v2,以及 v2s,然后尽量改善我们的网络结构(NAT,见本站的一个“经验”的帖子),除此之外,我们没有别的办法。而对于有些网络,例如移动、长城宽带,特别是后者,本身体质很差,换谁都不大可能直连,只能是转发。还有,如果你的设备处于一个很复杂的网络结构的底层(在很多网关及路由器的后面),那么也可能是很难直连的。

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

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

supernode -l 10086

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

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

更多帮助信息
N2N 官网: https://github.com/ntop/n2n (目前在更新的是 V2 的 dev 版)
N2N 文章:本站。我收集、整理了很多这方面的文章,可以说是最全面的
N2N 交流:QQ群 256572040。我觉得本站提供的都有了,不必进群。如果你钱太多,那就进去吧,财主!


100%(3)

0%(0)

发表评论

*