用N2N搭建简单的VPN
1.
概述
N2N是一款开源的P2P VPN软件,其作者是著名的开源网管软件ntop的作者Luca Deri。
N2N是一个双层架构的VPN,它让用户能够在网络层上开发P2P应用的典型功能,而不是在应用层上开发。这意味着用户能够获取本地IP一样的可见度(比方说,同一个n2n网络内的两台PC机能够相互ping通),而且能够通过n2n虚拟网内的IP地址相互訪问,而不必关心当前所属的物理网络地址。能够这样说,OpenVPN是把SSL从应用层转移到网络层实现(比方说实现https协议),而n2n则是把P2P的实现从应用层转移到网络层。
2. N2N设计的主要功能
l N2N是基于P2P协议之上的两个私有网络间的加密层
l 加密是在edge节点上运行的,使用开放的协议,用户自定义密钥:你自己控制自己的安全,不须要托付给第三方公司
l 每一个n2n用户能够同一时候隶属于多个网络
l 有NAT和穿越防火墙的功能,即使n2n节点位于私网中,也可以訪问,防火墙不再是在IP层的直接沟通和交流的障碍
l N2N网络不是独立的,它是可以跨越N2N和非N2N网络路由的
3. N2N架构组件
l Edge节点:用户PC机上安装的用于建立n2n网络的软件。差点儿每一个edge节点都会建立一个tun/tap设备,作为接入n2n网络的入口。
l Supernode超级节点:它在edge节点间建立握手,或为位于防火墙之后的节点中转数据。它的基础作用是注冊节点的网络路径,并为不能直通的节点做路由,可以直通的节点间通信,是P2P的。
Edge节点间通过虚拟的tap网卡交互。每一个tap网卡都是一个n2n edge节点。每台PC机能够有多个tap网卡,所以,在n2n网络中,同一台PC机能够属于多个网络。
4. N2N网络构架图


当中super node提供场所,让两个位于NAT/防火墙之后的edge node进行会面,一旦两方完毕首次握手,剩下的数据流就之发生在两个edge node之间,假设有一方的NAT属于对称型(symmetrical),super node则还需继续为两方提供数据包的转发;edge node负责数据流的加解密,原理非常easy。
对于一个VPN而言,主要涉及封装和加解密两个步骤,edge node使用UDP协议进行封装,目的是为了更好的兼容防火墙的策略,由于非常多防火墙禁用了非TCP/UDP协议禁用。加密算法则採用了twofish,开源、简便,处理速度快。
5. 安装及使用方法
源代码直接从SVN上获取,里面包括了V1和V2两个版本号,我编译的是V2版本号
#svn cohttps://svn.ntop.org/svn/ntop/trunk/n2n
#cd # cd n2n/n2n_v2
#make
#make install
编译安装后,多了两个应用:supernode和edge
l
启动supernode
# supernode -l <listening port>
參数-l是监听的port,进程缺省是执行在后台的。可选參数:
|
supernode usage |
l Ege的使用方法:
#edge-a 10.10.0.1 -c mypbxn2n -k mypbxn2n -l 192.168.122.180:8888
edge -a 虚拟IP -c 你的虚拟网名 -k password -l supernodeip:port
|
edge -d <tun device> -a [static:|dhcp:]<tun IP address> -c <community> [-k <encrypt key> | -K <key file>] [-s <netmask>] [-u <uid> -g <gid>][-f][-m <MAC address>] |
l Windows版
我没有在Win32下自己编译,http://www.vpnhosting.cz/n2nguien.exe提供了一个安装包,里面包括了V1和V2版本号,注意使用时和自己所选版本号的匹配。

单击advanced按键,勾选Enable packet forwarding through n2n community

注意在win7下,安装文件夹下的全部可执行文件,均须要以管理员身份执行。
用N2N搭建简单的VPN的更多相关文章
- 树莓派(Raspberry Pi)搭建简单的lamp服务
树莓派(Raspberry Pi)搭建简单的lamp服务: 1. LAMP 的安装 sudo apt-get install apache2 mysql-server mysql-client php ...
- 拿nodejs快速搭建简单Oauth认证和restful API server攻略
拿nodejs快速搭建简单Oauth认证和restful API server攻略:http://blog.csdn.net/zhaoweitco/article/details/21708955 最 ...
- Ubuntu 14.04搭建简单git服务器
/****************************************************************************** * Ubuntu 14.04搭建简单gi ...
- 转:windows下使用gvim搭建简单的IDE编译环境(支持C/C++/Python等)
原文来自于:http://www.cnblogs.com/zhuyp1015/archive/2012/06/16/2552269.html 使用gvim在windows环境下搭建简单的IDE环境可以 ...
- [angularjs] MVC + Web API + AngularJs 搭建简单的 CURD 框架
MVC + Web API + AngularJs 搭建简单的 CURD 框架 GitHub 地址:https://github.com/liqingwen2015/Wen.MvcSinglePage ...
- nodejs辅助前台开发系列(1) 搭建简单HTML开发环境
搭建简单的html开发环境一般需要解决两个问题: 文本编辑器 WebServer集成 在文本编辑器选择上,VS Code 无疑是一匹黑马,谁用谁知道.WebServer集成nodejs对前端来说最为友 ...
- mongoDB介绍、安装、搭建简单的mongoDB服务器(一)
相关网站 1. http://www.mongodb.org/ 官网,可以下载安装程序,和doc,和驱动等. 2. http://www.mongoing.com/ 国内官方网站,博客,问题谈论等 ...
- Nginx之使用nginx搭建简单的文件服务器
使用nginx可以搭建简单文件服务器 安装nginx(不详述) 修改配置文件 /usr/local/nginx/conf/nginx.conf user root; /usr/local/nginx/ ...
- 基于python2【重要】怎么自行搭建简单的web服务器
基本流程:1.需要的支持 1)python本身有SimpleHTTPServer 2)ForkStaticServer.py支持,该文件放在python7目录下 3)将希望共享 ...
随机推荐
- Matlab,Visio等生成的图片的字体嵌入问题解决方法
确保所有字体嵌入,是生成高质量学术论文的必要条件.但是在Windows下,总会遇到Matlab或Visio生成字体没有嵌入的问题,当然这个问题的解决办法有很多(例如,对于Visio可以这样做:直接拷贝 ...
- Android - Animation 贝塞尔曲线之美
概述 贝塞尔曲线于1962,由法国工程师皮埃尔·贝塞尔所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计.贝塞尔曲线最初由Paul de Casteljau于1959年运用de Casteljau演算 ...
- Qt之文件操作 QFile
原地址:http://blog.csdn.net/liuhongwei123888/article/details/6084761 今天学习QT的文件操作 1.QIODevice直接继承自QObjec ...
- Linux下SSH Session复制
羡慕Windows下secureCRT的Session Copy功能,一直在寻找Linux下类似的软件,殊不知SSH本身就支持此功能. 特别感谢阿干同学的邮件分享. 详细方法 ? 1 2 3 4 Li ...
- 基于visual Studio2013解决面试题之0704判断牌是否顺子
题目
- 【Demo 0006】Android 组件(Activity)
本章学习要点: 1. 了解Activity基本概念; 2. 掌握Activity生命周期: 3. 掌握 Activity之间跳转:
- BSGS_Baby steps giant steps算法
BSGS这个主要是用来解决这个题: A^x=B(mod C)(C是质数),都是整数,已知A.B.C求x. 在具体的题目中,C一般是所有可能事件的总数. 解: 设m = ceil(sqrt(C))(ce ...
- XP教育网用户免费上网
本文针对 XP 教育网用户免费上网,其他系统未作测试.若有疑问百度空间留言 http://hi.baidu.com/itas109 http://blog.csdn.net/itas109 步骤 ...
- 用MFC实现WebGUI--(CDHtmlDialog)
自从去年年底一次棘手的界面,开始研究用web做界面到现在大约1年,这一年间不是局限在实现层面,也并非一直研究这一个问题,有很多问题其实不是问题,只是自己没有想清楚或者思想没放开.对于一个界面开发人员, ...
- Qt Windows下开机自动启动自己的程序
源地址:http://blog.csdn.net/chrisfxs/article/details/13279491 版权声明:本文为博主原创文章,未经博主允许不得转载. void Widget::R ...