使用 OT CLI 設定服務註冊通訊協定 (SRP) 伺服器與用戶端連線

前往 GitHub 查看原始碼

OpenThread 同時提供 SRP 伺服器和用戶端功能,可讓裝置使用以單點傳播封包的形式傳送標準 DNS 更新來註冊 DNS 服務。這項功能會啟用 DNS 式服務探索。

本指南提供使用一些較常見的 srp serversrp 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 邊界路由器程式碼研究室

OpenThread 邊界路由器程式碼研究室提供如何設定 SRP 用戶端終端裝置的相關資訊。

一些基本的 SRP 指令總覽

SRP 伺服器和用戶端指令可以依序使用,以執行一般 SRP 工作:

  1. 啟動 SRP 伺服器

    建立 Thread 網路後,srp server enable 會啟用 SRP 伺服器。

  2. 啟動 SRP 客戶

    • srp client host name 會設定用戶端要使用的主機名稱。

    • srp client host address (set) 可以啟用自動主機用戶端位址模式,或明確設定主機用戶端位址清單。

    • srp client service add 會新增具有指定執行個體名稱、服務名稱和通訊埠編號的服務。

    • srp client autostart enable 可啟用自動開始模式。您也可以執行 srp client start 來手動啟動用戶端。

  3. 驗證服務狀態

    • srp client hostsrp client service 會提供狀態,指出用戶端主機和服務是否已成功在用戶端節點上註冊。

    • srp server hostsrp server service 提供伺服器節點上的主機和服務狀態。

  4. 移除服務

    srp client service remove 會移除服務,但保留服務名稱。

  5. 移除主機和服務名稱

    srp client host remove 會移除主機和所有已註冊的服務。

SRP 伺服器和用戶端指令的使用範例

這些範例使用基本的 CLI 指令設定 Thread 網路、啟動 SRP 伺服器和用戶端、驗證伺服器狀態,以及移除服務。範例資料僅供參考。

啟動 SRP 伺服器

  1. 啟動 SRP 伺服器節點:

    ./output/simulation/bin/ot-cli-ftd 1
    
  2. 設定 Thread 網路,然後執行 srp server enable 指令啟用 SRP 伺服器:

    dataset init new
    Done
    dataset
    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
    Done
    dataset commit active
    Done
    ifconfig up
    Done
    thread start
    Done
    state
    leader
    Done
    ipaddr
    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
    Done
    srp server enable
    Done
    

啟動 SRP 客戶

  1. 啟動 SRP 用戶端節點:

    ./output/simulation/bin/ot-cli-ftd 2
    
  2. 加入 Thread 網路、設定用戶端主機名稱和位址,以及註冊服務:

    dataset networkkey 7fcbae4153cc2955c28440c15d4d4219
    Done
    dataset commit active
    Done
    ifconfig up
    Done
    thread start
    Done
    state
    child
    Done
    ipaddr
    fded:5114:8263:1fe1:0:ff:fe00:c001
    fded:5114:8263:1fe1:44f9:cc06:4a2d:534
    fe80:0:0:0:38dd:fdf7:5fd:24e
    Done
    srp client host name my-host
    Done
    srp client host address fded:5114:8263:1fe1:44f9:cc06:4a2d:534
    Done
    srp client service add my-service _ipps._tcp 12345
    Done
    srp client autostart enable
    Done
    

    如上所示,使用 srp client autostart enable 指令在用戶端啟用自動啟動模式。用戶端會監控網路資料,找出 Thread 網路中的可用 SRP 伺服器,然後用戶端會自動自行啟動。

  3. 如果手動啟動用戶端,請執行以下指令,並加入 SRP 位址和通訊埠:

    srp client start fded:5114:8263:1fe1:68bc:ec03:c1ad:9325 49154
    Done
    

    在上例中,監聽 UDP 通訊埠的 SRP 伺服器是 c002(49154)

驗證服務狀態

  1. 檢查主機和服務是否已成功在用戶端節點上註冊:

    srp client host
    name:"my-host", state:Registered, addrs:[fded:5114:8263:1fe1:44f9:cc06:4a2d:534]
    Done
    srp client service
    instance:"my-service", name:"_ipps._tcp", state:Registered, port:12345, priority:0, weight:0
    Done
    

    確認主機和服務指令的輸出內容顯示 state:Registered,如上例所示。

  2. 檢查伺服器節點的主機和服務:

    srp server host
    my-host.default.service.arpa.
    deleted: false 
    addresses: [fded:5114:8263:1fe1:44f9:cc06:4a2d:534]
    Done
    srp 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 hostsrp server service 指令的輸出內容顯示 deleted: false,如上例所示。

移除服務

  1. 透過用戶端節點移除服務:

    srp client service remove my-service _ipps._tcp
    Done
    
  2. 透過伺服器節點,確認服務已經移除:

    srp server service
    my-service._ipps._tcp.default.service.arpa.
    deleted: true
    Done
    

    服務項目會列在輸出內容中,因為服務名稱並未移除。

移除主機和服務名稱

  1. 移除主機及其所有已註冊的服務:

    srp client host remove 1
    Done
    
  2. 確認伺服器節點上未列出主機或服務項目:

    srp server host
    Done
    srp server service
    Done
    >