Skip to main content
在 Monad 基金会发出通知之前,请不要执行此操作。

概述

UDP 认证为 Monad 节点提供了安全、经过身份验证的点对点通信。此功能目前为可选加入,将在未来的版本中成为强制要求。 优势:
  • 增强的安全性:使用您现有的验证者密钥对对等连接进行加密认证
  • DoS 防护:防止来自伪造数据包的资源耗尽
  • 流量优先级:为交易转发启用高效的 QoS 策略
  • 性能:与逐包 ECDSA 签名相比,数据包验证速度提升约 100 倍

前置条件

  • Monad 版本0.12.6 或更高版本
  • 访问权限:节点上的 Root/sudo 权限
  • 密钥库:现有的 /home/monad/monad-bft/config/id-secp 文件
  • 网络:能够在防火墙上打开 UDP 端口 8001

节点运营者操作说明

1. 验证 Monad 版本

验证安装:
如果不是,请参考官方文档升级到最新推荐版本:https://docs.monad.xyz/node-ops/upgrade-instructions/。

2. 配置防火墙

为经过身份验证的流量打开 UDP 端口 8001:
验证规则是否已添加:
预期输出:
注意:如果节点位于网络防火墙后面,请确保也打开端口 8001。

3. 生成认证签名

生成节点的认证名称记录签名:
重要--self-record-seq-num 值必须大于您当前 node.toml 中的 self_record_seq_num
  • 如果您的配置显示 self_record_seq_num = 0,请使用 1
  • 如果您的配置显示 self_record_seq_num = 1,请使用 2
输出示例:
警告:不要复制 authenticated_udp_port 参数,因为在 node.toml 中该参数名为 self_auth_port 保存此输出 - 您将在下一步中需要它。

4. 更新配置

编辑您的 Monad 配置:

4.1 更新 Peer Discovery 部分

在节点配置中:
  • 用步骤 3 的输出替换 [peer_discovery] 部分中的值
  • 添加 self_auth_port 参数

4.2 更新 Network 部分

authenticated_bind_address_port 参数添加到 [network]

4.3 更新对等节点记录(仅限验证者)

如果您运营的验证者带有下游全节点,请在其启用 UDP 认证时更新对等节点配置。 对于已启用 UDP 认证的对等节点
  • 使用下游节点的新值更新 record_seq_numname_record_sig
  • 设置 auth_port = 8001
注意:已激活 Authenticated UDP 的节点将在 peers.toml 文件中显示 auth_port = 8001
对于尚未启用的对等节点,无需更新任何内容,应省略 auth_port 行:
注意:下游节点的对等配置无需更新。 保存并退出文件。

5. 重启并验证

重启 Monad 服务:
监控日志以确认成功启动:

验证

检查服务状态

预期:active (running)

验证端口绑定

预期输出:

故障排查


问题:“invalid name record signature in config file”

原因: node.toml 中的签名与参数不匹配。 解决方案:
  1. 验证您是否正确地递增了 self_record_seq_num
  2. 使用正确的 seq_num 重新运行 monad-sign-name-record
  3. 将新签名复制到 node.toml
  4. 重启服务

问题:端口 8001 未监听

解决方案:

问题:防火墙阻止连接

解决方案:

回滚说明

如果需要禁用 UDP 认证:

1. 生成不带认证端口的新签名

注意:从您当前的值递增 seq_num。

2. 更新配置

编辑 /home/monad/monad-bft/config/node.toml
  • 更新 [peer_discovery] 中的 self_record_seq_numself_name_record_sig
  • 删除或注释掉 [network] 中的 authenticated_bind_address_port
  • 从对等节点配置中删除所有 auth_port 条目

3. 重启服务


快速健康检查脚本

将此脚本保存为 check_udp_auth.sh 以便快速验证:
使其可执行:
预期输出:

附加说明

  • 向后兼容性:节点可以与已认证和未认证的对等节点通信
  • 渐进式部署:在可选加入期间,您可以按照自己的节奏启用认证
  • 未来要求:UDP 认证将在未来的版本中成为强制要求(日期待定)
  • 序列号:重新生成签名时始终递增 self_record_seq_num
  • 密钥复用:认证使用您现有的验证者密钥(secp256k1)

支持

如果您遇到本指南未涵盖的问题:
  1. 检查日志:journalctl -u monad-bft -n 500 --no-pager
  2. 验证所有配置参数与示例匹配
  3. 确保您的防火墙和网络策略允许 UDP/8001
  4. 联系 Monad 支持并提供您的日志和配置(请脱敏敏感数据)