n2n-v2 局域网穿透指南

全平台 n2n 服务端搭建与客户端使用

Posted by yqsas on December 30, 2018

日前,由于组内一票人马派至外地,于是我们之前在公司同一局域网内开发的协作模式受到影响,导致 eureka 与 zuul 网关等公共服务无法连接各业务服务端点。最直接的解决方式就是再造局域网环境,之前接触过花生壳,也了解 udp 打洞的基本概念,于是想到可以两地远程连入一个自建局域网。

经过一番了解,了解到相关实现工具选择不少,如n2n、softether、frp、ZeroTier等。

鉴于 n2n 多平台、p2p 通信以及部署简单等特性,选择使用 n2n。最终实现效果是各地电脑 vpn 拨入指定 n2n 服务器,即可处于同一局域网,实现内网穿透效果。

Linux 安装

编译安装

  1. 环境

     yum install -y openssl-devel
     yum install -y cmake
     yum install -y net-tools
     yum install -y gcc gcc-c++
    
     git clone https://github.com/meyerd/n2n.git
    
     cd n2n/n2n_v2
    
  2. 编译

     mkdir build
     cd build
     cmake ..
     make && make install
    

服务端启动(supernode)

服务端运行,需要开放对应 UDP 端口 7654

supernode -l 7654

将服务端也作为客户端启动,加入到虚拟网络中。

edge -a 192.168.10.11 -c group -k password -l server-ip:port

客户端启动(edgenode)

edge -a 192.168.10.21 -c group -k password -l server-ip:port

查看状态

查看 edge 或者 supernode 进程

ps -ef | grep supernode

ps -ef | grep edge

macOS 安装

截止目前 Mojave 10.14.2 版本可用。

安装 n2n

brew install openssl
brew install cmake

git clone https://github.com/meyerd/n2n.git
cd n2n/n2n_v2
#编辑 n2n_v2/CMakeLists.txt 文件,找到 set(CMAKE_C_FLAGS 和 set(CMAKE_CXX_FLAGS 两行,在这两行的里面括号里面的部分,加入编译参数:
vi CMakeLists.txt

-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib

#在 n2n_v2 创建 build 文件夹,cmake .. 来创建 Makefile, 然后 make

sudo make install
sudo chmod -R 777 /usr/local/sbin

安装虚拟网卡

brew cask install tuntap

#查看是否有如下两个内核扩展
ls /Library/Extensions/tap.kext
ls /Library/Extensions/tun.kext
#校验内核扩展的参数
find /Library/Extensions/{tap,tun}.kext/ -type f | xargs shasum
#加载内核扩展
sudo /sbin/kextload /Library/Extensions/tap.kext
sudo /sbin/kextload /Library/Extensions/tun.kext

客户端启动

sudo edge -a 192.168.10.31 -c group -k password -l server-ip:port

Windows 安装

windows 版说明

n2n_v2 版本 windows 客户端需要自己编译,编译出来的 edge.exe 替换安装软件里的 edge2.exe 即可。

以下提供个人编译出的客户端程序:

  1. windows 版 n2n: n2n-gui 安装包
  2. 最新 windows 版编译 (2018-12-30):edge2

    编译环境 windows10-64 位,各位也可参考下文自行编译。

windows 版本编译

参考:P2P 网络-n2n 穿墙-全平台

过程:

  1. 安装 cmake
  2. 安装 Mingw
  3. 编译 exe 文件
  4. 重命名并替换软件安装中的 edg2.exe 文件

参考