N2N点对点内网穿透工具
n2n 点对点内网穿透工具
该工具可以用来进行内网穿透,但更准确地来说是用来将多个不同位置和网络的主机
组建到一个局域网
中
与其他的内网穿透工具不同
- 设置方式较其他内网穿透工具繁琐,尤其是在windows和mac上
- 可多个不同的设备组建到不同的局域网中,可操作性更强,例如局域网游戏、搭建测试环境等
- 采用点对点的方式,仅需要超级节点建立连接,不受服务端带宽影响
GitHub - ntop/n2n: Peer-to-peer VPN
一、搭建超级节点
超级节点用于给边缘节点建立连接,将不同的设备组建到局域网中
1、开放服务器端口
在云服务器上开放一个端口,通过安全组策略添加,放行tcp和UDP端口。该端口为自定义端口,无需和图中一样
同样、若服务器开启了防火墙,也要在防火墙上放行端口
2、下载程序源码
使用Git命令从Github拉取n2n。也可以先下载到本地在上传到远程服务器上
git clone https://github.com/ntop/n2n.git
3、编译安装
编译使用autogen.sh+configure+make
进行代码编译
首先执行以下代码,该步骤用于生成 configure
脚本文件
./autogen.sh
然后执行./configure
。检查系统环境,配置编译选项(并生成 Makefile 文件)
./configure
运行 make && make install
命令,执行代码的构建操作并安装编译生成的文件
make && make install
4、完成安装
安装完成之后可使用supernode -h
或supernode —help
查看帮助
5、修改配置文件并启动
编辑配置文件 cat supernode.conf
。其中-p参数表示开放的超级节点端口 -t表示管理端口 --management-password表示管理端口的密码(然而还不知道管理端口怎么连接)
-p=61234
-t=61233
--management-password='6666666'
使用如下命令启动supernode 并查看详细的日志,对于进行超级节点的测试很有帮助
supernode supernode.conf -f -v
二、边缘节点-Windows 安装
1、下载n2n客户端
Release 1.4-en-us · happynclient/happynwindows
2、进行配置并连接
填写服务器ip、端口、密钥、社区
- 服务器IP:即为超级节点的IP地址
- 端口:为超级节点配置文件中指定的-p参数
- 社区:类似于房间,同一个社区的主机将处于一个局域网中
- 密钥:相同社区之间必须使用相同的密钥
点击start后,软件Log output中会输出相关的信息
同时在服务端可以看到新的社区已经建立,并且创建了一个边缘节点
三、边缘节点-MACOS
1、下载源代码
git clone https://github.com/ntop/n2n.git
2、安装所需依赖
安装依赖
// 设置以下的源来安装tuntap
brew tap happynclient/taps
// 安装过程中,会提示输入密码。需要“打开系统偏好设置”中的“安全性与隐私”,允许加载,可能会提示重启,在重启之后,重新执行以下命令进行安装
brew install tuntap --cask
brew install openssl
brew install cmake
3、编译n2n
# 在n2n目录中创建build目录
mkdir build
cd build
cmake -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl ../
# macos Catalina 10.15 make install 会出现错误 file cannot create directory: /usr/share/man8. Maybe need administrative
# 需要手动将cmake_install.cmake 文件中的/usr/share/替换为/usr/local/share/
sudo make install
sudo chmod -R 777 /usr/local/sbin
# 添加环境变量
export PATH=$PATH:/usr/local/sbin
4、验证安装
完成后使用edge命令验证安装是否成功
5、开启边缘节点
执行命令,若开启防火墙的话则需要选择允许传入链接
sudo edge -c lrain -k 0987654321 -l 39.103.146.246:61234 -f
可在超级节点上查看到新的边缘节点加入
四、验证社区
在windows上开启端口,开启tomcat服务
在mac上访问Windows的IP地址加上对应端口
可以看到成功的访问到了windows主机上开启的服务
五、附录-参数解释
服务端附加参数
-p 端口 | Supernode监听端口,默认 7654
-F federation名称 | supernode federation名称,默认为 *Federation
-l 主机:端口 | 和 -F 配合,已知的一台Supernode地址和端口
-M | 关闭非用户名密码认证的群组的MAC和IP地址欺骗保护功能
-V 文本 | 自定义字符串(最长19位),用于在管理输出日志中展示
-c 组名称配置文件路径 | 该配置文件中包含允许使用的组名称
-a IP段 | 用于自动分配IP,格式如 -a 192.168.0.0-192.168.255.0/24
-t 端口 | 用于管理supernode
--management_password 文本 | 管理端的密码
-v | 输出更多日志
一般用法: supernode <config file> (see supernode.conf)
或 supernode [optional parameters, at least one]
底层网络连接的选项
---------------------------------------------
-p <local port> | 固定设置一个UDP端口,默认为7654
-F <fed name> | 设置Federation集群名,默认为
| '*Federation'
-l <host:port> | Federation集群中其他Supernode的IP端口
-m <mac> | 固定设置Supernode的MAC地址,比如:
| '-m 10:20:30:40:50:60', 如不使用该参数,则随机MAC
-M | 关闭对于没有使用Username-Passowrd认证的连接的MAC-IP保护
-V <version text> | 自定义一个19字符以内的Supernode版本名称字符串(备注),会在Edge的管理端口显示
虚拟网卡和网络配置
--------------------------------------------
-c <path> | 允许的Community社区名称列表
-a <net-net/n> | 使用Supernode自动分配IP时的分配子网范围, 如:
| '-a 192.168.0.0-192.168.255.0/24',
| 默认为 '10.128.255.0-10.255.255.0/24'
LOCAL OPTIONS
-------------
-f | 不要作为守护进程,在前台运行(用于测试和debug)
-t <port> | 设置管理端口,尤其是在多个supernode运行在一台机器时,默认为5645
--management_... | 管理端口访问密码,默认为'n2n'
...password <pw> |
-v | 输出详细日志
-u <UID> | 当非特权用户运行时使用的数字用户ID
-g <GID> | 当非特权用户运行时使用的数字用户ID
从技术上讲,所有参数都是可选的,但若要运行Supernode
则需要至少一个参数才能运行,例如。-v或-f,否则将弹出简短的帮助文本
-h 显示所有参数
--help 给出详细的参数说明
man n2n、edge和superndode的文件更深入的信息
客户端命令参数
$ edge
Welcome to n2n v. for Darwin-19.6.0
Built on Jan 30 2021 16:55:19
Copyright 2007-2020 - ntop.org and contributors
edge <config file> (see edge.conf)
or
edge -a [static:|dhcp:]<tun IP address> -c <community> [-k <encrypt key>]
[-s <netmask>] [-u <uid> -g <gid>][-f][-n cidr:gateway] [-m <MAC address>] -l <supernode host:port>
[-p <local port>] [-M <mtu>] [-r] [-E] [-v] [-i <reg_interval>] [-L <reg_ttl>] [-t <mgmt port>] [-A[<cipher>]] [-H] [-z[<compression algo>]] [-h]
-a <mode:address> | n2n网卡的ip地址,即本机的n2n的ip。直接填写IP或者使用 DHCP '-r -a dhcp:0.0.0.0'
-c <community> | n2n组,只有相同组的edge之间才能进行通讯
-k <encrypt key> | edge的加密密码
-s <netmask> | 子网掩码 可选 (255.255.255.0).
-l <supernode host:port> | supernode的ip和端口
-i <reg_interval> | 注册时间间隔,用于NAT打洞(默认为20秒)
-L <reg_ttl> | 当通过超级节点UDP NAT打洞时,注册数据包的TTL(默认0不设置)
-p <local port> | 固定本地UDP端口
-u <UID> | 如果不想用root来运行edge,则可指定本机账号的uid,windows下可忽略
-g <GID> | 如果不想用root来运行edge,则可指定本机账号的groupid,windows下可忽略
-f | 带-f时前台运行,不添加-f 参数时作为守护进程运行
-m <MAC address> | n2n虚拟网卡的MAC地址,默认随机设置
| eg. -m 01:02:03:04:05:06
-M <mtu> | MTU 值,默认1290
-r | 启用数据转发功能,当需要访问该设备的局域网时需要设置
-A1 | 禁用载荷加密。不能与key 同时使用(默认为Twofish)。
-A2 ... -A5 or -A | 选择有效载荷加密的密码,需要一个密钥:-A2 = Twofish(默认),
| -A3 or -A (deprecated) = AES-CBC, -A5 = Speck-CTR.
-H | Enable full header encryption. Requires supernode with fixed community.
-z1 ... -z2 or -z | Enable compression for outgoing data packets: -z1 or -z = lzo1x (default=disabled).
-E | 接受多播MAC地址(默认=drop)
-S | 不要连接P2P ,总是使用超级节点转发数据
-n <cidr:gateway> | 通过gw路由IPv4网络。使用0.0.0.0/0作为默认gw。可多次设置。
-v | 详细日志
-t <port> | 管理UDP端口(用于机器上的多个edges)。
环境变量:
N2N_KEY | 加密密钥(ASCII)
参考链接
GitHub - ntop/n2n: Peer-to-peer VPN
本文作者:Lrain.*
本文链接:https://www.cnblogs.com/lrain/p/17285368.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步