本文介绍了如何在以太坊 Lighthouse 客户端中启用 IPv6 支持。文章详细说明了 IPv6 的基本工作原理,以及配置 Lighthouse 节点以同时监听 IPv4 和 IPv6 连接(双栈设置)的方法,并提供了检查 IPv6 是否正常工作的步骤,鼓励更多节点支持 IPv6,从而促进以太坊网络的去中心化和可访问性。
IPv6 已经被指定了近十年。绝大多数互联网都已更新并支持 IPv6 网络,但以太坊在这方面却滞后了。
由于以太坊是去中心化的,网络上支持 IPv6 的节点越多,新节点就越容易使用 IPv6 加入。这就是原因:
这篇文章旨在配合我们的 Lighthouse NAT \ 指南,其中包含更多为 Lighthouse 节点设置正确网络配置的技术细节。
我们不会在本节中解释 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
这里的标志代表:
这应该显示正在监听的 IPv6 TCP 套接字,默认情况下,当 Lighthouse 运行时(并且你配置了 IPv6 网络),它应该显示端口 9000
。
Lighthouse 完全支持 IPv6。为了让你今天开始使用它(假设是最新版本的 Lighthouse),你需要:
--listen-address
,要么通过 --listen-address 0.0.0.0 --listen-address ::
同时监听 IPv4 和 IPv6。你可以通过查看所有 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
一词来识别它们,也可以通过它们以 2
或 3
开头来识别它们。如此处可见,以 fe80
开头的地址称为链路本地地址,这些地址不足以让 Lighthouse 在 IPv6 上工作。我们假设你的路由器/网络已将全局可路由的地址分配给你的 Lighthouse 节点。
如果你已运行 Lighthouse,正在监听 IPv6 并在路由器中设置了防火墙规则,则可以通过以下方法检查 IPv6 是否正常工作(这些方法在 lighthouse \ nat 博客文章中进行了更详细的介绍):
--http
标志):$ curl localhost:5052/lighthouse/nat
如果 IPv6 字段返回 true,那么恭喜你,你的 Lighthouse 节点已正确配置为 IPv6。(这些字段可能需要一些时间才能在启动时变为 true)。.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 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!