背景
首先说一下这个N2N软件的背景,这个是培训oracle的时候,安装rac需要多块网卡,云服务器不像本地服务器或者虚拟机那边方便,可以随便随便添加网口,使用到N2N这款软件模拟出多块网卡;
其实N2N软件的主要功能是内网穿透,就是将服务器的网段可以和本地环境打穿到一个网段里;这个软件如果用在服务器上还是挺可怕的,类似windows下的teamviewer,类似linux下的ssh隧道模式;只要服务器可以上外网(严格说是连接到supermode),就可以打通,慎用!
概述
N2N 是一款开源的P2P VPN 软件,其作者是著名的开源网管软件ntop的作者Luca Deri。
N2N 是一个双层架构的VPN ,它让用户可以在网络层上开发P2P应用的典型功能,而不是在应用层上开发。这意味着用户可以获取本地IP一样的可见度(比如说,同一个n2n网络内的两台PC机可以相互ping通),并且可以通过n2n虚拟网内的IP地址相互访问,而不必关心当前所属的物理网络地址。可以这样说,OpenVPN是把SSL从应用层转移到网络层实现(比如说实现https协议),而n2n则是把P2P的实现从应用层转移到网络层。
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机可以属于多个网络。
搭建N2N环境
首先我们需要一个公网IP地址,一个可以访问的公网端口(UDP), 我这里刚好有一个华为云的服务器可以用
IP: 114.116.xx.xx
Port: 6666
安装软件
1 | yum install -y subversion gcc-c++ openssl-devel git cmake |
搭建中心服务器(supermode节点)
1 | #创建一个端口为6666的supermode服务,用于建立握手 |
1 | #新建一个虚拟设备edge0,用于测试 |
创建客户端(egdg节点)
1 | #新建一个虚拟设备edge0,用于测试 |
参数:
1 | -d <接口名> 选项指定了由 edge 命令创建的 TAP 接口的名字; 创建一个虚拟的网卡设备,edge0 就是它的名称 |
PS:如果想让新建的虚拟网卡开机后依然生效,需要将以上创建命令写入到/etc/rc.local 文件中,另外centos7操作系统需要chmod +x /etc/rc.d/rc.local