3.6 KiB
3.6 KiB
rtr_debug_client
rtr_debug_client 是用于 RTR 协议联调的命令行调试客户端,支持 TCP、TLS、SSH 三种传输。
它用于:
- 手动发送
Reset Query、Serial Query - 持续接收并打印服务端 PDU
- 观察
session_id、serial、EndOfDatatiming hint、ErrorReport等状态变化
构建
cargo build --bin rtr_debug_client
基本用法
cargo run --bin rtr_debug_client -- <addr> <version> [reset|serial <session_id> <serial>] [options]
默认值:
addr:127.0.0.1:323version:1mode:reset--timeout:30--poll:600
TCP 用法
cargo run --bin rtr_debug_client -- 127.0.0.1:323 1 reset
cargo run --bin rtr_debug_client -- 127.0.0.1:323 1 serial 42 100
TLS 用法
仅校验服务端证书:
cargo run --bin rtr_debug_client -- \
127.0.0.1:324 1 reset \
--tls \
--ca-cert tests/fixtures/tls/client-ca.crt \
--server-name localhost
双向 TLS:
cargo run --bin rtr_debug_client -- \
127.0.0.1:324 1 reset \
--tls \
--ca-cert tests/fixtures/tls/client-ca.crt \
--server-name localhost \
--client-cert tests/fixtures/tls/client-good.crt \
--client-key tests/fixtures/tls/client-good.key
SSH 用法(按 draft-ietf-sidrops-8210bis-25)
rtr_debug_client --ssh 采用以下流程:
- SSHv2 连接
sessionchannel- 请求
subsystem,默认rpki-rtr - 使用
publickey认证 - 强制服务端 host key 校验(
known_hosts或 pinned server key 二选一)
1. 使用 known_hosts 校验服务端
cargo run --bin rtr_debug_client -- \
127.0.0.1:22 1 reset \
--ssh \
--ssh-user rpki-rtr \
--ssh-key certs/rtr-client.key \
--ssh-known-hosts certs/known_hosts
2. 使用固定服务端公钥校验
cargo run --bin rtr_debug_client -- \
127.0.0.1:22 1 reset \
--ssh \
--ssh-user rpki-rtr \
--ssh-key certs/rtr-client.key \
--ssh-server-key certs/ssh_host_ed25519_key.pub
3. 自定义 subsystem 名称
cargo run --bin rtr_debug_client -- \
127.0.0.1:22 1 reset \
--ssh \
--ssh-user rpki-rtr \
--ssh-key certs/rtr-client.key \
--ssh-known-hosts certs/known_hosts \
--ssh-subsystem rpki-rtr
参数说明
通用参数:
--timeout <secs>:读取 PDU 超时时间(秒)--poll <secs>:默认自动轮询间隔(秒)--keep-after-error:收到ErrorReport后不暂停自动轮询--summary-only:仅打印摘要,抑制 payload PDU 详细内容
TLS 参数:
--tls--ca-cert <path>--server-name <name>--client-cert <path>--client-key <path>
SSH 参数:
--ssh--ssh-user <name>--ssh-key <path>(OpenSSH 私钥)--ssh-subsystem <name>(默认rpki-rtr)--ssh-known-hosts <path>或--ssh-server-key <path>(二选一,必须提供)
SSH 连通性测试建议
如果你已经在 Docker 中启动了支持 SSH 的 RTR server,可按以下方式验证:
- 先用
ssh命令确认认证与 host key 配置正确(可连通)。 - 再用
rtr_debug_client --ssh发起连接并发送reset。 - 观察是否收到
Cache Response和EndOfData。
如果 rtr_debug_client 报 failed to request SSH subsystem 'rpki-rtr',通常表示服务端未开启对应 subsystem 名称,或名称不一致。
运行时交互命令
客户端启动后可在标准输入中使用:
helpstateversion/version <n>resetserial/serial <sid> <serial>timeout/timeout <secs>poll/poll <secs>/poll pause/poll resumekeep-after-erroroutput/output verbose/output summaryquit