对于嵌入式设备采用2G/GPRS/3G/4G流量上网已经是较为成熟的技术了,但一般来讲,这种设备多数是与带固定IP或域名的服务器进行通讯,然,很多场合,现场提供不了固定IP或域名,将如何实现两设备之间的数据通讯?本文记录如何采用公有云+Open×××的方式进行部署: 1, ×××服务端部署 在公有云(阿里云登)上购置云主机与固定IP,通过ssh登陆设置openvpn服务器,命令如下: O×××_DATA="ovpn-data-aliyun" docker volume create --name $O×××_DATA docker run -v $O×××_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u udp://IP(阿里云IP) docker run -v $O×××_DATA:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki docker run -v $O×××_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 $O×××_DATA:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-clientfull user1 nopass # 生成 client 认证文件 user1,过程中需要输入 Enter pass phrase

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

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

2, ×××客户端验证 (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/ .1.0.0连接到/lib下 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 H. 查看路由信息 I. 删除路由信息 J. 添加路由信息 K. 同样配置另外一台,测试链路,链路测试成功