n2n自建节点配置点对点传输

N2N.png

概述

n2n版本对应如下(三个版本独立运行,互不兼容):
v1 源码位置:https://github.com/meyerd/n2n,官方 v1 版本的微量bug修改;停止维护

v2 源码位置:https://github.com/ntop/n2n,官方 v2 版本。新的 n2n 速度更快(支持 aes 加密)。

v2s 源码位置:https://github.com/meyerd/n2n,一个德国网友维护的 v2分支。直连率及稳定性较高,我们叫它 v2s;停止维护
2. p2p+:表示是 2019-6-10 以后的 supernode,配合那之后的 edge,直连成功率与 V2s 相当 (仅局域网内不及)
3. autoip:使用 v2.7.0.r523,v2.7.0.r525,v2.9.0,能够让 supernode 给 edge 分配 n2n ip 。但 v2.9.0 与 v2 不再兼容,v3.0 即将出世

有大佬编译好的各个版本https://github.com/lucktu/n2n
来自好运博客http://www.lucktu.com/
一个专门介绍使用N2N和各种内网穿透的博客

直接下载对应机器的版本使用
将下载的好supernodeedge添加执行chmod +x权限移动至/usr/bin

本教程安装的是V2s版

1.安装必要运行库

apt-get install gcc g++ cmake make libssl-dev git
yum -y install gcc g++ cmake make libssl-dev git

2.下载编译源码

git clone https://github.com/meyerd/n2n.git
cd n2n/n2n_v2/
cmake CMakeLists.txt
make
make install

**方法2 **

mkdir build
cd build
cmake -build ./ ../
make

需要将编译好的执行文件移动至/usr/bin

3.Linux 交叉编译 Windows 版的 n2n

删掉之前的源码重新下载源码

git clone https://github.com/meyerd/n2n.git

打开目录下文件

vim cmake/CMakeToolchainFileMingw32.cmake
SET(CMAKE_C_COMPILER i686-mingw32-gcc)
SET(CMAKE_CXX_COMPILER i686-mingw32-g++)

改为

SET(CMAKE_C_COMPILER i686-w64-mingw32-gcc)
SET(CMAKE_CXX_COMPILER i686-w64-mingw32-g++)

编译

mkdir ~/n2n/n2n_v2/build
cd ~/n2n/n2n_v2/build
cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/CMakeToolchainFileMingw32.cmake --build ./ ../
make

4.使用

服务端

supernode -l 端口 -f

-f 后台运行

Linux 客户端(需要权限)

示例

edge -d n2n0 -a static:192.168.0.0 -s 255.255.255.0 -c 群组名 -k 密码 -l 节点公网地址:端口号 -r

V3.0版本使用改动

服务端直接 -p 端口就可以了

/usr/bin/supernode -p 端口 &

Linux 客户端

edge -d n2n0 -a static:192.168.X.X -c 群组名 -k 密码 -l 节点公网地址:端口号 -r -A5 &

edge 选项

常规参数:

-d tun网卡名称 | 指定本机的N2N网卡,如果本机存在多个Tap网卡,可以使用此参数自定义,或留空使程序自动搜寻
-a 获取IP的模式 | 如需自定义虚拟IP,使用 -a IP地址 来自定义虚拟IP,如需自动获取(需服务端支持),留空即可
-c 组名称 | 用于区分虚拟局域网
-k 组密码(密钥) | 用于虚拟局域网内传输的数据加密,留空则不加密
-s 掩码 | 默认可空
-l 服务端(supernode):端口 | N2N的服务端(中心节点)
-i 秒 | 设置NAT打孔间隔,默认:20
-L TTL值 | 当UDP NAT打孔通过服务端(中心节点)时注册包的TTL(默认为0,表示不设置)
-p 本机UDP端口 | 绑定本机指定的UDP端口,防止部分环境下对UDP限制影响N2N组网
-m MAC地址 | 设置N2N虚拟网卡的MAC地址,防止和虚拟网下的其他机器重复
-M MTU值 | N2N虚拟网卡设置MTU值,默认:1390
-D | 启用PMTU发现。PMTU发现可以减少碎片,但在不正确支持时会导致连接暂停
-r | 通过n2n社区启用数据包转发
-E | 接受多播MAC地址,默认:丢弃
-S | 不使用P2P连接,总是通过supernode中转(不推荐)
-v | 输出更加详细的日志
-t 端口 | 管理UDP端口(用于本机同时运行多个edge时)

加密相关:

-A1 | 关闭局域网内传输的数据加密
-A2 | 使用 twofish 加密算法加密传输的数据
-A3 | 使用 AES 加密算法加密传输的数据
-A4 | 使用 chacha20 加密算法加密传输的数据
-A5 | 使用 Speck-CTR 加密算法加密传输的数据
-H | 数据包报头完整加密

压缩相关:

-Z1 | 使用 LZO(1x) 压缩算法压缩传输的数据
-Z2 | 使用 ZSTD 压缩算法压缩传输的数据

一些示例

edge1  -d T1 -a 172.1.0.100 -c n2n -k test -l n2n.lucktu.com:10082 -br &   # 单独参数 r b 可以分开写,也可以合并在一起,下同
edge2  -d T2 -a 172.2.0.100 -c n2n -k test -l n2n.lucktu.com:10086 -EfrA &    # A加密速度快;新版取消了 b 参数;E增强局域网直连
edge2s -d T3 -a 172.3.0.100 -c n2n -k test -l n2n.lucktu.com:10088 -bfr -L 192.168.1.123 &     # 192.168.1.123 为本机真实局域网的IP
supernode1  -l 10082    &
supernode2  -l 10086 -f &
supernode2s -l 10088 -f &

Windows 客户端

市面上的 Windows 客户端有两个:一个是 n2nedgegui,另一个是 n2nguien,前者用的是 V2 版本,后者 V1 和 V2 版本,但这两个用的是官方旧版的内核,如果服务端用的是修正的版本,需要把上面编译好的 edge 替换客户端安装文件夹内的 edge 。

我这里使用的是 n2nguien ,客户端安装文件夹内 V2 版是用 edge2.exe 来命名的,所以替换 V2 版的时候把名字改为 edge2.exe ,V1 版直接替换就行了。
n2nguien.png

n2n 软件下载地址一,github.com :https://github.com/lucktu/n2n (总是最新的)

n2n 软件下载地址二,gitee.com :https://gitee.com/lucktu/n2n (适合国人下载,但更新不及时)
n2n 软件下载地址三,临时下载目录:http://n2n.lucktu.com/n2n (方便下载,但不保证随时能用)

Android客户端

switch-iot/hin2n: n2n support for mobiles(n2n手机版) (github.com)

Openwrt插件

自己使用在软路由上的,由于下载的Openwrt固件都没有N2N插件,就自己编译一些。
下载地址:X86-64
armv7 适用arm32位机器
armv8适用 N1等arm64位机器

先安装这两个
n2n-supernode_2.8.0_git-99e56e9f3c34c49eeb297971d41150b433489120-3_x86_64.ipk
n2n-edge_2.8.0_git-99e56e9f3c34c49eeb297971d41150b433489120-3_x86_64.ipk
在安装
luci-app-n2n_v2_2.8.0-2_all.ipk
luci-i18n-n2n_v2-zh-cn_2.8.0-2_all.ipk
安装命令

opkg install xxx.ipk

界面截图
N2Nv2.png

参考:
http://supernode.ml/
https://www.moewah.com/archives/2904.html

# n2n 

本文由:星际难民
实践,测试,整理发布.如需转载请注明地址 本文标题:n2n自建节点配置点对点传输
地址:https://530503.xyz/articles/2021/01/11/1610357767246.html

评论

  1. 感谢博主编译的openwrt版本,我等伸手党省得自己编译了?

取消