n2n实现内网穿透
简介
在内网穿透中,N2N做为一个点对点的穿透工具,非常适合用来远程办公。原版的n2n github地址为:https://github.com/ntop/n2n,一个较好的维护版本是:https://github.com/meyerd/n2n。
n2n设计的初衷,是为了通过中心节点的牵线搭桥,建立连接以后,不再依靠中心节点的帮助,让连接的两端直接通讯,此种状态叫住直连。然而,实际情况是,使用以前的官方程序,即使是最好的网络环境,也很难直连,实际上多半还是通过中心节点的转发。除了直连和转发,还有一种情况,就是借道,顾名思义,借用别的通道,实现更快传输。注意,为了以示区别,我们把 github 上 meyerd 的 v2 版叫住 v2s,也叫新版(之前叫v2.1),其需要新的中心节点支持,其他的中心节点都不可用。这个新版,用作者的话说,是为 n2n v3 而生的。也许 n2n v3 就要来了!
N2N 的工作原理是什么?特点是什么?
打个比喻:需要买、卖牛的 A、B 互不认识,他们还可能不在一起。他们虽然都有了这个想法,但是对方并不知道,那该怎么办?此时他们都找到了百事通能人 S,在他的帮助下,A、B 就联系上了。如果他们之间语言相通,那么他们就可以撇开 S 直接交流实现买、卖牛的过程,如果不通,那么他们就只好请 S 帮忙翻译了。这次生意结束后,他们就要分手了,可是他们可能连名字、住址都没有,分了手就又成了路人不再相识,下次他们有想法还得找 S。S 是一个大好人,免费帮忙,毫无索取。
这个思想就是 N2N 的工作原理:可能没有外网IP,处于大内网的 A、B,通过中心节点 S 的帮助,建立起“虚拟局域网”,实现了通讯,如果他们之间的网络结构比较好,那么他们之间就建立起直连关系,速度、保密性大大的,如果不好,就只好通过 S 转发了。并且中心节点 S 可以服务许多相互隔离的虚拟局域网,他们互不干扰,独立运行,中心节点也不会知道组内的人在干什么,所以中心节点可以共享给别人使用。N2N 软件免费、开源,布置简单(一行代码即可),缺点就是所有的终端必须运行客户端软件 edge。
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 分支,非官方版本。曾经在三个版本中,它的直连率和稳定性是最高的)
搭建过程
git clone https://github.com/meyerd/n2n.git
cd n2n/n2n_v2
yum install -y openssl-devel
yum install -y cmake
yum install -y net-tools
yum install -y git
yum install -y gcc gcc-c++
mkdir build
cd build
cmake ..
make && make install
supernode(服务端运行)
前提:外网ip,放开端口,udp可连通
supernode -l 5000 -v -f
-l 指定服务端口
-v -f 调试模式
服务端也可以同时当做客户端使用,将服务端加入到虚拟网络中。
edge -a 10.0.0.10 -c lgy -k lgy -l 1.2.3.4:5000 -v -f
-a 指定的虚拟ip
-c 组名
-k 组密码 -K 可指定秘钥文件
-l supernode 地址加端口、v2版本可指定两个,高可用
win10使用edge
Windows下的N2N 客户端启动器下载:https://file.bugxia.com/s/FFMfeHrn7geyRPP
image.png打开n2n.exe。安装虚拟网卡,安装完毕后会在网络适配器界面出现TAP-Windows Adapter V9
image.png image.png
需要注意的是无论是edge 还是supernode,必须是同一个版本。跨版办不兼容