概述
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和各种内网穿透的博客
直接下载对应机器的版本使用
将下载的好supernode
和edge
添加执行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 版直接替换就行了。
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
界面截图
参考:
http://supernode.ml/
https://www.moewah.com/archives/2904.html