N2N服务端的几种验证方式
有一些朋友自建的N2N服务端(supernode),又不想服务端被公开连接,可以尝试以下几种方法
系统自带防火墙
这里说的防火墙可以是firewalld\ufw\iptables等,仅允许指定的IP访问服务端
但这个方法比较暴力,而且现在的家庭宽带大都是动态IP,不具有普适性
组名称白名单(community.list)
supernode支持启动时加载一个包含虚拟局域网小组名称的文件列表(记为community.list),格式为
#允许连接到supernode的组名称列表,一行一个,例如
bugxia
wenming6
#同时也支持正则形式的小组名称,例如bugxia00~bugxia19,可以这么表述
bugxia[0-1][0-9]
#另外还支持用户名\密码的验证形式,使用方法见后文
easyn2n
* bugxia h85UFJY3Hz7irnoiHBXjZo-lH9tga+Vl+5ANnDN5G68
* easyn2n Z3EHfiKHYEUJVpx9wcQVD2uVEGpT1wtNgRJLEhidPmu
启动supernode时,使用附加参数 -c 白名单文件路径
启动即可,如
supernode -p 18457 -c /root/community.list
启动后,客户端(edge)仅能使用白名单内包含的组名称进行连接
基于用户/密码的身份验证
更新:
经实测,EasyN2N内置的Supernode 64位有bug(64位程序路径
n2n_client\x64\supernode_v3_bugxia_n2n.exe
)使用用户名/密码的形式可能无法正常启动
请使用32位版本替换64位版本(32位程序路径
n2n_client\x86\supernode_v3_bugxia_n2n.exe
)
除上述方法,supernode还支持用户名\密码的方法进行认证
该功能需要先通过N2N的密码工具(n2n-keygen),将允许连接的用户名密码进行加密
下载
Windows
n2n-keygen x64 for Windows:n2n-keygen.zip
Linux
通过源码自编译
加密
比如,用户名 bugxia
,密码 testpassword
n2n-keygen bugxia testpassword
得到一串加密的字符串
#格式:*[空格]用户名[空格]密钥
* bugxia h85UFJY3Hz7irnoiHBXjZo-lH9tga+Vl+5ANnDN5G68
配置community.list
将上述字符串(完整格式,包含整行开头的*星号)以及自定义的小组名称保存到 community.list,格式如下:
wenming6
* bugxia h85UFJY3Hz7irnoiHBXjZo-lH9tga+Vl+5ANnDN5G68
* easyn2n Z3EHfiKHYEUJVpx9wcQVD2uVEGpT1wtNgRJLEhidPmu
上述配置中,wenming6
表示允许连接的小组名
后面的表示wenming6小组下的允许使用的用户名(示例为bugxia和easyn2n)及对应的密钥
使用附加参数 -c 白名单文件路径
启动supernode
客户端
客户端这边将上述综合,小组名称必须使用community.list里指定的小组名
附加参数中添加 -I 用户名
、-J 密码
、-k 小组密码
、-A4或-A5
启动,如图
所有加入同一小组的不同客户端,必须保证上述四个参数是一致的
官方说明文档:https://github.com/ntop/n2n/blob/dev/doc/Authentication.md
46 条评论
您好,Centos自建supernode,尝试使用用户名密码认证方式连接,EasyN2N客户端配置好认证信息点启动后没有反应,服务端也没任何连接信息,想问下是什么原因?使用组名和-k密码是可以连接的。