当前位置: 首页 » 博客 » 技术文章 » 正文

Openvpn移植到ARM Linux步骤

放大字体  缩小字体 发布日期:2017-10-18  浏览次数:901
核心提示:- 因为 OpenVPN 使用 lzo 进行压缩处理,使用 OpenSSL 加密数据和控制信息,并且对 Server 和 Client 的时间同步较为敏感,我们
- 因为 OpenVPN 使用 lzo 进行压缩处理,使用 OpenSSL 加密数据和控制信息,并且对 Server 和 Client 的时间同步较为敏感,我们在交叉编译 OpenVPN 之前,需要先交叉编译 lzo、OpenVPN 和 ntpdate(用于时间同步)。这里有几点需要注意: - 建议下载较新的稳定版本,我使用的是飞凌 OK6410 开发板,采用 Linux-3.0.1 内核。老版本的软件已经不再被支持,所以很可能在新内核上出错。使用新版本的软件可以避免这个问题。 OpenVPN 的 Server 和 Client 版本号应该保持一致。 编译 OpenVPN 采用的编译器应该与编译 Linux 内核所用的编译器一致。 内核需要支持 tun 模块。 交叉编译时请使用 root 账户。 考虑到以上几点,我最终选择了: ```c lzo-2.0 OpenSSL-1.0.1c OpenVPN-2.2.0 ntp-4.2.4p0 ``` 重新编译内核,添加 tun 支持。 编译器选择飞凌提供的 arm-none-linux-gnueabi-gcc (4.3.2) 交叉编译 lzo-2.0 cd lzo-2.00 ./configure --host=arm-none-linux-gnueabi --prefix=/home/[yourname]/OpenVPN/lzo make make install OpenSSL-1.0.1c cd openssl-1.0.1c ./Configure linux-elf-arm -DB_ENDIAN linux:"arm-none-linux-gnueabi-gcc' no-shared --prefix=/home/armlinx/openssl/ make make install OpenVPN-2.2.0 cd openvpn-2.2.0/ ./configure --host=arm-linux --prefix=/home/[yourname]/OpenVPN/openvlan --with-lzo-headers=/home/[yourname]/OpenVPN/lzo/include/ --with-lzo-lib=/home/[yourname]/OpenVPN/lzo/lib/ --with-ssl-headers=/home/[yourname]/OpenVPN/openssl/include/ --with-ssl-lib=/home/[yourname]/OpenVPN/openssl/lib/ make make install ntp-4.2.4p0 cd ntp-4.2.4p0/ ./configure --host=arm-none-linux-gnueabi --prefix=/home/[yourname]/OpenVPN/ntp make make install Linux Kernel-3.0.1 cd linux-3.0.1 make menuconfig /Device Drivers/Network device support/Universal TUN/TAP device driver support ->built-in make 软件配置 将新编译的内核烧录到开发板。 把交叉编译生成的 OpenVPN 目录和 openvpn-2.2.0 目录复制到开发板。 进入 OpenVPN 目录并执行以下命令: cp lzo/lib/liblzo.* /lib/ //复制 lzo 库文件 cp cp openssl/bin/* /bin/ //复制 OpenSSL cp openvlan/sbin/openvpn /sbin/ //复制 OpenVPN cp ntp/bin/ntpdate /bin/ //复制 ntpdate mkdir /etc/openvpn cp -r openvpn-2.2.0/easy-rsa/2.0/ /etc/openvpn/ cd /etc/openvpn touch openvpn.conf vi openvpn.conf //修改 openvpn.conf 为如下内容 port 1194 proto tcp dev tun ca /etc/openvpn/easy-rsa/2.0/kyes/ca.crt cert /etc/openvpn/easy-rsa/2.0/kyes/[name].crt //[name]是服务器证书的名字 key /etc/openvpn/easy-rsa/2.0/kyes/[name].key dh /etc/openvpn/easy-rsa/2.0/kyes/dh1024.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "route 192.168.0.0 255.255.255.0"> client-to-client duplicate-cn keepalive 10 120 comp-lzo user nobody group nobody persist-key persist-tun status /data/logs/openvpn-status.log log /data/logs/openvpn.log log-append /data/logs/openvpn.log verb 3 生成 VPN Server 证书。 cd /etc/openvpn/easy-rsa/2.0 vi vars //调整证书生成文件 export KEY_COUNTRY="CN" //国家 export KEY_PROVINCE="JS" //省份 export KEY_CITY="nantong" //城市 export KEY_ORG="HNCST" //组织 export KEY_EMAIL="yourname@xxx.com" //邮箱 export KEY_CN=[yourname] export KEY_NAME=[yourname] export KEY_OU=[yourname] export PKCS11_MODULE_PATH=[yourname] export PKCS11_PIN=[password] . ./vars //开始生成证书 ./clean-all ./build-ca //在与 shell 交互中一路回车即可 ./build-dh //这一步生成证书需要较长时间,耐心等候 ./build-key-server [name] //[name]对应上文证书文件的名字 Certificate is to be certified until Jan 31 02:46:02 2022 GMT (3650 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated 生成 VPN Client 证书。 ./build-key [clientname] //你可以重复多次生成多个 Client 证书以供不同的计算机使用 设置开机自动配置 tun 节点 vi /etc/init.d/rcS //添加如下内容 mkdir -p /dev/net/ mknod /dev/net/tun c 10 200 设置开机自动同步时间 vi /etc/init.d/rcS //添加如下内容 ntpdate 1.cn.pool.ntp.org 在 Windows PC 上安装 OpenVPN-2.2.0,将证书下载到客户端 OpenVPN 安装目录的 config 子目录下并且新建 client.ovpn 文件,修改文件内容为: client dev tun proto tcp remote [serverip] 1194 //填入服务器 IP 地址 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert [clientname].crt //与上文[clientname]对应 key [clientname].key ns-cert-type server comp-lzo verb 3 redirect-gateway def1 测试与使用 使用命令 openvpn 即可以守护进程模式启动 OpenVPN。 使用命令 netsate -tunlp 参看 OpenVPN 是否正常启动。 Windows 下右击创建的 client.ovpn 文件,选择「Start OpenVPN on this config file」。 如果没有错误,你就可以与 ARM-Linux 上的 OpenVPN 连接成功了。 参考资料 http://openvpn.net/index.php/open-source/documentation/howto.html #交叉编译过程 https://wiki.archlinux.org/index.php/OpenVPN_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)#OpenVPN 配置与证书生成方法 http://sourceforge.net/mailarchive/forum.php?thread_name=4FD6FD52.1060505%40nikhef.nl&forum_name=openvpn-users #版本选择和解决 TLS 错误 http://bbs.witech.com.cn/thread-14484-1-1.html #网友心得,不可用
 
 
[ 博客搜索 ]  [ 加入收藏 ]  [ 告诉好友 ]  [ 打印本文 ]  [ 违规举报 ]  [ 关闭窗口 ]

 
0条 [查看全部]  相关评论

 
推荐图文
推荐博客
点击排行