N2N点对点内网穿透工具

n2n 点对点内网穿透工具

该工具可以用来进行内网穿透,但更准确地来说是用来将多个不同位置和网络的主机组建到一个局域网

与其他的内网穿透工具不同

  • 设置方式较其他内网穿透工具繁琐,尤其是在windows和mac上
  • 可多个不同的设备组建到不同的局域网中,可操作性更强,例如局域网游戏、搭建测试环境等
  • 采用点对点的方式,仅需要超级节点建立连接,不受服务端带宽影响

GitHub - ntop/n2n: Peer-to-peer VPN

一、搭建超级节点


超级节点用于给边缘节点建立连接,将不同的设备组建到局域网中

1、开放服务器端口

在云服务器上开放一个端口,通过安全组策略添加,放行tcp和UDP端口。该端口为自定义端口,无需和图中一样

img

同样、若服务器开启了防火墙,也要在防火墙上放行端口

2、下载程序源码

使用Git命令从Github拉取n2n。也可以先下载到本地在上传到远程服务器上

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

img

3、编译安装

编译使用autogen.sh+configure+make进行代码编译

首先执行以下代码,该步骤用于生成 configure 脚本文件

./autogen.sh

img

然后执行./configure 。检查系统环境,配置编译选项(并生成 Makefile 文件)

./configure

img

运行 make && make install命令,执行代码的构建操作并安装编译生成的文件

make && make install

img

4、完成安装

安装完成之后可使用supernode -hsupernode —help查看帮助

img

5、修改配置文件并启动

编辑配置文件 cat supernode.conf 。其中-p参数表示开放的超级节点端口 -t表示管理端口 --management-password表示管理端口的密码(然而还不知道管理端口怎么连接)

-p=61234
-t=61233
--management-password='6666666'

使用如下命令启动supernode 并查看详细的日志,对于进行超级节点的测试很有帮助

supernode supernode.conf -f -v

img

二、边缘节点-Windows 安装

1、下载n2n客户端

Release 1.4-en-us · happynclient/happynwindows

2、进行配置并连接

填写服务器ip、端口、密钥、社区

  • 服务器IP:即为超级节点的IP地址
  • 端口:为超级节点配置文件中指定的-p参数
  • 社区:类似于房间,同一个社区的主机将处于一个局域网中
  • 密钥:相同社区之间必须使用相同的密钥

img

点击start后,软件Log output中会输出相关的信息

同时在服务端可以看到新的社区已经建立,并且创建了一个边缘节点

img

三、边缘节点-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

img

4、验证安装

完成后使用edge命令验证安装是否成功

img

5、开启边缘节点

执行命令,若开启防火墙的话则需要选择允许传入链接

sudo edge -c lrain -k 0987654321 -l 39.103.146.246:61234 -f

img

可在超级节点上查看到新的边缘节点加入

img

四、验证社区

在windows上开启端口,开启tomcat服务

img

在mac上访问Windows的IP地址加上对应端口

img

可以看到成功的访问到了windows主机上开启的服务

五、附录-参数解释

服务端附加参数

-p 端口 | Supernode监听端口,默认 7654
-F federation名称 | supernode federation名称,默认为 *Federation
-l 主机:端口 | 和 -F 配合,已知的一台Supernode地址和端口
-M | 关闭非用户名密码认证的群组的MACIP地址欺骗保护功能
-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集群中其他SupernodeIP端口
 -m <mac>          | 固定设置SupernodeMAC地址,比如:
                   | '-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)

参考链接

macos Catalina 10.15 安装n2n

GitHub - ntop/n2n: Peer-to-peer VPN

N2N V3 安装配置解决方案_n2n安装_◎天启疯车℡的博客-CSDN博客

n2n 安装及使用

Happyn MacOS上客户端安装使用指南 - happyn交流论坛

本文作者:Lrain.*

本文链接:https://www.cnblogs.com/lrain/p/17285368.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Lrain.*  阅读(1265)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起