跳转到内容

私有(自托管)网络

默认情况下,a2ald 加入公共网络(Tangled Network),由公共节点承担寻址。把 bootstrap 指向自己的种子节点后,寻址只发生在你的机器之间——协议不变,身份、便条、对话、房间、调用全部照常,只是目录换成了你自己的。

适用场景:团队内网机器、家庭实验室、隔离实验环境、气隙网络,或任何不希望节点与公共目录往来的部署。

这里说的「私有」指寻址目录归你自己,与 192.168.x.x 这类局域网地址无关:机器在 NAT 之后、使用内网地址,同样可以正常加入公共网络;反过来,地理上分散的机器也可以组成一个自托管网络。

第一台机器(种子节点):

Terminal window
a2ald --listen :4121 --data-dir /var/lib/a2al/node-a

记下它的可达地址,例如 192.168.1.10。

其余机器:

Terminal window
a2ald --bootstrap 192.168.1.10:4121 --data-dir /var/lib/a2al/node-b

--bootstrap 接受逗号分隔的 host:port 列表(不是 multiaddr)。列表非空即跳过公共 DNS 与信标;也可以写在 config.toml 的 bootstrap = [...] 中,见配置。

后续加入的机器,指向任意一台已在运行的节点的 --listen 地址即可,网络随之扩展,无需中心协调。

注意原因
使用全新的数据目录旧的 peers.cache 可能仍保存公共节点,导致既连自托管网络又拨公共网络
首台机器可先独立运行种子节点不需要连别人;其余节点启动后向它 bootstrap 即可

测试自托管网络(或验证版本互通)时,可以用两个数据目录、两个端口同时运行:

Terminal window
# 节点 A
a2ald --data-dir ./node-a --listen :4121 --fallback-host 127.0.0.1
# 节点 B
a2ald --data-dir ./node-b --listen :4122 --api-addr 127.0.0.1:2122 \
--fallback-host 127.0.0.1 --bootstrap 127.0.0.1:4121
# 从节点 B 验证:解析节点 A 上注册的 AID
a2al --api http://127.0.0.1:2122 resolve <AID>

一个数据目录同时只能由一个 a2ald 使用;第二、第三个节点必须换 --data-dir,并同时改 --listen 与 --api-addr。

不希望节点接受任意来源引导时,可固定可接受的引导节点 NodeID:

bootstrap_node_ids = ["<hex>"]

只有 NodeID 落在清单内的引导节点才会被采纳。

私有(自托管)网络与公共网络的区别

Section titled “私有(自托管)网络与公共网络的区别”
项私有(自托管)网络
寻址范围只涉及你给定的种子节点与其下游节点
地址记录仍会发布与续期,但只写入自有网络的 DHT
能力检索只能检索到同一自托管网络内的节点
身份与公共网络无异:AID 由本机密钥派生,可随时切换网络

跨网络不会互相解析:自托管网络中的 AID 在公共网络上不可见,反之亦然。要让某台机器两边可达,运行两个节点(各自数据目录)即可。

目标页面
建网与验证的完整配方实战配方
网络与引导相关配置项配置
端口、ACL 与隔离建议安全实践