swarm测试极简指南bee矿机的网络特点与惩罚机制

Posted weixin_46596227

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swarm测试极简指南bee矿机的网络特点与惩罚机制相关的知识,希望对你有一定的参考价值。

链接惩罚

如果一个矿机节点有产生对swarm网络造成破坏的行为,将会被拉进封禁列表中,所有节点都将不会与它进行连接。

端口的连通性

为了你的矿机能够持续与外界保持通讯,请确保它的p2p端口保持畅通状态,通常是:1634端口 或者 1337端口

你可以运行如下命令,以检查连通性:

curl http://localhost:1635/addresses

你会看到类似如下内容:

{
    "overlay": "ae1e86aa6def7e105d0f68xxxxxxxxxxxxxfc2c61c4c64d965c53d2",
    "underlay": [
    	"/ip4/172.14.0.2/tcp/1634/p2p/16Uiuxxxxxxxj5uNL8ynwMFaHmHT1ALcUjTkHTx1dUGTL9uWk3et", 
    	"/ip4/127.0.0.1/tcp/1634/p2p/16Uiu2HAmQtYEj5uNL8ynwMFaHmHT1ALcUjTkHTx1dUGTL9uWk3et"
    ],
    "ethereum": "0x8ca4e3xxxxxxx631deb0c8e8c2bce8c21f95ff34",
    "publicKey": "02da32a7325xxxxxx3fee56c2a9e0cebe6464bf7a14247ca5dfae87f01f003898",
    "pssPublicKey": "03d2b301ef9cf6430xxxxxxb35ce9a916b91557f0c22bbafaacf73d9be068065"
}

您也可能需要更改 Bee 节点的 nat-addr 配置。

网络基础

在网络中,每台计算机都分配有一个 IP。然后每个 IP 被细分为数千个套接字或端口,每个套接字或端口都有一个传入和传出数据包。

在完全可信的局域网络中,所有的端口的数据流入与流出都是畅通无阻的。但是在更加广的网络中,有一些网络端口就需要阻隔以及过滤了。

1633端口:仅限于在网关模式中暴露。
1634端口:主要与其他端口进行通讯,要保持这个端口是对外畅通的。
1635端口:属于 API 模式,不能提供对外访问的功能。

当前网络的问题点

NAT 网络不利于p2p传输模式

网络地址转换的存在为 p2p 网络带来了两个问题。

第一个是在我们的计算机上运行的程序很难知道我们真正的公共 IP,因为我们的计算机的网络接口没有明确知道它,该接口配置有专用网络 IP。这是一个相对容易解决的问题,因为我们可以简单地发现我们的公共 IP,然后在 Bee 的配置中指定它,或者确实使用其他方式确定它。

第二个问题是我们的路由器只有 65535 个端口可以暴露给公共网络,但是,您专用网络上的每个设备都能够公开 65535个。对于全球互联网来说,似乎只有一组端口可以连接,而实际上,连接到专用网络的每个设备都有一组完整的端口。为了解决第二个问题,路由器通常采用一种称为端口转发的方法。

Bee 对这些问题的解决方案有两种,自动和手动。

自动:通用即插即用 (UPNP)

UPNP 是一种协议,旨在通过提供 API 来简化最终用户对 NAT 和端口转发的管理,网络中运行的软件可以使用该 API 向路由器询问外部 IP 并请求将端口转发到内部 IP运行该软件的计算机。

UPNP 存在安全隐患!
UPNP 是一种安全风险,因为它允许网络内部(有时也在外部)的任何主机或进程打开可用于传输恶意流量的任意端口,例如RAT。UPNP 也可用于确定您的 IP,在使用 Tor 或 VPN 的情况下隐藏您的真实公共 IP。我们强烈建议您禁用路由器上的 UPNP 并使用如下所述的手动端口转发。

Bee 将使用 UPNP 来确定您的公共 IP,这是各种内部流程所必需的。

除此之外,还会向您的路由器发送一个请求,要求它随机将一个直接暴露在 Internet 上的端口转发到 Bee p2p 端口(通常1634),您的计算机仅将其暴露在局域网络中。这样做会创建一个连接通道,使得其他 Bee矿机 可以通过该隧道安全地连接到您的计算机。

如果您在具有 UPNP 的专用网络中启动 Bee 节点,则调试 API 的地址端点的输出将如下所示:

[
  "/ip4/127.0.0.1/tcp/1634/p2p/16Uiu2HAm5zcoBFWmqjDTwGy9RXepBFF8idy6Pr312obMwwxdJSUP",
  "/ip4/192.168.0.10/tcp/1634/p2p/16Uiu2HAm5zcoBFWmqjDTwGy9RXepBFF8idy6Pr312obMwwxdJSUP",
  "/ip6/::1/tcp/1634/p2p/16Uiu2HAm5zcoBFWmqjDTwGy9RXepBFF8idy6Pr312obMwwxdJSUP",
  "/ip4/86.98.94.9/tcp/20529/p2p/16Uiu2HAm5zcoBFWmqjDTwGy9RXepBFF8idy6Pr312obMwwxdJSUP"
]

请注意,外部多地址中的端口是路由器随机选择的20529,由路由器转发到192.168.0.10:1634。

手动:配置您的路由器和 Bee

检查地址端点输出中的底层地址的调试 API,我们只能看到localhost 127.0.0.1和私有网络 IP 的地址 192.168.0.10。Bee 肯定在转发我们的 NAT 时遇到了问题。

[
  "/ip4/127.0.0.1/tcp/1634/p2p/16Uiu2HAm8Hs91MzWuXfUyKrYaj3h8K8gzvRqzSK5gP9TNCwypkJB",
  "/ip4/192.168.0.10/tcp/1634/p2p/16Uiu2HAm8Hs91MzWuXfUyKrYaj3h8K8gzvRqzSK5gP9TNCwypkJB",
  "/ip6/::1/tcp/1634/p2p/16Uiu2HAm8Hs91MzWuXfUyKrYaj3h8K8gzvRqzSK5gP9TNCwypkJB",
]

为了帮助解决第一个问题,让我们确定我们的公共 IP。

curl icanhazip.com
86.98.94.9

通过运行该命令,你会得到一串矿机的真实 ip 地址。现在我们可以在启动时在 Bee 配置中简单地提供这个 IP。

你还需要在路由器或者其他网关中设置端口转发细节。

首先,在 Bee 运行前,让我们使用 Netcat 设置一个简单的 TCP 侦听器。

nc -l 0.0.0.0 1634
nc -zv 86.98.94.9 1634
/*
86.98.94.9 为公网IP
*/
Connection to 86.98.94.9 port 1834 [tcp/*] succeeded!

如果以上操作不起作用,请查看下面的调试连接指南。
启动Bee 节点时,可以传入参数 --nat-addr

bee start --nat-addr 86.98.94.9:1634

再次检查我们的地址端点,我们现在可以看到 Bee 已经能够成功分配一个公共地址!恭喜,您的 Bee 现已连接到外部世界!

$ curl http://localhost:1635/addresses

[
  "/ip4/127.0.0.1/tcp/1634/p2p/16Uiu2HAm8Hs91MzWuXfUyKrYaj3h8K8gzvRqzSK5gP9TNCwypkJB",
  "/ip4/192.168.0.10/tcp/1634/p2p/16Uiu2HAm8Hs91MzWuXfUyKrYaj3h8K8gzvRqzSK5gP9TNCwypkJB",
  "/ip6/::1/tcp/1634/p2p/16Uiu2HAm8Hs91MzWuXfUyKrYaj3h8K8gzvRqzSK5gP9TNCwypkJB",
  "/ip4/86.98.94.9/tcp/1634/p2p/16Uiu2HAm8Hs91MzWuXfUyKrYaj3h8K8gzvRqzSK5gP9TNCwypkJB"
]

提醒:注意防火墙的可连通性

调试连接

为了确保从您的计算机到外部世界有一条清晰的路径,让我们从内到外一起探索bee矿机。

让我们在要运行 Bee 的矿机上的所有接口上设置一个 Netcat 侦听器,就像上面一样。

nc -l 0.0.0.0 1634

现在,让我们通过检查本地机器上的连接来验证我们是否在上面进行测试。

nc -zv 127.0.0.1 1634
Connection to 127.0.0.1 port 1634 [tcp/*] succeeded!

如果此处有问题,问题应该是出在您的操作系统上运行的某些其他软件。

Docker

Docker 增加了另一个层次的复杂性。

为了调试 docker 连接问题,我们可以使用上面的 netcat 来检查端口连接是否按预期工作。在 docker-compose.yaml 中,仔细检查您是否向本地网络公开了正确的端口。您应该能够使用例如在本地成功检查连接。nc -zv localhost 1634 然后按照上面的说明确保您的本地网络具有暴露给 Internet 的正确端口。

以上是关于swarm测试极简指南bee矿机的网络特点与惩罚机制的主要内容,如果未能解决你的问题,请参考以下文章

swarm测试极简指南bee 矿机节点如何快速迁移?

swarm测试极简指南如何管理你的Bee节点状态数据 ?

swarm测试极简指南如何备份保管好你的Bee矿机数据

swarm测试极简指南Bee Clef 是什么?

swarm测试极简指南使用树莓派部署你的矿机

swarm测试极简指南矿机启动后,bootnode报错的解决方案