因设备是一个采用4G无线通信方式,4G拨号后是移动分配给设备的一个变动的局域网IP。若想远程连接设备对设备进行配置、升级,则设备作为服务端,远程服务器的配置工具软件作为客户端,则连接不上设备,因为不是固定IP。这里采用的方案是 设备4G拨号成功后,通过openvvpn 拨号连接远程服务器,拨号成功后建立一个p-t-p的通信隧道。服务器就以这个p-t-p的IP连接设备.
一、openVvpn 移植
1.1编译lzo-2.10 用于数据压缩
tar zxvf lzo-2.10.tar.gz
# cd /usr/src/lzo-2.10/
# ./configure --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc --enable-shared --prefix=$PWD/install
# make -j4 && make install
1.2 编译openssl-1.0.2n.tar.gz
#tar -zxvf openssl-1.0.2n.tar.gz
#cd openssl-1.0.2n
#./Configure linux-elf no-asm shared --prefix=$PWD/install
#vim Makefile
搜索CC AR RANLIB
CC= arm-linux-gnueabihf-gcc
AR= arm-linux-gnueabihf-ar $(ARFLAGS) r
RANLIB= arm-linux-gnueabihf-ranlib
#make -j4
#make install
1.3 编译OpenVVPN
https://openvpn.net/ 下载 github上面也有
#tar xvfz openvpn-2.4.6.tar.gz
新建一个脚本配置文件 myconfigure.sh 内容如下:
./configure --host=arm-linux-gnueabihf --disable-lz4 --disable-plugins \
CC=arm-linux-gnueabihf-gcc \
--prefix=$PWD/install \
OPENSSL_CFLAGS="-I/home/jdtf/Xilinx/openvpn/openssl-1.0.2n/install/include" \
OPENSSL_LIBS="-L/home/jdtf/Xilinx/openvpn/openssl-1.0.2n/install/lib -lssl -lcrypto" \
LZO_CFLAGS="-I/home/jdtf/Xilinx/openvpn/lzo-2.10/install/include" \
LZO_LIBS="-L/home/jdtf/Xilinx/openvpn/lzo-2.10/install/lib -llzo2"
#chmod 777 myconfigure.sh
#./myconfigure.sh
#make -j4
#make install
将生成的bin sbin lib 拷贝至 设备的文件系统里面
若设备内核不支持tun模块需要重新编译下内核文件
tun: Universal TUN/TAP device driver, 1.6
#make menuconfig
Device Drivers --->
Network device support --->
<M> Universal TUN/TAP driver support
然后 在/dev/net/tun 网络节点出现
二、windows 安装 openVVpn
2.1 安装 openVvpn
https://openvpn.net/index.php/open-source/downloads.html 下载 openvpn-install-2.4.6-I602.exe
注意安装时候要选中 EasyRSA 2 Certificate Management Scripts
同意安装 TAP-Windows Provider V9 网络适配器
2.2 生成证书
打开cmd ,进入安装目录 easy-rsa 文件夹
-> init-config
-> vars
-> clean-all
# 生成CA根证书密钥对。
-> build-ca
#创建服务器端证书和私钥
-> build-key-server server
# 创建客户端证书和私钥
-> build-key client
# 为O服务器端创建迪菲·赫尔曼交换密钥 默认2048大小 用以对数据进行加密
-> build-dh
若创建客户端证书出现 failed to update database TXT_DB error number 2 错误 ,原因是创建了两个common name一样的证书,可参考创建CA证书报错-failed to update database TXT_DB error number 2 - 起名字什么的太麻烦了的个人空间 - OSCHINA - 中文开源技术交流社区
2.3 服务器拷贝证书文件
将 ca.crt ca.key dh2048.pem server.crt server.key 拷贝至config目录下 ,并且在config目录下创建配置文件server.ovpn, 可以从sample-config 拷贝进行更改
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 192.168.0.0 255.255.0.0
keepalive 10 120
cipher AES-256-CBC
persist-key
persist-tun
status openvpn-status.log
verb 3
explicit-exit-notify 1
2.4 设备拷贝证书文件
建立 /etc/openvpn 文件夹 ,将ca.crt client.crt client.key 拷贝至该目录 并且建立client.ovpn文件,可以从sample-config 拷贝进行更改
client
dev tun
proto udp
remote 192.168.3.122 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
remote-cert-tls server
;tls-auth ta.key 1
;comp-lzo
verb 3
2.5 启动VVPN
openvpn --cd /etc/openvpn/ --config /etc/openvpn/client.ovpn
#ifconfig 可以看到新的网卡 tun