加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
    • #网络拓扑
    • #OpenVPN 服务器部署
    • #OpenVPN 管理客户端设置
    • #OpenVPN 客户端在LoRa网关上的设置
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

RAK工业LPWAN网关的远程管理-OpenVPN

2022/09/08
2033
阅读需 31 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

本文介绍了基于OpenVPN对RAK工业LPWAN网关的远程管理。在部署的服务器上创建虚拟专用网络(VPN),网关和任意数量的客户设备(比如:PC和电话)都可以通过公共IP地址连接到此虚拟专用网络。这样可以实现使用网关所支持的任意回程连接选项(以太网、Wi-Fi、LTE)。

RAK系列网关引用了开源的OpenVPN协议,支持将LoRaWAN网关通过加密的OpenVPN隧道接入到OpenVPN网络中,同时解决了通信加密和网关维护管理问题。对于支持VPN功能的LoRaWAN网关,我们就可以利用VPN来对LoRaWAN网关进行远程的管理和维护,并且,由于VPN本身的保密特性,对网关的这种远程管理和维护过程可以是加密和安全的。

OpenVPN 服务器部署

OpenVPN 管理客户端的设置

OpenVPN 客户端在LoRa网关上的设置

#网络拓扑

下面为虚拟局域网网络拓扑

Figure 1: 网络拓扑

 

在实际应用中,需要使用到多个LoRa网关(图中仅以4个网关示例),并且每个网关布置在不同的位置,相隔可能比较远。这就需要一台必须满足可使用公共IP访问的Linux主机作为OpenVPN服务器。

另外还需要有一台LoRa网络服务器,LoRa网络服务器承担的是正常的LoRa网络中用于接收网关发送的数据和用于给网关下发指令的角色。网络维护PC则是用户的电脑,用于基于VPN功能来对散布到各地的LoRa网关进行管理和维护。

#OpenVPN 服务器部署

在OpenVPN 服务器部署前,请确保已创建运行Ubuntu Server 18.04 LTS系统的AWS EC2实例。如果为未创建,请参考Amazon Web服务配置章节。

若已完成上述实例配置操作,请执行以下命令:

1、安装OpenVPN。

sudo apt install openvpn -y

2、下载证书管理工具套件:Easy RSA。

wget https://github.com/OpenVPN/easy-rsa/archive/v3.0.6.tar.gz -O easyrsa.tar.gz

3、初始化Easy RSA,生成CA证书和服务器证书。

解压easyrsa并将其复制到文件夹“/etc/openvpn/easyrsa/”

sudo mkdir -p /etc/openvpn/easyrsa 
tar zxvf easyrsa.tar.gz 
sudo cp -rf easy-rsa-3.0.6/easyrsa3/* /etc/openvpn/easyrsa/

初始化pki。

cd /etc/openvpn/easyrsa
sudo ./easyrsa init-pki

生成CA证书。

sudo ./easyrsa build-ca

注意:此过程需要设置密码,请妥善保存此密码。

生成服务器证书。

sudo ./easyrsa build-server-full server nopass

生成DH(Diffie-Hellman)参数文件。

sudo ./easyrsa gen-dh

生成crl.pem文件。

sudo ./easyrsa gen-crl

4、生成OpenVPN服务器配置文件并启动OpenVPN服务器。

创建OpenVPN服务器配置文件路径,文件路径必须为:

sudo mkdir -p /etc/openvpn/server

创建并编辑配置文件:

sudo nano /etc/openvpn/server/config.ovpn

配置信息:

# OpenVPN服务器
cd /etc/openvpn/server
daemon
dev tap
proto udp

#要绑定的本地私有IP地址。
local private_address 
port 1194

server-bridge 10.0.8.1 255.255.255.0 10.0.8.11 10.0.8.100
ifconfig-pool-persist ip_pool.txt
up interface-up.sh
client-to-client
keepalive 10 120
comp-lzo
user root
group root
persist-key
persist-tun
cipher AES-256-CBC
ca /etc/openvpn/easyrsa/pki/ca.crt
cert /etc/openvpn/easyrsa/pki/issued/server.crt
key /etc/openvpn/easyrsa/pki/private/server.key
dh /etc/openvpn/easyrsa/pki/dh.pem
crl-verify /etc/openvpn/easyrsa/pki/crl.pem

status /var/log/openvpn-status-server.log
log /var/log/openvpn-server.log
verb 3
script-security 2

注意:将本地私有IP地址(配置信息中的private_address)更改为AWS实例的私有IP地址。


Figure 2: AWS实例私有IP

 

注意:在AWS安全组中为UDP端口1194添加入站规则。

Figure 3: 安全组入站规则

编辑完成后,“Ctrl+X”退出编辑,在弹出的询问信息中,键入字母“Y”保存编辑信息,然后按“Enter”键退出编辑界面。

创建虚拟TAP接口,并编辑interface-up.sh。

sudo nano /etc/openvpn/server/interface-up.sh

将以下内容编辑到interface-up.sh文件中。


#!/bin/sh

/sbin/ifconfig $1 10.0.8.1 netmask 255.255.255.0 broadcast 10.0.8.0

执行以下命令使脚本文件可执行。

sudo chmod +x /etc/openvpn/server/interface-up.sh

5、启动OpenVPN。

启动运行在实例上的OpenVPN,请执行以下命令。

sudo systemctl start openvpn

执行以下命令以启动TAP接口。

sudo openvpn --config /etc/openvpn/server/config.ovpn

注意:如果需要OpenVPN自动执行配置文件,将config.ovpn重新命名为config.conf并放置在文件夹“/etc/openvpn”下。

cd /etc/openvpn/server

sudo mv config.ovpn /etc/openvpn/config.conf

这样,如果操作系统重启,OpenVPN将自动加载TAP接口。

查看OpenVPN服务是否启动,可执行如下命令。

service openvpn status

6、检查TAP0接口是否启动,执行以下命令。

ifconfig tap0

如果TAP0接口已启动并正在运行,可看到如下输出。

tap0: flags=4163  mtu 1500

        inet 10.0.8.1  netmask 255.255.255.0  broadcast 10.0.8.0
        ether 3a:37:f6:5a:bb:32  txqueuelen 100  (Ethernet)
        RX packets 45125  bytes 8292906 (7.9 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 16611  bytes 2205218 (2.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

#OpenVPN 管理客户端设置

1、生成OpenVPN服务器客户端认证。

cd /etc/openvpn/easyrsa
# ./easyrsa build-client-full <客户端名称> nopass
sudo ./easyrsa build-client-full managment nopass


# 更新认证控制文件

sudo ./easyrsa gen-crl

注意:上述代码中的“managment”为客户端PC的名称,请根据实际需求修改。

2、OpenVPN客户端配置文件路径。

注意:

以下列表是配置文件及其对应的名称。

= CA 认证
= 客户端认证
=客户端密钥

认证配置文件位置

CA认证:

/etc/openvpn/easyrsa/pki/ca.crt

客户端认证:

/etc/openvpn/easyrsa/pki/issued/{client_name}.crt

客户端密钥:

/etc/openvpn/easyrsa/pki/private/{client_name}.key

3、在PC上打开文本编辑器,将以下模板内容复制到文本中。

dev tap
client
remote public_address 1194
proto udp
nobind
auth-nocache 
cipher AES-256-CBC
resolv-retry infinite

persist-key
persist-tun

remote-cert-tls server

comp-lzo
verb 3


#从OpenVPN服务器的/etc/openvpn/easyrsa/pki/ca.crt中复制


-----BEGIN CERTIFICATE-----

MIIDNTCCAh2gAwIBAgIJANYEjCM+cqsxMA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
BAMMC1JBS1dpcmVsZXNzMB4XDTE5MTEyNTAxMzIyOVoXDTI5MTEyMjAxMzIyOVow
FjEUMBIGA1UEAwwLUkFLV2lyZWxlc3MwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
ggEKAoIBAQDZS/8PCehr3TSTvidQLFVYT5EydKDVidEUm6/yOE0BZs99kZKGn6eF
mFQnBfve4mAHzPnC3amiuCh+01kf97P7MDpS/cYTdR9RB9Xng/jyBQqMVVHLbwoG
IS7mQmBpV0NdU8RYKsLCARPn50eRGiL2AS6cPDSjrrj2xsBEydTsjE/95gJ7AvWQ
RPRoVTI9S31mY6tLrs16zydtEXWicDVaRFkvultijCmCiUhfaDE8lt1dQxd5jkvw
cHtm1EBdHjyce7oXa+Og0p2c5EmTb1K2pjHZHG0jINv9lErC049g/ey7CcddDd+Q
Bm7fqArIaov7kk+U7zKhBrTVH3dmPWEHAgMBAAGjgYUwgYIwHQYDVR0OBBYEFLd+
eVD4IqyA84ABBeFupjEV0+bOMEYGA1UdIwQ/MD2AFLd+eVD4IqyA84ABBeFupjEV
0+bOoRqkGDAWMRQwEgYDVQQDDAtSQUtXaXJlbGVzc4IJANYEjCM+cqsxMAwGA1Ud
EwQFMAMBAf8wCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQABFT6ZgK7Y
tM5tZEfEKSCMUxfESJ+4pPN2lryZVskXtD6BfjvKkQpj3A+R6MRNloOPvZ4spAvH
5fFvfI97Ts40rQjWpgPLQDEBcgBi6dzzmMSap/iw9wLtgqWFVm+LXPMHQnqBKfs2
HksTlKOhiKZlvtGYfxay6kbMU35LX8WdRxx8JNvRNIDL68lLdreXB7vTKQYAvcKP
o1GuZFqKV2KFxpjxzLg1BeM3U4X5k4xDQDaOHENKJO4pdWBfMLP3AAyC9wq481PO
hgA1R8ZAt+psYxOAB6O3A1SzDJ/df5ciPdsp1Kia0HCB2cGIZ7ZwfzPDNivH8/bT
n7UOb+khvmsD
-----END CERTIFICATE-----

# 客户端认证PEM

# 从OpenVPN服务器的/etc/openvpn/easyrsa/pki/issued/managment.crt中复制

-----BEGIN CERTIFICATE-----

MIIDTzCCAjegAwIBAgIQVm22YDcNRRzycbFHSEkkFjANBgkqhkiG9w0BAQsFADAW
MRQwEgYDVQQDDAtSQUtXaXJlbGVzczAeFw0yMDAyMDUwMjI5MzZaFw0yMzAxMjAw
MjI5MzZaMBcxFTATBgNVBAMMDFJBSzcyNThfNjY2NjCCASIwDQYJKoZIhvcNAQEB
BQADggEPADCCAQoCggEBAK53T6vlbm4xVgM5z8fC6ul5WsdT3gfEGEOKu0MWcxq4
YP0jrhXAwJV20EdUXYiFIOdf9woYvv8ANTFYHIBAT+jZrGhbhph7QSzmb1xzc3g/
nGJVJAW7L10EmQ0mSsi64NTv/8Ou7wZQpqd8+FuIjDbMFJMP24GbqswG6nnhJCST
1b1hfAgijK/dagRFJTcYhJcutwJrpUjhdAwVBG/GuXQwyI82WXzpqvVyfPgCb4Ek
9ehHuA1Zsmgp68ChGFM+WrEZ1sETDlxlNAfsON7hihf3xYZ2iZ/6rq5RpUczJm3P
9dxO74I8/dxe9TnNcIvqasxGg3jZW4UvQyATqnb+z5kCAwEAAaOBlzCBlDAJBgNV
HRMEAjAAMB0GA1UdDgQWBBRQkqjMkMV4u8R0EKDDG08qjxJb4TBGBgNVHSMEPzA9
gBS3fnlQ+CKsgPOAAQXhbqYxFdPmzqEapBgwFjEUMBIGA1UEAwwLUkFLV2lyZWxl
c3OCCQDWBIwjPnK67dATBgNVHSUEDDAKBggrBgEFBQcDAjALBgNVHQ8EBAMCB4Aw
DQYJKoZIhvcNAQELBQADggEBAGDGH6+b1EGkVj//EDyJUBISWWcXC8EwmrT25Tga
WDid21QQatQahriVOFHu0B7DGSJb6kw4Om8Mz+kef1v529VIip56wP4I7aVQdcTg
SoVBCc0ToXxGO+EXPWc0jBwPReofMzYeaZ+hZcSHeFOYAso5aFSMfk5Z7qwYQfaj
ZQ7AdTj2NcxH92bIv7JUzW6Xh8OcTuTzQd4J2dtJr4ObnRkYrqg27dzlV1dz73hJ
JIs7AXUH4wivehV3VGd95am6ejs4Hedhaw23h+pV91LmG4gdb6EPHm0JPCHbaQAb
JzF75JEh0CLOlDFBK419Dgg10n0gqLkSTcp+CzNlCx7k+24=
-----END CERTIFICATE-----

# 客户端密钥PEM

# 从OpenVPN服务器的/etc/openvpn/easyrsa/pki/private/managment.key中复制


-----BEGIN PRIVATE KEY-----

MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCvGn7m5bOmoZE6
/xuZmRFoa3TqD/MXp19TQAuYGBQlLmaygxKfZWZAMny+zONgM0wmRAdDPvuNxeQ4
4XEwuW6uEPMEpPlPlUCOvSXUqx6WQL/83je5gxihUusl83iIjStFDStUfyEu+t6F
arSsmuUsRb6GFd/uhG8HS4j374Zd+WF+lD946XIdCIZ25DrTaYy7mEqUCC1aXDat
XLgwREv18aLLypJPctEkLhNKgdCnHyp9hDwKQSX1CFsMY9W0AMnFaxNhgHKIDN9V
Fi9rZCD5MrRAn88h7cP1widVZxDKFJUwN0We39tDP5zlGC+h+k35u2bVCHTi8DYh
qILDUZu1AgMBAAECggEBAJEcvB5OLlvheaIS2KSqHasTooh3P1ZS9sTfRrx89/T4
R1OZHE3MkriRHqBg2+5VlL4BkqNABuivHzukWVGv2vGWSk+HCLXTUvT3++oLBgYv
EuxUnIm5Ayhut0F0TGed1kYba9VSpgVxEggvLhv9If9WrVYhurrINdst1gzjC8/E
BEgOx3ygXucUyUTi94AvLqNIqxJkjgsnb6LOTxM1dneqDP3165wr24E5aBQInNS6
vpWhNJ8xj1sF3OjqI347Su2Wpff880c6rOVedP816+Md2EZd5Fvtur4tLW9OV7LG
UbznARegWIOecZQ9Tl3M+gQe5Pu6rgLt7dM4VXADOQECgYEA4djOOY5CJWC4yW3X
g0sGeR2ATB4tlBU2GHmeOk9ZQHZn6Rf5oGiyyHt7Z2tUMuxl0KFWRkCEr1XQbYVQ
6Vfj68zBTyWu4JpEf/Qcc7q2HAu/pSAbCdKn32/0nNEWnxVXZ7VzDfpgTh31v2Xt
dUsSfg/ThJMED9wYYukrwixySb0CgYEAxntWaM8NSI11714jBPhi2x6H2AV8U5ZF
U7yr99tkMWiInCOlAfSEHgP3Szz0clcGowy19mO07bhYW2ooBN5JZRM9ah4qlVcv
tf53XYGk4RmY8JBLQMuC33ONdUQeCH7JwDlgkH08xQxLAnnHqBL6QJSHzGmcuht9
Dug3LYa67VkCgYEArRj0hpyICgnl10y+3zxDi9SWnsCKgnL3cS7VnS9v4r5dygO8
KbvVO1+ZJ5zVfeo95vehHlsY1yHYi/igGRhp8jKO/tCNBkx2r/MzU2gJZ9mBW1gO
ISs5y0ENpJuE0Q0UXsJtmosKARVpYvcGVt3hIImUvonHlThF4JmCFmLmfakCgYBM
9JFCPdVGpiJt1q/5Q10A3EuLREU6G29x0htTFGs6hO9CqsdVhLqc8Ki3MUEN/BQE
r+71Qx9pdCo992Dg0lbeq6EKPfwAvzcudyVMyfFlnYkg7LFgxAdQH/te1jRW0uHi
d9yq6QPg2q1Snmj9D66bz3r/lItB1VqdpweNzUk4sQKBgHNniy9Ygm1H5mswsOfw
wogfHxko+sJFPHquBAH2A01MdVnHkLekQ6jAQhOIByRQLatc0eug9g/YZJTbYE7A
GvuFUaQioCog5xHSukNJxR0jrIJeb1r7asgEI07dfN3a8OoaX5leoDqoKF1u1emI
G1C1WpE9JTWEQd2hlcIAC4Ot
-----END PRIVATE KEY-----

注意

  • 将远程IP地址(public_address)修改为AWS实例公用IP。
  • 将上述认证配置文件路径中的认证文件内容复制到模板对应的认证内容位置。

Figure 4: AWS实例公用IP

 

4、将文件保存命名为management_client.ovpn。

5、OpenVPN PC客户端。

下载并安装OpenVPN客户端 。

启动OpenVPN GUI客户端。可在任务栏中看到如下图标。

Figure 5: Open VPN任务图标

 

右击“Import file”,选择导入配置文件并打开“management_client.ovpn”文件。

Figure 6: 导入OpenVPN客户端文件

 

再次右击图标进入OpenVPN菜单,单击“Connect” (它不会自动启动)。


Figure 7: 打开VPN连接启动

Figure 8: Open VPN已连接

 

图中OpenVPN客户端图标变为绿色,表示已成功连接。在Ubuntu控制台执行以下命令可以查看当前连接到OpenVPN服务器的客户端及其对应的IP地址。

sudo nano /etc/openvpn/server/ip_pool.txt 

Figure 9: OpenVPN已连接的客户端1

图中只显示了一个客户端及其IP地址。此客户端是连接到OpenVPN服务器的PC。如果配置好网关,网关也会显示在其中。

#OpenVPN 客户端在LoRa网关上的设置

网关密钥生成的步骤和管理客户端密钥生成步骤除了客户端名称(client-name)这一参数不同,其他均相同。

生成网关OpenVPN客户端认证及认证配置文件,可参考OpenVPN 管理客户端设置中的步骤1~2。

注意:

切记将客户端名称“management”修改为网关名称,比如rak7258-001。

认证生成单独的文件后,将文件内容导入到网关的OpenVPN客户端部分。

1、通过Web UI在本地登录网关 。

  • 访问Web UI,须确保本地网络可以访问并连接到网关
  • 在左侧导航树中,进入“Services> OpenVPN Tunnels”。在参数配置框中,输入OpenVPN Tunnels的名称。在下拉菜单中选择“Custom Openvpn Configuration”。

Figure 10: 创建OpenVPN隧道

 

  • 完成后单击“Add”。
  • 在“Configuration”窗口中,将上述已创建客户端配置文件中的内容复制到此窗口中,单击“Save 和 Apply”。如下图所示:

 

Figure 11: 导入OpenVPN认证数据

 

  • 在“OpenVPN Tunnels”窗口中,将“Enable开关打开,单击“Save & Apply”。完成网关侧的配置,此过程可能需要几分钟才能完成。

Figure 12: 使能OpenVPN

 

  • 在OpenVPN服务器上的客户端列表文件中再次检查网关的IP地址。

sudo nano /etc/openvpn/server/ip_pool.txt 

Figure 13: OpenVPN已连接的客户端2

如上图,网关的IP地址已显示在文件中的第二行。

2、远程登录网关。

现在可使用OpenVPN服务器分配的IP地址(如上图中的IP地址10.0.8.12)远程登录网关。这可用于SSH2连接、Web UI(通过浏览器),以及许多其他应用程序

相关推荐

电子产业图谱

瑞科慧联(RAK)是领先业界的物联网应用与服务提供商,专注于低功耗广域网络系统方案,致力于为系统集成商、应用开发商提供产品和解决方案。