接入 DN42 之前,先要在 registry 中声明“我是谁、我拥有哪些资源、哪些路由允许由我的 AS 宣告”。这一步做不好,后面的 BGP 即使建立成功,路由也可能被对方 ROA 过滤器拒绝。
Registry 是什么#
DN42 registry 是一个 Git 仓库,里面保存社区资源对象。常见对象如下:
mntner 维护者对象,记录认证方式和维护者信息person 联系人对象aut-num AS 号对象inetnum IPv4 地址段对象inet6num IPv6 地址段对象route IPv4 路由授权对象route6 IPv6 路由授权对象domain .dn42 域名对象,可选典型流程:
fork registry添加自己的对象运行 registry 检查脚本提交一个经过 squash 的 commit按要求签名 commit发起 Pull Request等待 maintainer review不要直接用网页编辑器一点点改文件。网页编辑容易产生多个散乱 commit,也不方便运行检查脚本。
资源对象之间的关系#
一套最小可用资源通常包含:
FOO-MNTFOO-DN42AS4242423777172.22.107.0/27fd42:3777:3777::/48route: 172.22.107.0/27 origin AS4242423777route6: fd42:3777:3777::/48 origin AS4242423777inetnum / inet6num 表示地址段归属,route / route6 表示这个前缀允许由哪个 AS 宣告。BGP 过滤时通常会用 route/route6 生成 ROA 表,所以这两个对象非常关键。
ASN 选择#
DN42 常见私有 ASN 段包括 4242420000-4242423999。选择前请先确认 registry 中没有被占用。
建议:
- 选择一个未使用的 ASN。
- AS 名称简短、稳定。
- 不要使用公网 ASN,除非你清楚它和 DN42 社区规则的关系。
- 后续配置 BIRD 时只写数字部分,例如
define OWNAS = 4242423777;。
地址选择#
IPv4 常见从 172.20.0.0/14 等 DN42 地址空间中申请。IPv6 使用 fd00::/8 ULA。
建议:
- IPv4 新手选择社区允许范围内的合适前缀,不要太大。
- IPv6 可以使用 ULA 生成工具生成随机
/48。 - loopback 地址从自己的前缀里取一个稳定地址,例如
172.22.107.1/32和fd42:3777:3777::1/128。 - router id 使用稳定 IPv4 地址,例如
172.22.107.1。
找 peer#
DN42 中通常没有严格的“上游”和“客户”区分,大多数 peer 都会互相提供 transit。找 peer 时建议优先选择:
- 地理位置接近。
- 延迟较低,通常同洲 peer 更合适。
- 有稳定在线时间。
- peering 页面写得清楚。
- 支持 WireGuard 和 BIRD/FRR 常见配置。
你需要和对方交换:
你的 ASN你的 DN42 IPv4/IPv6 地址或 link-local 地址你的 WireGuard 公钥你的公网 endpoint 和 UDP 端口你的 DN42 前缀你的 peering 联系方式不要发送:
WireGuard private key服务器密码SSH 私钥Grafana/API tokenPeering 信息模板#
可以给对方这样的信息:
ASN: AS4242423777DN42 IPv4: 172.22.107.1DN42 IPv6: fd42:3777:3777::1WireGuard public key: <LOCAL_PUBLIC_KEY>WireGuard endpoint: your.example.com:23777WireGuard link-local: fe80::3777Preferred BGP transport: IPv6 link-local如果你在 NAT 后面,没有固定公网入口,也可以只主动连接对方 endpoint,并设置 PersistentKeepalive = 25。
PR 通过后再做什么#
PR 合并后,等待 registry 镜像和 ROA 数据更新。然后再:
配置 Linux 网络基础配置 WireGuard配置 BIRD2更新 ROA 表和 peer 联调如果你的 BGP session 已经 established 但对方不接受你的前缀,优先检查:
route/route6对象是否存在。- origin ASN 是否写对。
- 前缀长度是否和 registry 一致。
- ROA 数据是否已经更新。