内网穿透工具之n2n

0    48    1

👉 本文共约7920个字,系统预计阅读时间或需30分钟。

简介

N2N 是一款开源的P2P VPN软件,其作者是著名的开源网管软件ntop的作者Luca Deri。

N2N 是一个双层架构的VPN,它让用户可以在网络层上开发P2P应用的典型功能,而不是在应用层上开发。这意味着用户可以获取本地IP一样的可见度(比如说,同一个n2n网络内的两台PC机可以相互ping通),并且可以通过n2n虚拟网内的IP地址相互访问,而不必关心当前所属的物理网络地址。可以这样说,OpenVPN是把SSL从应用层转移到网络层实现(比如说实现https协议),而n2n则是把P2P的实现从应用层转移到网络层。

https://github.com/ntop/n2n

https://www.ntop.org/products/n2n/

N2N设计的主要功能

  • N2N 是基于P2P协议之上的两个私有网络间的加密层

  • 加密是在edge节点上执行的,使用开放的协议,用户自己定义密钥:你自己控制自己的安全,不需要委托给第三方公司

  • 每个n2n用户可以同时隶属于多个网络

  • 有NAT和穿越防火墙的功能,即使n2n节点位于私网中,也能够访问,防火墙不再是在IP 层的直接沟通和交流的障碍

  • N2N 网络不是独立的,它是能够跨越N2N和非N2N网络路由的

N2N架构组件

  • Edge 节点:用户PC机上安装的用于建立n2n网络的软件。几乎每个edge节点都会建立一个tun/tap设备,作为接入n2n网络的入口。

  • Supernode 超级节点:它在edge节点间建立握手,或为位于防火墙之后的节点中转数据。它的基础作用是注册节点的网络路径,并为不能直通的节点做路由,能够直通的节点间通信,是P2P的。

Edge 节点间通过虚拟的tap网卡交互。每个tap网卡都是一个n2n edge节点。每台PC机可以有多个tap网卡,所以,在n2n网络中,同一台PC机可以属于多个网络。

其中super node 提供场所,让两个位于NAT/防火墙之后的edge node进行会面,一旦双方完成首次握手,剩下的数据流就之发生在两个edge node之间,如果有一方的NAT属于对称型(symmetrical),super node则还需继续为双方提供数据包的转发;edge node负责数据流的加解密,原理很简单。

与传统的v+p+n的优点

大部分v+p+n,都是通过服务器中转,而n2n是通过udp协议,在两边edge的NAT情况比较好的情况下,会建立两个edge之间的 直接连接,一个北京和一个重庆的两个edge服务器,如果直连成功,之间的下载速度可以达到 n MB/s;当网络条件比较恶劣的时候,数据会从supernode中转,速度就靠到supernode的速度决定;

官网

n2n is a light VPN software which makes it easy to create virtual networks bypassing intermediate firewalls.

In order to start using n2n, two elements are required:

  • A supernode: it allows edge nodes to announce and discover other nodes. It must have a port publicly accessible on internet.
  • edge nodes: the nodes which will be a part of the virtual networks

A virtual network shared between multiple edge nodes in n2n is called a community. A single supernode can relay multiple communities and a single computer can be part of multiple communities at the same time. An encryption key can be used by the edge nodes to encrypt the packets within their community.

n2n tries to establish a direct peer-to-peer connection via udp between the edge nodes when possible. When this is not possible (usually due to special NAT devices), the supernode is also used to relay the packets.

IMPORTANT It is generally recommended to use the latest stable release . Please note that the current dev branch usually is not guaranteed to be backward compatible neither with the latest stable release nor with previous dev states. On the other hand, if you dare to try the bleeding edge features, you are encouraged to compile from dev – just keep track of sometimes rapidly occuring changes. Feedback in the Issues section is appreciated.

N2N网络构架图

img

其中super node提供场所,让两个位于NAT/防火墙之后的edge node进行会面,一旦双方完成首次握手,剩下的数据流就之发生在两个edge node之间,如果有一方的NAT属于对称型(symmetrical),super node则还需继续为双方提供数据包的转发;edge node负责数据流的加解密,原理很简单。

对于一个VPN而言,主要涉及封装和加解密两个步骤,edge node使用UDP协议进行封装,目的是为了更好的兼容防火墙的策略,因为很多防火墙禁用了非TCP/UDP协议禁用。加密算法则采用了twofish,开源、简便,处理速度快。

N2N安装

地址

通过网友的测试,n2n_v2s直连概率比较高,所以本文暂时只介绍n2n_v2s的安装及使用方法

安装方法

详见 https://github.com/meyerd/n2n/wiki

常用参数说明:

-d:虚拟网卡名称

-a:n2n网卡的ip地址,即本机的n2n的ip

-c:n2n组,只有相同组的edge之间才能进行通讯

-u:如果不想用root来运行edge,则可指定本机账号的uid,windows下可忽略

-g:如果不想用root来运行edge,则可指定本机账号的groupid,windows下可忽略

-k:edge的加密密码

-l:supernode的ip和端口

-m:n2n虚拟网卡的MAC地址

-r:运行edge进行数据转发

-L:本机的内网地址,可以帮助同一个内网之间的通讯为直连,目前是v2s版本特有参数,官方版本暂无

-b:解析域名对应的ip,适用于supernode的ip使用域名来进行连接

在内网的另外一台机器上安装edge_v2s,启动的参数除了-u、-g、-m、-L与另一个edge参数不同外,其他参数要一致,如 edge_v2s -d n2nedge_v2s -a 172.10.2.210 -c community -u 500 -g 500 -k passwod -l 222.222.222.222:10088 -m 8B:2A:76:3F:C0:7B -r -L 192.168.1.110

附一个MAC地址在线生成: http://www.99cankao.com/digital-computation/mac-address-generator.php

edge连接测试

在多个edge之间相互ping看是否能通,然后通过n2n的内网ip访问下载服务,查看下载速度;

通讯速度和网络运营商的关系

目前来看,电信+电信直连概率大,速度快;最差的是移动;

常见问题

  • 怎么知道自己的 edge 是否已经与中心节点 supernode 连接成功了?

针对 N2N_V2 每两分钟显示一条,V2s 则每 25s 一条下面的信息
关键字:Rx REGISTER_SUPER_ACK myMAC

  • 如果中心节点 supernode 失效了会是什么样子呢?

针对 edge_v1,则每分钟显示

针对 edge_v2,则每 40 秒显示,针对 edge_v2s,则每 20 秒显示

  • 如果 edge 与 supernode 的版本对应错了,会是什么样子的?

edge_v1 试图与 supernode_v2 或 v2s 连接(每分钟出现一条下面的信息)

edge_v2 或 v2s 试图与 supernode_v1 连接时,反复出现如下信息(V2 每 40 秒,v2s 每 20 秒)

edge_v2 试图与 supernode_v2s(v2s 试图与 V2)连接时,反复出现如下信息(V2 每 10 秒,v2s 每 5 秒)

3.安装N2N软件

#将N2N软件上传到阿里云服务器

supernode则是服务器超级节点,用法也是很简单的,首先看看edge的help:

具体上面已经介绍的很清楚了,现在实战怎么开启,一句话:

  1. sudo edge -d edge0 -a xx.xx.xx.xx -c username -u 1000 -g 1000 -M 1200 -k password -l xx.xx.xx.xx:xxxx -m 41:03:05:00:10:01 > /dev/null &

现在简单介绍下上面这条命令的含义, -d edge0就是创建一个虚拟的网卡设备,edge0就是它的名称, -c -k就是用户名和密码, -a虚拟的IP地址,随便取,只要你的所有设备在一个网段即可,然后 -u -g这个是设置UID和GID 也可以不设置, -m 虚拟mac地址,设置了有好处,只要不相同即可,不设置回随机分配,最后有一个重要的地方, -M 1200,这里是设置MTU,至于MTU是什么,可以自行百度哈,没设置之前,ssh,http等协议会卡住死活连不上,设置后就正常了,需要比1400小,安卓上不用设置,这样设置以后就可以ping通你的其他机器了,只要它可以访问到超级节点 -l xx.xx.xx.xx:xxxx

现在介绍 supernode,这个是创建超级节点,root权限都不需要,直接 supernode -l 端口号,就行了。网上有免费的超级节点,不过都很慢,很卡,很蛋疼,建议自己买个阿里的vps,又便宜,100M宽带一个月32块钱,那速度,只有一个字,飞快,视频在线传输都没问题,我上班都可以通过n2n查看家里的摄像头...

“ -d< 接口名 > ”选项指定了由 edge 命令创建的 TAP 接口的名字。

“ -a<IP 地址 > ”选项(静态地)指定了分配给 TAP 接口的 VPN 的 IP 地址。如果你想要使用 DHCP ,你需要在其中一台边缘节点上配置一台 DHCP 服务器,然后使用“ -a dhcp:0.0.0.0 ”选项来代替。

“ -c< 组名 > ”选项指定了 VPN 组的名字(最大长度为 16 个字节)。这个选项可以被用来在同样一组节点中创建多个 VPN 。

“ -u ”和“ -g ”选项被用来在创建一个 TAP 接口后降权放弃 root 权限。 edge 守护进程将会作为指定的用户 / 组 ID 运行。

“ -k< 密钥 > ”选项指定了一个由 twofish 加密的密钥来使用。如果你想要将密钥从命令行中隐藏,你可以使用 N2N_KEY 环境变量。

“ -l<IP 地址 : 端口 > ”选项指定了超级节点的监听 IP 地址和端口号。为了冗余,你可以指定最多两个不同的超级节点(比如 -l < 超级节点 A> -l < 超级节点 B> )。

“ -m ”给 TAP 接口分配了一个静态的 MAC 地址。不使用这个参数的话, edge 命令将会随机生成一个 MAC 地址。事实上,为一个 VPN 接口强制指定一个静态的 MAC 地址是被强烈推荐的做法。否则,比如当你在一个节点上重启了 edge 守护程序的时候,其它节点的 ARP 缓存将会由于新生成的 MAC 地址而遭到污染,它们将不能向这个节点发送数据,直到被污染的 ARP 记录被消除。

在使用过程中不免遇到一些奇葩的事,调试是个关键,开启调试模式,可以使用参数“ -v -f ”。记住先 kill 掉之前的 edge 或 supernode 进程再进行调试以免冲突。

好了,linux下面的就这样,客户端就是那一句话,很方便,开机自动连接,超级节点自己搭建一个,其他机器都可以用这个节点。

Windows安装

下面介绍win下面怎么搭建n2n:win下面其实也很简单,下个软件设置下就OK了

地址是 http://www.vpnhosting.cz/n2nguien.exe 提供了一个安装包,里面包含了V1和V2版本,请选择V1版本

img

单击 advanced按键,勾选Enable packet forwarding through n2n community,然后其他的自己看,和Linux下的设置一样

img

上面的图借鉴网上的,因为我没在windows下,但是我用的和这个图一样,这里选择V1版本。

把桌面图标拖到菜单启动就可以开机启动了,不要担心,不占内存不占cpu不占网速.....

调试

使用过程中不免遇到一些奇葩的事,调试是个关键,一些大的坑已经为你们踩过了,剩下的基本没啥问题。

记住先kill掉之前的edge 或 supernode进程再进行调试以免冲突。

附加参数即可: -v -f

edge

supernode

常见问题解决方法

无法连接服务器时会重复提示: WARNING:Supernode not responding – moving to 0 of 1

成功连接: Rx REGISTER_SUPER_ACK myMAC=

1.无法ping通

如果出现一方可以ping通,另一方无法ping通,则很有可能为对方开启了防火墙,关闭防火墙即可

2.无法连接到服务器

检查客户端填写的服务器端口是否正确

检查服务器端口是否在iptables等防火墙中放行

检查客户端是否以管理员权限运行

本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!
  1. 客户端不断重复ERROR等信息

若能正常联机,则可以忽略错误提示

怎么知道自己的N2N处于正常工作状态呢?

针对 N2N_V1,进入 状态 -- 系统日志,如果能看到这样开头的信息,每分钟一条,就算与服务器连接好啦!

没有连接成功可能显示的是这样的信息(反正不是上面的信息,就没有成功)

对于 N2N_V2,同样的路径下,看到的是这样的开头,每2分钟一次,也算设置完全正确啦:

没有连接成功可能显示的信息

Android:

下面该介绍安卓了:安卓和win一样,百度上面搜n2n安卓客户端,然后下载安装,注意,需要root权限

下载地址:

  1. http://download.csdn.net/detail/leekwen/8604177

设置好了点击start,出现 RX什么ACK 就表示连通了,可以用超级终端ping通,或者ssh连接

img

其实安卓上有arm linux,不过不好打字,我现在也没怎么用,在arm linux里面你可以下载更新和pc一样,还可以vnc进桌面。

好了,安卓版就说到这里了。

OpenWrt:

下面介绍OpenWrt的n2n配置,这些都是 很有价值的,具体价值自己去想

首先安装n2n,可以编译的时候编译进去。 make menuconfig里面找到 network->vpn->n2n选中即可,或者编辑.config,搜n2n改成=y

或者在板子里面 opkg update && opkg install n2n即可

下面看看n2n的配置文件:

[html] view plain copy

  1. config edge
  2. option community 'username'
  3. option key 'password'
  4. option port 'port'
  5. option supernode 'xx.xx.xx.xx'
  6. option ipaddr 'xx.xx.xx.xx'
  7. option route '1'

好,现在分析一下配置文件, community就是用户名, key就是密码对应edge命令的-c -k, supernode是超级节点的ip地址, port是端口,对应edge的-l,然后 ipaddr是虚拟ip地址,对应-a, route对应-r参数,就是设置是否通过n2n转发,然后我们来看看openwrt下面n2n的服务程序:

上面是启动的主要函数:首先是读取config 这个type,判断是edge还是supernode如果是supernode则只读取port ,运行命令 supernode -l port,如果type是edge,则读取....等配置文件,然后

  1. edge -f $args -a $ipaddr -c $community -k $key -l ${supernode}:${port}

上面的 -f是作为一个服务启动,写入syslog

好了这样配置好了就可以访问到路由器的,只要路由器连了外网,就可以随时访问进去

: 经过长期使用,发现一个不美好的问题,如果 长时间运行的话,会导致不间断 不通不稳定的情况,所以建议每天自动 重启一下edge程序

n2n的介绍到此 结束,很好很强大的一个功能,基本上人手必备神器, 小巧,开源,迅速,免费,无限穿透!

安装多个Tap-Windows网络适配器

已安装Tap适配器的朋友

已安装过Tap适配器,现在想要安装第二个,可以直接安装,Windows已经在第一次安装的时候保存了需要的驱动,无需再次下载

Win+R 运行 hdwwiz.exe

img

下一步 — 安装我手动从列表选择的硬件 — 网络适配器 — 列表界面 — 找到 TAP-Windows Provider V9

img

下一步安装即可。如需安装第三个Tap适配器,重复该步骤即可。

未安装过Tap适配器的朋友

下载驱动压缩包 下载地址 ,解压(压缩包内i386对应32位系统,amd64对应64位系统)

p.s 如果只需要装一个TAP-Windows网络适配器,直接下载安装包(exe),一路下一步即可, 安装包下载地址

命令行安装

管理员权限运行CMD(或者PowerShell)

img

提示 “Drivers installed successfully.”

第一个安装完成,需要安装第二个、第三个……还是执行上一步的命令

img

img

图形界面安装

Win+R 运行 hdwwiz.exe

img

下一步 — 安装我手动从列表选择的硬件 — 网络适配器 — 列表界面,选择 从磁盘安装

img

继续安装即可。

如果要安装更多的驱动,重复该步骤。

其实如果已经安装过一次tap网卡的情况下,在我的电脑右键,进入管理-系统工具-设备管理器那一栏里后,点击左上角的操作-添加过时硬件-下一步-安装我手动从列表里选择的硬件-网络适配器-TAP V9 也可以装多个驱动。

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

14 − 6 =

 

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部