Lighthouse 中的 IPv6 支持

本文介绍了如何在以太坊 Lighthouse 客户端中启用 IPv6 支持。文章详细说明了 IPv6 的基本工作原理,以及配置 Lighthouse 节点以同时监听 IPv4 和 IPv6 连接(双栈设置)的方法,并提供了检查 IPv6 是否正常工作的步骤,鼓励更多节点支持 IPv6,从而促进以太坊网络的去中心化和可访问性。

IPv6

IPv6 已经被指定了近十年。绝大多数互联网都已更新并支持 IPv6 网络,但以太坊在这方面却滞后了。

由于以太坊是去中心化的,网络上支持 IPv6 的节点越多,新节点就越容易使用 IPv6 加入。这就是原因:

我们-需要-你

这篇文章旨在配合我们的 Lighthouse NAT \ 指南,其中包含更多为 Lighthouse 节点设置正确网络配置的技术细节。

IPv6 的工作原理(从用户的角度来看)

我们不会在本节中解释 IPv6 的内部工作原理,而是对在 Lighthouse 节点上启用 IPv6 时的期望和查找内容进行超高级别的概述。

有几种方法可以启用 IPv6 支持。我们推荐的方式称为 dual-stack 设置。这意味着 Lighthouse 同时监听 IPv4 和 IPv6。它将分别与 IPv4 和 IPv6 对等节点建立连接,但如果我们的某个对等节点支持 IPv6,它将优先使用 IPv6。

IPv6 的发现机制需要网络上的其他 IPv6 对等节点来帮助它识别是否可以通过 IPv6 连接到它。这是我们鼓励用户采用 IPv6 的主要原因之一,因为更多具有 IPv6 支持的用户将加快这一过程。

IPv6 地址通常是全局可路由的。这意味着你计算机的 IPv6 地址可以公开用于连接到你的节点(对于 IPv4 而言,通常不是这种情况,请参阅我们关于 \ NAT 的帖子)。这并不意味着你的节点可以公开访问,你仍然需要在防火墙中为 IPv6 端口设置传递规则,以便 Lighthouse 接收传入的 IPv6 流量。使用 IPv6 的一个好处是,你的路由器不再需要对 IPv6 数据包执行 NAT,从而消除了路由过程中的一个处理步骤,太棒了。

如果你想检查你的节点是否正在监听 IPv6,你可以运行:

netstat -ntlp6

这里的标志代表:

  • n - 数字端口
  • t - 仅显示 TCP
  • l - 仅显示监听套接字
  • p - 显示打开端口的程序
  • 6 - IPv6

这应该显示正在监听的 IPv6 TCP 套接字,默认情况下,当 Lighthouse 运行时(并且你配置了 IPv6 网络),它应该显示端口 9000

前提条件

Lighthouse 完全支持 IPv6。为了让你今天开始使用它(假设是最新版本的 Lighthouse),你需要:

  1. 确保你的网络/ISP 支持 IPv6 并且你的网络设置正确。
  2. 要么不在 Lighthouse 中指定 --listen-address,要么通过 --listen-address 0.0.0.0 --listen-address :: 同时监听 IPv4 和 IPv6。
  3. 设置防火墙规则以允许入站 IPv6 流量。有关深入指南,请参阅我们的 Lighthouse \ NAT 帖子

你可以通过查看所有 IPv6 地址来验证你是否具有全局可路由的 IPv6 地址:

ip -6 addr

示例输出为:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 2400:0005:5302:5005::9000/128 scope global dynamic noprefixroute
       valid_lft 5245sec preferred_lft 2545sec
    inet6 2400:0005:5302:3d05:3167:7c7c:e741:6c38/64 scope global temporary dynamic
       valid_lft 86165sec preferred_lft 14165sec
    inet6 2401:d002:1602:3d05:4557:b513:196f:17f7/64 scope global dynamic mngtmpaddr noprefixroute
       valid_lft 86165sec preferred_lft 14165sec
    inet6 fe80::77c5:69c4:218d:b4ef/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

此输出显示了三个全局可路由的地址。你可以通过 global 一词来识别它们,也可以通过它们以 23 开头来识别它们。如此处可见,以 fe80 开头的地址称为链路本地地址,这些地址不足以让 Lighthouse 在 IPv6 上工作。我们假设你的路由器/网络已将全局可路由的地址分配给你的 Lighthouse 节点。

它在工作吗?

如果你已运行 Lighthouse,正在监听 IPv6 并在路由器中设置了防火墙规则,则可以通过以下方法检查 IPv6 是否正常工作(这些方法在 lighthouse \ nat 博客文章中进行了更详细的介绍):

  1. 检查 NAT HTTP API 端点(假设已在 Lighthouse 中设置了 --http 标志):$ curl localhost:5052/lighthouse/nat 如果 IPv6 字段返回 true,那么恭喜你,你的 Lighthouse 节点已正确配置为 IPv6。(这些字段可能需要一些时间才能在启动时变为 true)。
  2. 检查 Lighthouse 指标中的 网络仪表板
  3. 筛选日志以检查 IPv6 连接。这是一个更加繁琐的选项,但你可以 grep Lighthouse 日志,通常位于 .lighthouse/<network>/beacon/logs/beacon.log。搜索 Connection established 并查找 IPv6 连接(或直接搜索它们)。例如 $ grep "Connection established" beacon.log。 你可能会发现你的 Lighthouse 节点正在创建出站 IPv6 连接,但没有接收到任何入站连接。在这种情况下,前两点可能会显示不正确的 NAT 配置。这通常意味着你的防火墙未配置为允许 IPv6 流量进入发现(UDP 9000)和/或 libp2p(TCP 9000,UDP 9001)端口。

仅此而已

这就是所需要的一切,并且越多节点设置其网络以支持 IPv6,新 IPv6 节点加入网络的过渡就会越顺利。

伸出援手并支持 IPv6!:)

  • 原文链接: blog.sigmaprime.io/light...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
sigmaprime
sigmaprime
江湖只有他的大名,没有他的介绍。