[翻译] n2n 常见问题

原文 n2n Frequently Asked Questions

n2n 常见问题

发布

哪里能找到Windows系统的n2n软件?

我们没有在release中发布Windows版本的n2n,但是我们的自动化测试流程会创建他们。你可以点击项目界面中的 Actions,选择 Testing,进入最近一次的运行实例,在界面最下方的 Artifacts 处下载 binaries,其中就包括了编译好的windows版本n2n。通常来说你可以使用 x86_64-w64-mingw32\usr\sbin 路径下的版本。

此外,正如我们的README中提到的,luckytu 一直在更新n2nWindows版本,你也可以在他那里直接下载编译后的软件。

Supernode

我想部署一个私有的,有密码保护的supernode,需要怎么设置?

你可以直接配置 community.list 文件,在其中设置一个 <community name> (输入单行文本即可) ,然后把这个 <community name> 当作您的密码。

在启动 supernode 时,记得加上 -c <community file> 参数指定配置文件。这样,只有设置了 -c <community name>edge 可以使用 supernode

此时,在您的 edgesupernode 注册的过程中,<community name> 是明文传递的。如果您想要对传输过程进行加密,需要在所有 edge 节点启动时添加 -H 参数。

另外,请参阅 n2n 附带的 community.list 文件以了解该文件的高级使用。

除了这个访问障碍之外,您可能希望在边缘使用有效负载加密 -A_。

只有边缘(而不是超级节点)能够解密有效负载数据。

因此,即使任何人都能够打破超级节点的访问障碍,有效负载仍然受到有效负载加密的保护,请参阅此文档了解详细信息。

除了上述的这些安全手段之外,您还可以在 edge 添加 -A_ 参数来加密传输的数据。数据的加密和解密都是 edge 进行的,所以即使是 supernode 节点也无法解密数据内容。因此,即使你的 supernode 节点被黑客入侵,你的数据内容依然是被加密算法保护的。更多细节可以参考这一篇关于加密的文档

我可以在supernode查看接入的edge列表吗?

可以,supernode 通过UDP提供了基本的管理接口,默认端口是5645,可以通过 -t 参数修改。

只需要发送一个新的行就可以查询当前状态,例如,在 supernode 本机(远程链接不可以)上按下[ENTER]键,然后输入如下命令:

netcat -u localhost 5645

支持多个supernode节点的部署方式吗?

支持,这篇文档描述了如何部署多个 supernode 节点来提升网络的可用性。

supernode可以监听多个UDP端口吗?

supernode 本身只支持监听一个端口,但是你应该可以通过做NAT的方式将多个端口映射到同一个端口上,例如:

sudo iptables -t nat -A PREROUTING -i <network interface name> -d <supernode's ip address> -p udp --dport <additional port number> -j REDIRECT --to-ports <regular supernode port number>

这条命令可以作为 ExecStartPost= 添加到 supernode.service 文件中(不需要加sudo),如果需要映射多个端口,可以多加几行。

这个报错是怎么回事 “process_udp dropped a packet with seemingly encrypted header for which no matching community which uses encrypted headers was found”?

这条报错的意思是 supernode 收到了一个无法使用的数据包。supernode 先将这个包视为一个未加密的包来处理,如果处理失败的话,supernode假定这是一个加密的数据包,之后 supernode 会尝试所有可以生成key的 community (排除明确没有加密的community)。如果任何 community 的key都无法解开此数据包,就会产生这条报错。

如果所有 edge-H 参数配置是相同的(都有 -H 或者都没有 -H ),并且重启 supernode 后依然报错,最大的可能是 supernode 或者 edge 的版本不一致,导致了数据包格式不一致。

因此,请确保所有 edge supernode 具有完全相同的版本,例如:最新的 _dev_ 分支。

Edge

如何查看p2p链接的状态?

edge 同样提供了一个本地的UDP管理端口,包括了 peers 这种已经建立的p2p链接,还有 pending peers 这种通过 supernode 中转的链接。

edge 的默认管理端口号是 5644,可以通过 -t 参数修改。可以在本机通过此命令查看:

netcat -u localhost 5644

发送空行就可以查看链接信息,对于其他的命令行功能,请通过 help 查看。

edge 反复报错 “Authentication error. MAC or IP address already in use or not released yet by supernode”。是什么问题?

Edge 遇到了 n2n 的防欺骗保护。

它可以防止一个边缘的身份(MAC 和 IP 地址)在原始边缘仍然在线时被其他边缘冒充,请参阅一些详细信息。

大多数情况下,有两种情况可以触发此操作:

这是触发了 n2n 的防欺骗保护机制,这个机制可以防止已经在线的 edge 节点被其他人冒充,这篇文档有更详细的描述。总之,大部分情况下,有两种可能触发这个机制:

你使用的 MAC 地址或 IP 地址已经被使用了,修改这些参数就可以了。

如果一个 edge 非正常退出,例如被 kill -9 ...kill -SIGKILL ...,那么这个 edge 可能没有机会通知 supernode 取消注册,因此 supernode 仍然认为此 edge 在线,此时具有相同 MAC 或 IP 地址的注册就不会成功。

supernode 记录 edge 的超时时间是两分钟,所以可以等待两分钟,或者换不同的 MAC 和 IP 地址注册。

基本上来说,不管是 CTRL + C 或是 kill -SIGTERM ... 或者 kill -SIGINT ... 或者 kill ... 不带9,都可以正常的结束 edge,在管理接口下发 stop 命令也可以停止 edge ,所以大部分情况下无需使用 kill -9 ...


[翻译] n2n 常见问题
https://vitsumoc.github.io/n2n 常见问题.html
作者
vc
发布于
2023年12月7日
许可协议