RPKI RTR Server
默认运行目标平台:Ubuntu/Linux。
RTR Server
RTR Server 的运行配置通过环境变量读取。如果某个环境变量没有设置,则使用
src/main.rs 中的内置默认值。
环境变量
| 变量名 | 说明 | 示例 |
|---|---|---|
RPKI_RTR_ENABLE_TLS |
是否额外启用 TLS 监听。支持 true/false、1/0、yes/no、on/off。 |
true |
RPKI_RTR_TCP_ADDR |
TCP 监听地址。 | 0.0.0.0:323 |
RPKI_RTR_TLS_ADDR |
TLS 监听地址。 | 0.0.0.0:324 |
RPKI_RTR_DB_PATH |
RTR 使用的 RocksDB 路径。 | ./rtr-db |
RPKI_RTR_VRP_FILE |
输入 VRP 文件路径。 | ./data/vrps.txt |
RPKI_RTR_ASPA_FILE |
输入 ASPA 文件路径。 | ./data/aspas.txt |
RPKI_RTR_ROUTER_KEY_FILE |
输入 Router Key 文件路径。 | ./data/router-keys.txt |
RPKI_RTR_TLS_CERT_PATH |
TLS 服务端证书路径。 | ./certs/server.crt |
RPKI_RTR_TLS_KEY_PATH |
TLS 服务端私钥路径。 | ./certs/server.key |
RPKI_RTR_TLS_CLIENT_CA_PATH |
用于校验 router 客户端证书的 CA 证书路径。 | ./certs/client-ca.crt |
RPKI_RTR_MAX_DELTA |
保留的最大 delta 条数。 | 100 |
RPKI_RTR_REFRESH_INTERVAL_SECS |
重新加载 VRP 文件的时间间隔,单位秒。 | 300 |
RPKI_RTR_MAX_CONNECTIONS |
最大并发 RTR 连接数。 | 512 |
RPKI_RTR_NOTIFY_QUEUE_SIZE |
Serial Notify 广播队列大小。 | 1024 |
RPKI_RTR_TCP_KEEPALIVE_SECS |
TCP keepalive 时间,单位秒。设为 0 表示禁用。 |
60 |
RPKI_RTR_WARN_INSECURE_TCP |
纯 TCP 模式下是否输出不安全告警。支持布尔值。 | true |
RPKI_RTR_REQUIRE_TLS_SERVER_DNS_NAME_SAN |
严格模式:如果 TLS 服务端证书不包含 subjectAltName dNSName,则拒绝启动。支持布尔值。 |
false |
说明
- 纯 TCP 模式只应部署在受信任、可控的网络环境中。
- TLS 模式要求客户端证书认证。
- 开启严格 TLS 服务端证书模式后,如果服务端证书缺少
subjectAltName dNSName,启动时会被拒绝。 RPKI_RTR_TCP_KEEPALIVE_SECS=0表示关闭 TCP keepalive;非零值表示在连接整个生命周期内启用 keepalive。
启动示例
Bash
纯 TCP 模式:
sh ./scripts/start-rtr-server-tcp.sh
TLS / mutual TLS 模式:
sh ./scripts/start-rtr-server-tls.sh
如果你想手动设置环境变量,也可以直接这样启动。
纯 TCP
export RPKI_RTR_ENABLE_TLS=false
export RPKI_RTR_TCP_ADDR=0.0.0.0:323
export RPKI_RTR_DB_PATH=./rtr-db
export RPKI_RTR_VRP_FILE=./data/vrps.txt
export RPKI_RTR_ASPA_FILE=./data/aspas.txt
export RPKI_RTR_ROUTER_KEY_FILE=./data/router-keys.txt
export RPKI_RTR_TCP_KEEPALIVE_SECS=60
export RPKI_RTR_WARN_INSECURE_TCP=true
cargo run
TLS / mutual TLS
export RPKI_RTR_ENABLE_TLS=true
export RPKI_RTR_TCP_ADDR=0.0.0.0:323
export RPKI_RTR_TLS_ADDR=0.0.0.0:324
export RPKI_RTR_DB_PATH=./rtr-db
export RPKI_RTR_VRP_FILE=./data/vrps.txt
export RPKI_RTR_ASPA_FILE=./data/aspas.txt
export RPKI_RTR_ROUTER_KEY_FILE=./data/router-keys.txt
export RPKI_RTR_TLS_CERT_PATH=./certs/server-dns.crt
export RPKI_RTR_TLS_KEY_PATH=./certs/server-dns.key
export RPKI_RTR_TLS_CLIENT_CA_PATH=./certs/client-ca.crt
export RPKI_RTR_TCP_KEEPALIVE_SECS=60
export RPKI_RTR_WARN_INSECURE_TCP=true
export RPKI_RTR_REQUIRE_TLS_SERVER_DNS_NAME_SAN=true
cargo run
可直接修改的示例脚本见:
ASPA 文件格式
RPKI_RTR_ASPA_FILE 当前使用简单文本格式:
# customer_asn,provider_asn [provider_asn ...]
64496,64497 64498
64497,64500
Router Key 文件格式
RPKI_RTR_ROUTER_KEY_FILE 当前使用简单文本格式:
# ski_hex,asn,spki_hex
00112233445566778899aabbccddeeff00112233,64496,3013300d06092a864886f70d010101050003020000
8899aabbccddeeff00112233445566778899aabb,64497,cafebabe
RTR Client
调试用 RTR client 位于:
它的说明文档位于:
Client 启动示例
连接纯 TCP RTR server:
cargo run --bin rtr_debug_client -- 127.0.0.1:323 1 reset
连接 TLS RTR server:
cargo run --bin rtr_debug_client -- \
127.0.0.1:324 1 reset \
--tls \
--ca-cert ./certs/client-ca.crt \
--server-name localhost \
--client-cert ./certs/client-good.crt \
--client-key ./certs/client-good.key
如果要持续观察错误后的行为,可以加:
--keep-after-error
Description
Languages
Rust
100%