n2n实现内网穿透

n2n实现内网穿透

之前有弄过树莓派的NAS服务,但是局限于传输速度和网络延迟的问题,所以并没有用于实践,项目就暂且搁浅。至此发现了p2p能够实现端对端的数据传输,解决了传统的服务器中转传输所存在的问题,NAS计划有了新的突破。

简单介绍

n2n1.jpg

前面介绍的frp进行反向代理,实现内网穿透,客户端之间的数据传输都需要经过frp服务器中转,这样会导致数据传输的速度收到服务器的影响。要知道P2P在实现NAT打洞的方面有很大的优势,如果能够成功打洞之后,客户端之间传输数据是不经过第三方服务器,而是直接连接,而如果没有成功打洞,则可以通过第三方服务器进行中转,进退皆可,可以说是在没有公网ip的情况下,最好的解决方案。

简单的介绍一下n2n,这个n2n不是内衣的那个n2n,大家别找错了(✪ω✪)。github上介绍说是N2n is a light VPN software which make it easy to create virtual networks bypassing intermediate firewalls.。也就是轻量级的vpn软件,n2n会试着建立p2p直连协议,如果失败,会直接使用服务器中转数据。

frp服务也能实现p2p模式,这里就不多说,自行百度

搭建过程

搭建很简单,只要搞清楚服务端和客户端的关系就很容易操作。关系图如下:

N2N.png

在搭建之前先弄清楚n2n的几个版本:V1、V2和V2s,sudpernode的使用的版本一定要和Edge的版本一致,否则之间的无法服务之间不能进行连接。这里搭建的使用的V2s。

搭建环境
  • centos 7
  • windows 10
Supernode搭建
#安装依赖包
yum install subversion gcc-c++ openssl-devel git cmake
#下载n2n源码包
git clone https://github.com/meyerd/n2n.git
#编译
cd n2n/n2n_v2
mkdir build
cd build
cmake ..
make
make install
#开启supernode服务端口
supernode -l 1000

image-20200114091045736.png

supernode 参数

-v:输出日志

-l:<port> 监听端口

-f:不进行后台运行

如果进行debug可以使用 supernode -l 1000 -f -v 实时查看输出,这里还需要提醒的是,如果开了防火墙的,注意关闭防火墙,开了安全组的,注意开放端口。

Edge搭建
centos搭建
#安装依赖包
yum install subversion gcc-c++ openssl-devel git cmake
#下载n2n源码包
git clone https://github.com/meyerd/n2n.git
#编译
cd n2n/n2n_v2
mkdir build
cd build
cmake ..
make
make install
#开启edgenode服务
edge -d device0 -c n2n -k Flowerfire -a 10.0.0.1 -l <外网ip>:1000 

image-20200114094207957.png

edge 参数说明

-d:device name。虚拟网卡的名称

-c:community name。社区名

-k:key。密码

-a:虚拟网卡的ip地址

-l:supernode 的关联地址。

windows搭建

windows就直接安装edge客户端就行。下载地址,如下:
客户端
n2n_win.zip

由于supernode使用的版本是v2s,软件n2nguien使用的是v2,所以软件启动后无法连接到supernode,这里需要替换一下edge2.exe,替换文件在n2n_win.zip,重命名一下edge_v2.exe,然后进行替换

总结

虽然项目已经搭建起来了,但是并没有达到我想要的结果,最后测试两个edge之间数据的传输,但是并没有走p2p协议,网上查了一下,发现是因为nat的问题,p2p对其nat的条件有限制,所以搭建之前先自行检查一下自身网络是否符合搭建条件,至于如何检查我这里就不多说了,因为我也是搭建完成后才发现我的网络环境不支持p2p (T_T) 。

nat的四种类型自行百度脑补

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值