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 <lport>      Set UDP main listen port to <lport>

-f              Run in foreground.

-v              Increase verbosity. Can be used multiple times.

-h              This help message.

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 <supernode host:port> [-p <local port>] [-M <mtu>] [-r] [-E] [-v] [-t <mgmt port>] [-b] [-h]



-d <tun device>          | tun device name

-a <mode:address>        | Set interface address. For DHCP use '-r -a dhcp:0.0.0.0'

-c <community>           | n2n community name the edge belongs to.

-k <encrypt key>         | Encryption key (ASCII) - also N2N_KEY=<encrypt key>. Not with -K.

-K <key file>            | Specify a key schedule file to load. Not with -k.

-s <netmask>             | Edge interface netmask in dotted decimal notation (255.255.255.0).

-l <supernode host:port> | Supernode IP:port

-b                       | Periodically resolve supernode IP

                         : (when supernodes are running on dynamic IPs)

-p <local port>          | Fixed local UDP port.

-u <UID>                 | User ID (numeric) to use when privileges are dropped.

-g <GID>                 | Group ID (numeric) to use when privileges are dropped.

-f                       | Do not fork and run as a daemon; rather run in foreground.

-m <MAC address>         | Fix MAC address for the TAP interface (otherwise it may be random)

                         : eg. -m 01:02:03:04:05:06

-M <mtu>                 | Specify n2n MTU of edge interface (default 1400).

-r                       | Enable packet forwarding through n2n community.

-E                       | Accept multicast MAC addresses (default=drop).

-v                       | Make more verbose. Repeat as required.

-t                       | Management UDP Port (for multiple edges on a machine).



Environment variables:

  N2N_KEY                | Encryption key (ASCII). Not with -K or -k.

l         Windows版

我没有在Win32下自己编译,http://www.vpnhosting.cz/n2nguien.exe提供了一个安装包,里面包括了V1和V2版本号,注意使用时和自己所选版本号的匹配。

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

注意在win7下,安装文件夹下的全部可执行文件,均须要以管理员身份执行。

用N2N搭建简单的VPN的更多相关文章

  1. 树莓派(Raspberry Pi)搭建简单的lamp服务

    树莓派(Raspberry Pi)搭建简单的lamp服务: 1. LAMP 的安装 sudo apt-get install apache2 mysql-server mysql-client php ...

  2. 拿nodejs快速搭建简单Oauth认证和restful API server攻略

    拿nodejs快速搭建简单Oauth认证和restful API server攻略:http://blog.csdn.net/zhaoweitco/article/details/21708955 最 ...

  3. Ubuntu 14.04搭建简单git服务器

    /****************************************************************************** * Ubuntu 14.04搭建简单gi ...

  4. 转:windows下使用gvim搭建简单的IDE编译环境(支持C/C++/Python等)

    原文来自于:http://www.cnblogs.com/zhuyp1015/archive/2012/06/16/2552269.html 使用gvim在windows环境下搭建简单的IDE环境可以 ...

  5. [angularjs] MVC + Web API + AngularJs 搭建简单的 CURD 框架

    MVC + Web API + AngularJs 搭建简单的 CURD 框架 GitHub 地址:https://github.com/liqingwen2015/Wen.MvcSinglePage ...

  6. nodejs辅助前台开发系列(1) 搭建简单HTML开发环境

    搭建简单的html开发环境一般需要解决两个问题: 文本编辑器 WebServer集成 在文本编辑器选择上,VS Code 无疑是一匹黑马,谁用谁知道.WebServer集成nodejs对前端来说最为友 ...

  7. mongoDB介绍、安装、搭建简单的mongoDB服务器(一)

    相关网站 1. http://www.mongodb.org/ 官网,可以下载安装程序,和doc,和驱动等. 2. http://www.mongoing.com/ 国内官方网站,博客,问题谈论等  ...

  8. Nginx之使用nginx搭建简单的文件服务器

    使用nginx可以搭建简单文件服务器 安装nginx(不详述) 修改配置文件 /usr/local/nginx/conf/nginx.conf user root; /usr/local/nginx/ ...

  9. 基于python2【重要】怎么自行搭建简单的web服务器

    基本流程:1.需要的支持     1)python本身有SimpleHTTPServer     2)ForkStaticServer.py支持,该文件放在python7目录下     3)将希望共享 ...

随机推荐

  1. delphi如何加上spliter分割条,任意调整大小

    如题1:如何把一个panel分割成四个小的panle 2:也就是如何加上spliter,分割条,任意调整大小 3.如何有独立的handle使用多个总共5个为什么呢,你放4个panel 然后放split ...

  2. boost操作xml 5分钟官方教程

    Five Minute Tutorial This tutorial uses XML. Note that the library is not specifically bound to XML, ...

  3. POJ 2404 Jogging Trails

    Jogging Trails Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2122   Accepted: 849 Des ...

  4. LPCTSTR

    LPCTSTR类型: L表示long指针 这是为了兼容Windows 3.1等16位操作系统遗留下来的,在win32中以及其他的32位操作系统中, long指针和near指针及far修饰符都是为了兼容 ...

  5. 基于visual Studio2013解决面试题之0503取最大数字字符串

     题目

  6. jquery mobile切换页面的几种方法

    jquery mobile切换页面的几种方法 - 不厚道青蛙之焦油潭 - 博客频道 - CSDN.NET jquery mobile切换页面的几种方法 分类: phonegap html5 2012- ...

  7. Swift - 多层无缝循环滚动背景(SpriteKit游戏开发)

    在游戏开发中,比如跑酷游戏.我们需要实现背景的无限循环滚动,来营造运动的效果.除了单层的背景滚动,还有视差滚动. 视差滚动是指让多层背景以不同的速度移动,形成立体的效果,从而带来非常出色的视觉体验. ...

  8. jyphon 环境变量配置

    Jyphon 是基于java平台python 的一种实现 官网: http://www.jython.org/ 可以从官网下载 jyphon 安装 下载 jython Installer ,下载之后是 ...

  9. boost asio 异步实现tcp通讯

    ---恢复内容开始--- asioboost   目录(?)[-] 一前言 二实现思路 通讯包数据结构 连接对象 连接管理器 服务器端的实现 对象串行化   一.前言 boost asio可算是一个简 ...

  10. 使用perf生成Flame Graph(火焰图)

      具体的步骤参见这里: <flame graph:图形化perf call stack数据的小工具>   使用SystemTap脚本制作火焰图,内存较少时,分配存储采样的数组可能失败,需 ...