对于嵌入式设备采用2G/GPRS/3G/4G流量上网已经是较为成熟的技术了,但一般来讲,这种设备多数是与带固定IP或域名的服务器进行通讯,然,很多场合,现场提供不了固定IP或域名,将如何实现两设备之间的数据通讯?本文记录如何采用公有云+OpenVPN的方式进行部署:
1, VPN服务端部署
在公有云(阿里云登)上购置云主机与固定IP,通过ssh登陆设置openvpn服务器,命令如下:
OVPN_DATA="ovpn-data-aliyun"
docker volume create --name $OVPN_DATA
docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u
udp://IP(阿里云IP)
docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki
docker run -v $OVPN_DATA:/etc/openvpn -d -p 1194(端口号):1194/udp --cap-add=NET_ADMIN
kylemanna/openvpn

注: 过程中需要输 Enter pass phrase, 可自定义,生成 client 认证文件时需要

在 openvpn server 端(aliyun)创建用户生成认证文件,不同的 client 使用不同的认证用户,命令如下:
docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-clientfull user1 nopass # 生成 client 认证文件 user1,过程中需要输入 Enter pass phrase

docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient user1 >
user1.ovpn #生成 client 对应用户user1 认证文件并下载

至此,VPN服务端准备就绪。

2, VPN客户端验证 (Arm)
A. 下载并交叉编译openvpn客户端
下载路径:
https://swupdate.openvpn.org/community/releases/openvpn-2.4.4.tar.gz
B. 将编译好的openvpn拷贝至arm平台下,添加执行权限,连接至/usr/sbin下
C. 将支持库libcrypto.so.1.0.0/ libssl.so.1.0.0连接到/lib下
采用openvpn对两台流量卡arm设备进行通讯(公有云)
D. 启动TUN模块,命令如下、
mkdir -p /dev/net
mknod /dev/net/tun c 10 200
chmod 600 /dev/net/tun
E. 将openvpn服务生成的客户端配置user1.ovpn放入arm平台
F. 启动openvpn进程,命令如下:
openvpn --config user1.ovpn
G. 查看IP,自动分配IP
采用openvpn对两台流量卡arm设备进行通讯(公有云)
H. 查看路由信息
采用openvpn对两台流量卡arm设备进行通讯(公有云)
I. 删除路由信息
采用openvpn对两台流量卡arm设备进行通讯(公有云)
J. 添加路由信息
采用openvpn对两台流量卡arm设备进行通讯(公有云)
K. 同样配置另外一台,测试链路,链路测试成功
采用openvpn对两台流量卡arm设备进行通讯(公有云)