本文介紹了基于OpenVPN對(duì)RAK工業(yè)LPWAN網(wǎng)關(guān)的遠(yuǎn)程管理。在部署的服務(wù)器上創(chuàng)建虛擬專用網(wǎng)絡(luò)(VPN),網(wǎng)關(guān)和任意數(shù)量的客戶設(shè)備(比如:PC和電話)都可以通過公共IP地址連接到此虛擬專用網(wǎng)絡(luò)。這樣可以實(shí)現(xiàn)使用網(wǎng)關(guān)所支持的任意回程連接選項(xiàng)(以太網(wǎng)、Wi-Fi、LTE)。
RAK系列網(wǎng)關(guān)引用了開源的OpenVPN協(xié)議,支持將LoRaWAN網(wǎng)關(guān)通過加密的OpenVPN隧道接入到OpenVPN網(wǎng)絡(luò)中,同時(shí)解決了通信加密和網(wǎng)關(guān)維護(hù)管理問題。對(duì)于支持VPN功能的LoRaWAN網(wǎng)關(guān),我們就可以利用VPN來對(duì)LoRaWAN網(wǎng)關(guān)進(jìn)行遠(yuǎn)程的管理和維護(hù),并且,由于VPN本身的保密特性,對(duì)網(wǎng)關(guān)的這種遠(yuǎn)程管理和維護(hù)過程可以是加密和安全的。
- OpenVPN 服務(wù)器部署
- OpenVPN 管理客戶端的設(shè)置
- OpenVPN 客戶端在LoRa網(wǎng)關(guān)上的設(shè)置
#網(wǎng)絡(luò)拓?fù)?/strong>
下面為虛擬局域網(wǎng)的網(wǎng)絡(luò)拓?fù)洹?/p>在實(shí)際應(yīng)用中,需要使用到多個(gè)LoRa網(wǎng)關(guān)(圖中僅以4個(gè)網(wǎng)關(guān)示例),并且每個(gè)網(wǎng)關(guān)布置在不同的位置,相隔可能比較遠(yuǎn)。這就需要一臺(tái)必須滿足可使用公共IP訪問的Linux主機(jī)作為OpenVPN服務(wù)器。
另外還需要有一臺(tái)LoRa網(wǎng)絡(luò)服務(wù)器,LoRa網(wǎng)絡(luò)服務(wù)器承擔(dān)的是正常的LoRa網(wǎng)絡(luò)中用于接收網(wǎng)關(guān)發(fā)送的數(shù)據(jù)和用于給網(wǎng)關(guān)下發(fā)指令的角色。網(wǎng)絡(luò)維護(hù)PC則是用戶的電腦,用于基于VPN功能來對(duì)散布到各地的LoRa網(wǎng)關(guān)進(jìn)行管理和維護(hù)。
#OpenVPN 服務(wù)器部署
在OpenVPN 服務(wù)器部署前,請(qǐng)確保已創(chuàng)建運(yùn)行Ubuntu Server 18.04 LTS系統(tǒng)的AWS EC2實(shí)例。如果為未創(chuàng)建,請(qǐng)參考Amazon Web服務(wù)配置章節(jié)。
若已完成上述實(shí)例配置操作,請(qǐng)執(zhí)行以下命令:
1、安裝OpenVPN。
sudo apt install openvpn -y
wget https://github.com/OpenVPN/easy-rsa/archive/v3.0.6.tar.gz -O easyrsa.tar.gz
3、初始化Easy RSA,生成CA證書和服務(wù)器證書。
- 解壓easyrsa并將其復(fù)制到文件夾“/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
注意:此過程需要設(shè)置密碼,請(qǐng)妥善保存此密碼。
- 生成服務(wù)器證書。
sudo ./easyrsa build-server-full server nopass
- 生成DH(Diffie-Hellman)參數(shù)文件。
sudo ./easyrsa gen-dh
- 生成crl.pem文件。
sudo ./easyrsa gen-crl
4、生成OpenVPN服務(wù)器配置文件并啟動(dòng)OpenVPN服務(wù)器。
- 創(chuàng)建OpenVPN服務(wù)器配置文件路徑,文件路徑必須為:
sudo mkdir -p /etc/openvpn/server
- 創(chuàng)建并編輯配置文件:
sudo nano /etc/openvpn/server/config.ovpn
配置信息:
# OpenVPN服務(wù)器
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實(shí)例的私有IP地址。
Figure 2: AWS實(shí)例私有IP注意:在AWS安全組中為UDP端口1194添加入站規(guī)則。
Figure 3: 安全組入站規(guī)則編輯完成后,“Ctrl+X”退出編輯,在彈出的詢問信息中,鍵入字母“Y”保存編輯信息,然后按“Enter”鍵退出編輯界面。
- 創(chuàng)建虛擬TAP接口,并編輯interface-up.sh。
sudo nano /etc/openvpn/server/interface-up.sh
- 將以下內(nèi)容編輯到interface-up.sh文件中。
#!/bin/sh
/sbin/ifconfig $1 10.0.8.1 netmask 255.255.255.0 broadcast 10.0.8.0
- 執(zhí)行以下命令使腳本文件可執(zhí)行。
sudo chmod +x /etc/openvpn/server/interface-up.sh
5、啟動(dòng)OpenVPN。
- 啟動(dòng)運(yùn)行在實(shí)例上的OpenVPN,請(qǐng)執(zhí)行以下命令。
sudo systemctl start openvpn
- 執(zhí)行以下命令以啟動(dòng)TAP接口。
sudo openvpn --config /etc/openvpn/server/config.ovpn
注意:如果需要OpenVPN自動(dòng)執(zhí)行配置文件,將config.ovpn重新命名為config.conf并放置在文件夾“/etc/openvpn”下。
cd /etc/openvpn/server
sudo mv config.ovpn /etc/openvpn/config.conf
這樣,如果操作系統(tǒng)重啟,OpenVPN將自動(dòng)加載TAP接口。
查看OpenVPN服務(wù)是否啟動(dòng),可執(zhí)行如下命令。
service openvpn status
6、檢查TAP0接口是否啟動(dòng),執(zhí)行以下命令。
ifconfig tap0
如果TAP0接口已啟動(dòng)并正在運(yùn)行,可看到如下輸出。
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 管理客戶端設(shè)置
1、生成OpenVPN服務(wù)器客戶端認(rèn)證。
cd /etc/openvpn/easyrsa
# ./easyrsa build-client-full <客戶端名稱> nopass
sudo ./easyrsa build-client-full managment nopass
# 更新認(rèn)證控制文件
sudo ./easyrsa gen-crl
注意:上述代碼中的“managment”為客戶端PC的名稱,請(qǐng)根據(jù)實(shí)際需求修改。
2、OpenVPN客戶端配置文件路徑。
注意:
以下列表是配置文件及其對(duì)應(yīng)的名稱。
- = CA 認(rèn)證
- = 客戶端認(rèn)證
- =客戶端密鑰
認(rèn)證配置文件位置
- CA認(rèn)證:
/etc/openvpn/easyrsa/pki/ca.crt
- 客戶端認(rèn)證:
/etc/openvpn/easyrsa/pki/issued/{client_name}.crt
- 客戶端密鑰:
/etc/openvpn/easyrsa/pki/private/{client_name}.key
3、在PC上打開文本編輯器,將以下模板內(nèi)容復(fù)制到文本中。
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服務(wù)器的/etc/openvpn/easyrsa/pki/ca.crt中復(fù)制
-----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-----
# 客戶端認(rèn)證PEM
# 從OpenVPN服務(wù)器的/etc/openvpn/easyrsa/pki/issued/managment.crt中復(fù)制
-----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服務(wù)器的/etc/openvpn/easyrsa/pki/private/managment.key中復(fù)制
-----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-----
注意
- 將遠(yuǎn)程IP地址(public_address)修改為AWS實(shí)例公用IP。
- 將上述認(rèn)證配置文件路徑中的認(rèn)證文件內(nèi)容復(fù)制到模板對(duì)應(yīng)的認(rèn)證內(nèi)容位置。
4、將文件保存命名為management_client.ovpn。
5、OpenVPN PC客戶端。
- 下載并安裝OpenVPN客戶端 。
- 啟動(dòng)OpenVPN GUI客戶端。可在任務(wù)欄中看到如下圖標(biāo)。
- 右擊“Import file”,選擇導(dǎo)入配置文件并打開“management_client.ovpn”文件。
- 再次右擊圖標(biāo)進(jìn)入OpenVPN菜單,單擊“Connect” (它不會(huì)自動(dòng)啟動(dòng))。
圖中OpenVPN客戶端圖標(biāo)變?yōu)榫G色,表示已成功連接。在Ubuntu控制臺(tái)執(zhí)行以下命令可以查看當(dāng)前連接到OpenVPN服務(wù)器的客戶端及其對(duì)應(yīng)的IP地址。
sudo nano /etc/openvpn/server/ip_pool.txt
Figure 9: OpenVPN已連接的客戶端1
圖中只顯示了一個(gè)客戶端及其IP地址。此客戶端是連接到OpenVPN服務(wù)器的PC。如果配置好網(wǎng)關(guān),網(wǎng)關(guān)也會(huì)顯示在其中。
#OpenVPN 客戶端在LoRa網(wǎng)關(guān)上的設(shè)置
網(wǎng)關(guān)密鑰生成的步驟和管理客戶端密鑰生成步驟除了客戶端名稱(client-name)這一參數(shù)不同,其他均相同。
生成網(wǎng)關(guān)OpenVPN客戶端認(rèn)證及認(rèn)證配置文件,可參考OpenVPN 管理客戶端設(shè)置中的步驟1~2。
注意:
切記將客戶端名稱“management”修改為網(wǎng)關(guān)名稱,比如rak7258-001。
認(rèn)證生成單獨(dú)的文件后,將文件內(nèi)容導(dǎo)入到網(wǎng)關(guān)的OpenVPN客戶端部分。
1、通過Web UI在本地登錄網(wǎng)關(guān) 。
- 訪問Web UI,須確保本地網(wǎng)絡(luò)可以訪問并連接到網(wǎng)關(guān)
- 在左側(cè)導(dǎo)航樹中,進(jìn)入“Services> OpenVPN Tunnels”。在參數(shù)配置框中,輸入OpenVPN Tunnels的名稱。在下拉菜單中選擇“Custom Openvpn Configuration”。
- 完成后單擊“Add”。
- 在“Configuration”窗口中,將上述已創(chuàng)建客戶端配置文件中的內(nèi)容復(fù)制到此窗口中,單擊“Save 和 Apply”。如下圖所示:
- 在“OpenVPN Tunnels”窗口中,將“Enable”開關(guān)打開,單擊“Save & Apply”。完成網(wǎng)關(guān)側(cè)的配置,此過程可能需要幾分鐘才能完成。
- 在OpenVPN服務(wù)器上的客戶端列表文件中再次檢查網(wǎng)關(guān)的IP地址。
sudo nano /etc/openvpn/server/ip_pool.txt
Figure 13: OpenVPN已連接的客戶端2如上圖,網(wǎng)關(guān)的IP地址已顯示在文件中的第二行。
2、遠(yuǎn)程登錄網(wǎng)關(guān)。
現(xiàn)在可使用OpenVPN服務(wù)器分配的IP地址(如上圖中的IP地址10.0.8.12)遠(yuǎn)程登錄網(wǎng)關(guān)。這可用于SSH2連接、Web UI(通過瀏覽器),以及許多其他應(yīng)用程序。
-
RAK
+關(guān)注
關(guān)注
0文章
48瀏覽量
2081
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論