N2N 的编译使用

12 min read

简介

n2n是一个P2P(peer to peer)的网络工具。与我们之前介绍过的ngrok不同,n2n不是简单的将端口暴露到具有公有ip的服务器上,而是存在一个supernode,supernode的作用是帮助client完成点到点的连接,完成连接之后客户机相当于处在同一个局域网内。

n2n项目页面:https://github.com/ntop/n2n

服务端

// 安装openssl、cmake、git、gcc、net-

yum install -y openssl-devel
yum install -y cmake
yum install -y net-tools
yum install -y git
yum install -y gcc gcc-c++

// 拉取源码
git clone https://github.com/meyerd/n2n.git
cd n2n/n2n_v2

// 编译
mkdir build
cd build
cmake ..
make && make install

// supernode(服务端运行)

supernode -l 5000

// 加入网络

edge -a 10.0.0.10 -c edge0 -k wss -l 150.0.0.1:5000

命令行参数

“-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 记录被消除。

MAC 客户端

  1. 允许系统从位置来源安装软件

    sudo spctl --master-disable
  2. 安装CMake、OpenSSL:

    brew install openssl
    brew install cmake
  3. 安装虚拟网卡tuntap

    brew tap homebrew/cask
    brew cask install tuntap
  4. 下载N2N源代码

    git clone https://github.com/ntop/n2n.git
  5. 安装N2N

    ./autogen.sh
    ./configure
    make
    sudo make install