自建n2n supernode (国内n2n supernode)

国外的supernode慢,延迟都快1s了,ssh打字都卡,借助开源硬件,在家自建了一个n2n 的supernode

地址:ustc.gq:2000ngrok.iok.la:2000

协议版本:n2n_v2          端口:2000

补充:什么是n2n?

n2n内网穿透神器

n2n用途

假如想实现远程访问,访问家里的路由、电脑,等等设备,最简单的方式就是采用端口映射(端口转发),但是很多情况下我们没有路由的权限,这样根本就没有办法访问私网,因为受网关的保护。

本想通过sock请求来发送的,但是实现起来必须是内网主动发起,不能外网主动发起,可以保持长连接来通信,但是还是有很多的局限性。放弃采用。

考虑过VPN,但是VPN配置还是比较复杂,不能做到随意使用,放弃。

这时N2N进入了我的视野,其实就是P2P协议,及点对点协议,实现UDP打洞。

原理图如下:

1

2

N2N分两个部分,一个是supernode,一个是edge。supernode即中心节点,edge 即边缘节点,supernode的作用就是对两个edge节点进行连接的作用,和p2p服务器作用一样,且n2n数据是不走supernode的,所以数据很安全。

配置N2N

注意:不要使用yum或者apt-get还安装n2n(下面待会儿说)

我一开始也是 使用yum install n2n安装的,结果中间发生很多问题。

这里尽量采用源码包编译安装。

在supernode和edge 节点运行下面命令

1
2
3
4
5
`svn co https:``//svn``.ntop.org``/svn/ntop/trunk/n2n`
`cd` `n2n``/n2n_v1/`
`make` `&& ``make` `install`
`cp` `supernode ``/usr/sbin/`
`cp` `edge ``/usr/sbin/`
如果没有安装svn的话执行下面的命令
1
`yum ``install` `subversion`

启用N2N

启用中心节点(supernode)

1
`supernode -l 2000 -``v`
2000即开发给边缘节点的端口

如果采用我的中心节点,您只需要在两台机器上面运行edge ,这样两台内网机器直接互通,由于数据不走中心节点,所以数据很安全。(不保证节点能一直运行下去

example:

edge -d n2n0 -c mynetwork -k encryptme -a 10.1.12.1 -l ustc.gq:2000 >/dev/null &

启用边缘节点(edge)

在需要加入n2n的机器上执行

1
`edge -d n2n0 -c mynetwork -k encryptme -a 10.1.12.1 -l 1.2.3.4:8080`
-a 参数 是指指定一个IP给边缘节点

如果出现如下信息表示成功了

20150211114821

您还可以再次加入其他edge节点,这样节点与节点可以互相ping 通

再次在第2节点上运行如下命令
edge -d n2n0 -c mynetwork -k encryptme -a 10.1.12.2 -l 1.2.3.4:808
0

如果成功的话 在 第一个节点上面进行ping第二个节点是能互相通的。

以上命令也可以放入后台执行

supernode -l 8080  >/dev/null &

edge -d n2n0 -c mynetwork -k encryptme -a 10.1.12.1 -l 1.2.3.4:8080 >/dev/null &

1.2.3.4是指中心节点ip

运行 supernode 的时候可以带上-v 参数,来查看报错情况。

关于可能遇到的错误

问:我有一个中心节点 一个边缘节点,加入之后为什么中心节点不能ping通边缘节点的ip?

答:这中情况下一般是中心节点没有去运行边缘节点。需要在中心节点加入edge边缘节点,参考上面的边缘节点运行方式,加入后重新ping试试。

若出现如下错误

1
2
3
4
`11``/Feb/2015` `00:05:42 [ sn.c: 409] ERROR: Failed to decode common section`
`11``/Feb/2015` `00:06:37 [ n2n.c: 303] Purging old registrations`
`11``/Feb/2015` `00:06:37 [ n2n.c: 308] Remove 0 registrations`
`11``/Feb/2015` `00:06:42 [ sn.c: 409] ERROR: Failed to decode common section`
很可能能你用的是yum 和编译的造成的版本不一致造成的,这也是 一开始为什强调不要使用yum 和复制两个文件到/usr/sbin的原因,尽量使用make 后的命令make 后会在 当前目录下面生产supernode,edge文件把它覆盖到系统变量目录下面。

参考上面编译源码部分。

本教程基于N2N_V1版本,安装V2版本同样适用,但是v1和v2是不能相通的,也就是说必须运行同一版本。

n2n还有很多客户端,比如android和win客户端,安卓下面可以到googleplay上下载。相当简单这里不多介绍。

n2n作为端口穿透确实是个神器,后面我可以用我的树莓派来做只能家居了,很期待。

 

n2n介绍文章转载自https://www.phpbulo.com/archives/655.html,特此感谢