一.介绍
前面介绍的其实内网穿透方案更大意义上是端口转发或者反向代理,而这次要提的,则是P2P组网方案,要知道P2P在打洞穿透方面优势是挺大的,而且成功打洞之后不通过第三方服务器直接连接,能够不受第三方服务器的带宽限制,而如果没有成功打洞,则可以通过第三方服务器中转,进退皆有路,一定意义上来说是最好的解决方案。
在这一类P2P VPN中比较出名的几种有N2N、Tinc、PeerVPN以及ZeroTier,本次介绍的是N2N。
N2N是开源的,其作者是Ntop作者Luca Deri,也是个牛人,可惜的是他现在已经不再维护N2N,也不知道是啥原因,不过还好开源社区有其他人加入了维护,并且已经成熟了,Bug也没啥太严重的,所以没啥问题,还是挺好用的,N2N分为SuperNode和EdgeNode,前者被称为超级节点,能够在EdgeNode之间建立握手并为无法直连的EdgeNode中转数据,是网络的核心部分。当然由于SuperNode的重要性,N2N支持为EdgeNode指定多个SuperNode,以便组成更复杂的网络,并且防止单个SuperNode出问题导致的整个网络瘫痪。
二.安装配置
N2N的安装其实挺简单的,因为没太多依赖
1 2 3 4 5 6 7 8 |
yum groupinstall "Development tools" -y git clone https://github.com/meyerd/n2n cd n2n/n2n_v2 mkdir build cd build cmake .. make make install |
然后就装好了,会生成supernode和edge两个可执行程序,看看名字就知道一个是SuperNode一个是EdgeNode
需要了解一点,EdgeNode和SuperNode是不冲突的,所以在SuperNode的机器上是可以同时运行EdgeNode的,所以这个网络可以搞得很复杂的说,就看你需求了。
对了,在相同平台下编译的supernode和edge文件直接拷贝过去就能跑,不用再次编译,所以……你懂的
服务端的运行很简单,最少情况下只需要指定一个参数就行
1 2 3 4 5 6 7 |
supernode -l UDP监听端口 #参数说明 -f 前台运行 -u 指定运行所用的UID -g 指定运行所用的GID -v 输出比较详细的log |
那么接下来就是EdgeNode了,这个的参数就比较多了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
edge -d 虚拟网卡名 -a 10.0.0.1 -c testnet -k senrame -l 1.2.3.4:1234 #参数说明 -d 虚拟网卡名 -a [static:|dhcp:]虚拟网段(IP),static模式其实可以不用加那个static: 直接写IP就行 -c 用于区分节点的社区(组)名 -k 用于加密的字符串 -K 用于加密的Key文件,和-k不能共存 -s 子网掩码 -l supernode的IP:端口,可以指定多个supernode的 -i NAT打洞间隔 -b 当使用DHCP时定期刷新IP -p 指定本地端口 -u 指定运行所用的UID -g 指定运行所用的GID -f 前台运行 -m 为虚拟网卡指定MAC地址 -r 启用包转发,当-a指定DHCP时需要启用 -E 接收组播MAC地址 -v 输出比较详细的log -t 指定用于管理的UDP端口 |
如果创建虚拟网卡出问题了,可以尝试手动创建
1 2 |
yum install tunctl -y tunctl -t 虚拟网卡名 |
然后使用-d指定虚拟网卡名,-m指定MAC来连接,至于uid和gid这个你不是root的情况下可以研究下
另外如果运行在后台的情况下要看问题,可以在/var/log/message文件中查看日志
正常情况下在配置完supernode和edge后就能正常连接了
Senraの小窝原创文章,转载请注明来自:内网穿透系列——N2N(简单的P2P组网方案)
近期评论