OpenThread 同时提供 SRP 服务器和客户端功能,使设备能够使用作为单播数据包发送的标准 DNS 更新来注册基于 DNS 的服务。此功能可启用基于 DNS 的服务发现。
本指南介绍了使用一些更常用的 srp server
和 srp client
命令的基本任务。
SRP 服务器命令
如需查看 srp server
命令列表,请输入 help
:
srp server help
addrmode
auto
disable
domain
enable
help
host
lease
seqnum
service
state
Done
SRP 客户端命令
如需查看 srp client
命令列表,请输入 help
:
srp client help
autostart
callback
help
host
keyleaseinterval
leaseinterval
service
start
state
stop
ttl
Done
CLI 命令参考文档
如需了解所有命令的说明和语法,请参阅 CLI 命令参考文档。SRP 服务器命令以 srp 服务器 (enable,disable) 的字母顺序开头。SRP 客户端命令以字母顺序 srp client autostart (get) 开头。
Thread Border Router Codelab
OpenThread Border Router Codelab 介绍了如何设置 SRP 客户端终端设备。
一些基本 SRP 命令的概览
可按顺序使用 SRP 服务器和客户端命令执行典型的 SRP 任务:
-
在您创建 Thread 网络后,
srp server enable
会启用 SRP 服务器。 -
srp client host name
设置客户端要使用的主机名。srp client host address (set)
会启用自动主机客户端地址模式,或明确设置主机客户端地址列表。srp client service add
添加具有给定实例名称、服务名称和端口号的服务。srp client autostart enable
表示启用自动启动模式。您也可以通过运行srp client start
手动启动客户端。
-
srp client host
和srp client service
提供了有关客户端主机和服务是否已在客户端节点上成功注册的状态。srp server host
和srp server service
提供服务器节点上的主机和服务状态。
-
srp client service remove
会移除服务,但会保留服务名称。 -
srp client host remove
移除主机和所有已注册的服务。
SRP 服务器和客户端命令用法示例
这些示例使用基本 CLI 命令来设置 Thread 网络、启动 SRP 服务器和客户端、验证服务器状态以及移除服务。示例数据仅作说明之用。
启动 SRP 服务器
启动 SRP 服务器节点:
./output/simulation/bin/ot-cli-ftd 1
设置 Thread 网络,然后通过运行
srp server enable
命令启用 SRP 服务器:dataset init new
Donedataset
Active Timestamp: 1 Channel: 22 Channel Mask: 0x07fff800 Ext PAN ID: 8d6ed7a05a28fb3b Mesh Local Prefix: fded:5114:8263:1fe1::/64 Network Key: 7fcbae4153cc2955c28440c15d4d4219 Network Name: OpenThread-f7af PAN ID: 0xf7af PSKc: b658e40f174e3a11be149b302ef07a0f Security Policy: 672, onrc Donedataset commit active
Doneifconfig up
Donethread start
Donestate
leader Doneipaddr
fded:5114:8263:1fe1:0:ff:fe00:fc00 fded:5114:8263:1fe1:0:ff:fe00:c000 fded:5114:8263:1fe1:68bc:ec03:c1ad:9325 fe80:0:0:0:a8cd:6e23:df3d:4193 Donesrp server enable
Done
启动 SRP 客户端
启动 SRP 客户端节点:
./output/simulation/bin/ot-cli-ftd 2
加入 Thread 网络,设置客户端主机名和地址,然后注册服务:
dataset networkkey 7fcbae4153cc2955c28440c15d4d4219
Donedataset commit active
Doneifconfig up
Donethread start
Donestate
child Doneipaddr
fded:5114:8263:1fe1:0:ff:fe00:c001 fded:5114:8263:1fe1:44f9:cc06:4a2d:534 fe80:0:0:0:38dd:fdf7:5fd:24e Donesrp client host name my-host
Donesrp client host address fded:5114:8263:1fe1:44f9:cc06:4a2d:534
Donesrp client service add my-service _ipps._tcp 12345
Donesrp client autostart enable
Done如上所示,使用
srp client autostart enable
命令在客户端上启用自动启动模式。客户端会监控网络数据以发现 Thread 网络中可用的 SRP 服务器,然后客户端会自动启动。如果手动启动客户端,请运行以下命令,并在其中包含 SRP 地址和端口:
srp client start fded:5114:8263:1fe1:68bc:ec03:c1ad:9325 49154
Done在上述示例中,监听 UDP 端口的 SRP 服务器为
c002(49154)
。
验证服务状态
检查主机和服务是否已成功在客户端节点上注册:
srp client host
name:"my-host", state:Registered, addrs:[fded:5114:8263:1fe1:44f9:cc06:4a2d:534] Donesrp client service
instance:"my-service", name:"_ipps._tcp", state:Registered, port:12345, priority:0, weight:0 Done确保输出结果中主机和服务命令均显示
state:Registered
,如上例所示。检查服务器节点上的主机和服务:
srp server host
my-host.default.service.arpa. deleted: false addresses: [fded:5114:8263:1fe1:44f9:cc06:4a2d:534] Donesrp server service
my-service._ipps._tcp.default.service.arpa. deleted: false port: 12345 priority: 0 weight: 0 ttl: 7200 lease: 7200 key-lease: 1209600 TXT: [] host: my-host.default.service.arpa. addresses: [fded:5114:8263:1fe1:44f9:cc06:4a2d:534] Done确保输出结果中
srp server host
和srp server service
命令的均显示deleted: false
,如上例所示。
移除服务
通过客户端节点移除服务:
srp client service remove my-service _ipps._tcp
Done通过服务器节点确认该服务已被移除:
srp server service
my-service._ipps._tcp.default.service.arpa. deleted: true Done由于服务名称未移除,因此服务条目列在输出中。
移除主机名和服务名称
移除主机及其所有已注册的服务:
srp client host remove 1
Done在服务器节点上确认未列出主机或服务条目:
srp server host
Donesrp server service
Done >