N2N服务端的几种验证方式

N2N 2023/01/12

有一些朋友自建的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

本文标签:


45 条评论

  • 孤尘 评论于 回复

    大佬,一直在用N2N,有没有docker的教程呢?

  • makimakima 评论于 回复

    -k 参数小组密码是什么东西,这个是在supernod设定的? 没搞清楚这东西有什么用

    • Bug侠 评论于 回复

      @makimakima
      -k在客户端用,和【用户名/密码】里的【密码】保持一致就行了,不加没法启动

  • makimakima 评论于 回复

    你是怎么发现supernode用32位可以用账号密码的 :笑哭: 我tm折腾一下午,n2n的github上有个issue上说有个fork叫n3n结果试了半天也搞不定

    • Bug侠 评论于 回复

      @makimakima
      无意间发现的,之前忘记更新本文了 :doge:

  • 评论于 回复

    添加用户密码后,启动服务端提示下面日志后就一直重启了,大家有遇到么
    [2024-10-22 16:46:39] the network range for community ip address service is ‘172.16.0.0…172.16.0.0/24’
    [2024-10-22 16:46:39] added allowed community ‘nbnb66’ [total: 1]
    [2024-10-22 16:46:39] assigned sub-network 172.16.0.0/24 to community ‘es220test’
    [2024-10-22 16:46:39] added user ‘nbnb’ with public key ‘W2hYwCPN5sroYtW26EFbdiWIYcMKgsOVOGFY-1Vfzp0’ to community ‘es220test’
    [2024-10-22 16:46:39] added user ‘nbnb2’ with public key ‘hzM7SnH+siptOfwtYbTU66Tt9PGBd2JShliUvDN4cLW’ to community ‘es220test’
    [2024-10-22 16:46:39] loaded 1 fixed-name communities from C:\community.list
    [2024-10-22 16:46:39] loaded 0 regular expressions for community name matching from C:\community.list
    [2024-10-22 16:46:39] started shared secrets calculation for edge authentication
    [2024-10-22 16:46:39] calculated shared secrets for edge authentication
    [2024-10-22 16:46:39] calculating dynamic keys

    • Bug侠 评论于 回复

      @帅
      EasyN2N内置的Supernode 64位有bug(64位程序路径n2n_client\x64\supernode_v3_bugxia_n2n.exe)
      使用用户名/密码的形式可能无法正常启动
      请使用32位版本替换64位版本(32位程序路径n2n_client\x86\supernode_v3_bugxia_n2n.exe)

  • 子榆居 评论于 回复

    请问大佬 如果我不设置用户/密码的身份验证,只是设置个组名称白名单
    走P2P网络的话两个edge之间的通讯会被默认加密吗? 附加参数用的是默认

  • QP 评论于 回复

    请问在WIDOWS里创建服务器,加入 -c community.list
    提示
    WARNING: File community.list not found
    WARNING: using default federation name; FOR TESTING ONLY, usage of a custom federation name (-F) is highly recommended!

    无论如何 修改路径都会提示,
    -c /community.list
    -c ./community.list
    -c “community.list”
    绝对路径等方式都无法正常加载

    • Bug侠 评论于 回复

      @QP
      Windows下使用绝对路径:
      -c=E:\Tools\EasyN2N\n2n_client\community.list
      或者
      -c E:\Tools\EasyN2N\n2n_client\community.list

      不支持引号,所以路径中不要有空格
      :笑哭:

  • 456 评论于 回复

    -k的参数是小组密码还是用户密码,如是小组密码的话在哪里配置

  • 一叶知秋 评论于 回复

    请问n2n可以支持链路切换,比如客户端一个网卡down掉,可以自动切换到另一个网卡吗

  • Kelun 评论于 回复

    各位有遇過基於帳號密碼的supernode無法啟動的問題嗎?我不論在Linux還是Windows,啟動同樣的帶帳號密碼的supernode最後都停在一樣的地方,程序就終止了

    05/Dec/2023 01:45:24 [sn_utils.c:395] added allowed community ‘N2NGroup’ [total: 1]
    05/Dec/2023 01:45:24 [sn_utils.c:1296] assigned sub-network 10.222.10.0/24 to community ‘N2NGroup’
    05/Dec/2023 01:45:24 [sn_utils.c:340] added user ‘HomeServer’ with public key ‘rkt9LCIxkfadwpKcGq0QW9FznTI43JKIbPhy5wsYQmm’ to community ‘N2NGroup’
    05/Dec/2023 01:45:24 [sn_utils.c:440] loaded 1 fixed-name communities from ./community.list
    05/Dec/2023 01:45:24 [sn_utils.c:443] loaded 0 regular expressions for community name matching from ./community.list
    05/Dec/2023 01:45:24 [sn_utils.c:115] started shared secrets calculation for edge authentication
    05/Dec/2023 01:45:24 [sn_utils.c:131] calculated shared secrets for edge authentication
    05/Dec/2023 01:45:24 [sn_utils.c:140] calculating dynamic keys

    community. list
    N2NGroup
    * HomeServer rkt9LCIxkfadwpKcGq0QW9FznTI43JKIbPhy5wsYQmm

    指令
    .\supernode.exe -p 60666 -c “D:\N2N\community.list” -v

    • nutshell 评论于 回复

      @Kelun
      同样的情况,有人解决了吗?

      • 评论于 回复

        @nutshell
        @bugxia 遇到同样情况+1

  • A 评论于 回复

    为什么非白名单小组名也可以出现绿勾
    [root@VM-4-12-centos ~]# supernode -p 9527 -c /root/community.list
    19/Aug/2023 15:22:20 [sn_utils.c:445] loaded 1 fixed-name communities from /root/community.list
    19/Aug/2023 15:22:20 [sn_utils.c:448] loaded 0 regular expressions for community name matching from /root/community.list
    19/Aug/2023 15:22:20 [sn_utils.c:136] calculated shared secrets for edge authentication

  • 评论(本站已开启评论回复邮件通知功能,请如实填写邮箱以便及时收到回复)