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. 终于实现samba可写不可删除

    通过szxsztszk的提示 今天终于实现了linux可写不可删除的要求. 同时运用了POSIX ACL 我们公司的要求是这样的[color=Red](我只做出我公司要求的步骤,不同的要求,稍加改正即 ...

  2. VS2008+Qt 项目目录

    1.项目开发环境:VS2008,QT4.7 2.项目的目录: 1)PETCT是解决方案名字 2)Bin目录存放所有动态链接库和执行档,包括自己的产出和第三方库,区分Release和Debug两个版本. ...

  3. 公司简介 - CCDI悉地国际-工程实践专业服务的引领者

    公司简介 - CCDI悉地国际-工程实践专业服务的引领者 关于悉地国际         CCDI悉地国际(以下简称"CCDI")创立于1994年,是在城市建设和开发领域从事综合专业 ...

  4. Java学习笔记九(泛型)

    1.介绍 所谓的泛型就是将类型作为一种參数来传递.有了泛型后类型不再是一成不变的.能够通过泛型參数来指定. 能够提供程序开发的灵活性. 2.泛型类或接口的使用 泛型类声明时.与普通类没有太大的差别,仅 ...

  5. Effective C++_笔记_条款02_尽量以const、enum、inline替换#define

    (整理自Effctive C++,转载请注明.整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/) 这个条款或许改为“宁可以编译器替换预处理器”比较好,因为或许#d ...

  6. Eclipse ADT 更换主题

    如果Eclipse 版本3.6以上 在 Help→Eclipse Marketplace 搜索 Theme 之后安装即可 如果Eclipse版本3.5 一下, 通过地址安装插件: http://ecl ...

  7. WM_DRAWITEM与DrawItem()的讨论(自绘)

    http://blog.csdn.net/FlowShell/archive/2009/10/10/4648800.aspx 我在学习中经常遇到要重写DrawItem()的情况,但又有一个WM_DRA ...

  8. delphi实现穿XP防火墙

    procedure TForm1.Button1Click(Sender: TObject);var   FwMgr,Profile,FwApp: variant;begin   FwMgr := C ...

  9. 中文分词算法之最大正向匹配算法(Python版)

    最大匹配算法是自然语言处理中的中文匹配算法中最基础的算法,分为正向和逆向,原理都是一样的. 正向最大匹配算法,故名思意,从左向右扫描寻找词的最大匹配. 首先我们可以规定一个词的最大长度,每次扫描的时候 ...

  10. Mahout-Pearson correlation的实现

    计算公式: 并通过以下代码对Mahout in Action的结果进行了验证: 代码例如以下: ` package com.example.mahout; public class TestColl ...