如何配置GDO51和GDI51网关通过Basic Station连接到ChirpStack平台

在构建 LoRaWAN 物联网系统时,选择合适的网络服务器(NS)与网关进行对接是关键一步。ChirpStack 作为一款开源、灵活且功能强大的 LoRaWAN 网络服务器解决方案,被广泛应用于各类私有或企业级 LoRaWAN 网络部署中。

门思科技(Manthink)推出的 GDO51 系列室外网关GDI51 系列室内网关 均基于 Ubuntu 系统打造,具备强大的边缘计算能力与协议兼容性,支持包括 Basic Station、GWMP、TTN、ChirpStack Packet Forwarder 等多种主流协议接入方式。本文将重点介绍如何使用 Basic Station LNS 协议 将门思科技的 GDO51/GDI51 网关安全地连接至 ChirpStack 平台,并涵盖 TLS 加密配置全流程。

1. 概述:为什么选择 Basic Station?

LoRa Alliance 推出的 Basic Station 是一种现代化的 LoRaWAN 网关协议,相较于传统的 UDP Packet Forwarder 模式,它具有以下优势:

  • 更高效的通信机制(基于 WebSocket)
  • 支持动态频率更新(CUPS)
  • 内建加密传输(TLS)
  • 更好的网络管理与远程配置能力

需要注意的是,ChirpStack 目前仅支持 ​ basicstation-lns ​ 协议模式,不支持 ​ basicstation-cups。因此,在配置过程中需确保使用正确的协议类型。

此外,在开始前请确认你的 ChirpStack 是否启用了 ​TLS 加密​,这将决定后续网关证书的配置方式。

2. ChirpStack 未启用 TLS 加密:基础连接配置

2.1. ChirpStack 配置检查

basicstation-lns 的支持由 chirpstack-gateway-bridge 组件实现。打开其配置文件(通常位于 /etc/chirpstack-gateway-bridge/chirpstack-gateway-bridge.toml),检查以下字段是否为空:

toml 复制代码
tls_cert = ""
tls_key = ""
ca_cert = ""

若以上三项均为空,则表示当前为 ​**非加密模式(明文传输)**​,适用于局域网测试环境。

⚠️ 注意:生产环境中建议始终启用 TLS 以保障数据安全。

2.2. GDO51/GDI51 网关配置步骤

  1. 使用电脑连接网关 Wi-Fi(SSID 格式为 GDO51x - <DEVEUI>GDI51x - <DEVEUI>,默认密码:wifi!0804
  2. 浏览器访问:http://192.158.1.1,登录 WebConfigure(默认密码:wifi!0804
  3. 进入菜单:Gateway Configuration → LoRaWAN Server
  4. 设置如下参数:
  • nsProtocol : basicstation_lns
  • uri : ws://<ChirpStack服务器IP>:3001 示例:ws://192.168.1.142:3001(端口默认为 3001,可在 bridge 配置中修改)
  • trust / cert / key: 不填写
  1. 点击 Submit 保存设置

✅ 配置完成后,网关会尝试通过 WebSocket 明文连接 ChirpStack。你可以在 ChirpStack 的 Gateway 页面查看网关状态是否在线。

3. ChirpStack 启用 TLS 加密:安全连接配置

为了提升安全性,推荐在正式部署中启用 TLS 加密。根据 CA 证书配置情况,可分为两种模式:

模式 描述
TLS 单向认证 仅验证服务器身份,网关无需证书
TLS 双向认证 服务器与网关互相验证身份,更安全

3.1. ChirpStack TLS 配置判断

查看 chirpstack-gateway-bridge.toml 文件中的 TLS 相关配置:

toml 复制代码
tls_cert = "/path/to/server.crt"
tls_key = "/path/to/server.key"
ca_cert = "/path/to/ca.crt"  # 若存在此行,则启用双向认证
  • ✅ 若 ca_cert 已配置 → 启用双向认证
  • ❌ 若 ca_cert 未配置 → 单向认证

3.2. 生成客户端证书(用于双向认证)

当启用双向认证时,必须为每个网关签发客户端证书,且 Common Name (CN) 必须设置为网关的 EUI(HEX 格式,如 5a53012a00000288)。

3.2.1. 准备工作:安装 OpenSSL

bash 复制代码
# Ubuntu/Debian
sudo apt update && sudo apt install openssl -y

# CentOS/RHEL
sudo yum install openssl -y
3.2.1.1. 创建自签名 CA 证书
bash 复制代码
# 生成CA私钥(带密码保护)
openssl genpkey -algorithm RSA -out ca.key -aes256

# 生成CA根证书(有效期365天)
openssl req -x509 -new -nodes -key ca.key -sha256 -days 365 -out ca.crt

执行时会提示输入国家、组织名等信息,请如实填写。

3.2.1.2. 生成服务器证书
bash 复制代码
# 生成服务器私钥
openssl genpkey -algorithm RSA -out server.key

# 生成CSR请求
openssl req -new -key server.key -out server.csr

📌 在 Common Name (CN) 中填入 ChirpStack 服务器的域名或 IP 地址(如 chirpstack.local192.168.1.142

bash 复制代码
# 使用CA签署服务器证书
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365 -sha256

3.2.2. 配置 ChirpStack Gateway Bridge

编辑 /etc/chirpstack-gateway-bridge/chirpstack-gateway-bridge.toml

toml 复制代码
tls_cert = "/path/to/server.crt"
tls_key = "/path/to/server.key"
ca_cert = "/path/to/ca.crt"  # 启用双向认证必需

重启服务生效:

bash 复制代码
sudo systemctl restart chirpstack-gateway-bridge

3.2.3. 生成客户端证书(网关证书)

bash 复制代码
# 生成客户端私钥
openssl genpkey -algorithm RSA -out client.key

# 生成CSR
openssl req -new -key client.key -out client.csr

📌 关键步骤:在 Common Name (CN) 字段中输入网关的 ​**EUI(小写 HEX 格式)**​,例如:5a53012a00000288

bash 复制代码
# 使用CA签署客户端证书
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 365 -sha256

得到三个关键文件:

  • ca.crt:CA 根证书
  • client.crt:客户端证书(给网关用)
  • client.key:客户端私钥

3.3. GDO51/GDI51 网关配置(TLS 模式)

  1. 登录 WebConfigure
  2. 进入:Gateway Configuration → LoRaWAN Server
  3. 配置如下:
参数
nsProtocol basicstation_lns
uri wss://<服务器IP或域名>:3001(注意是 wss
trust ca.crt 内容粘贴至此
cert (仅双向认证需要)粘贴 client.crt 内容
key (仅双向认证需要)粘贴 client.key 内容
  1. 点击 Submit 保存并重启网关

4. 验证连接状态

完成配置后,可通过以下方式验证:

  1. 在 ChirpStack Web UI 查看网关是否上线
  2. 在网关 WebConfigure 的 State → Statistics 页面查看连接状态
  3. 使用 Wireshark 抓包分析 WSS 流量(可选)

5. 联系我们

网址:www.manthink.cn

邮箱:info@manthink.cn

电话:+86-15810684257

相关推荐
胖鱼罐头5 小时前
Android-尺寸单位换算全解析
前端
不一样的少年_5 小时前
别再无脑装插件了!你的浏览器扩展可能正在“偷家”
前端·安全·浏览器
猪哥帅过吴彦祖5 小时前
第 3 篇:让图形动起来 - WebGL 2D 变换
前端·javascript·webgl
Linsk5 小时前
如何实现TypeScript级的polyfill自动引入
前端·typescript·前端工程化
林希_Rachel_傻希希5 小时前
一文搞懂 JavaScript 数组非破坏性方法:slice、indexOf、join 你都懂了吗?
前端·javascript
_AaronWong5 小时前
分享一个平常用的工具包:前端开发实用工具函数集合
前端·javascript·vue.js
我是天龙_绍5 小时前
vue2数据响应式
前端
猪哥帅过吴彦祖5 小时前
Flutter 系列教程:Dart 语言快速入门 (下)
前端·flutter·ios
西瓜啵啵奶茶5 小时前
Siderbar和Navbar
前端