Openvpn移植到 嵌入式linux

david 2019-09-01 11:08:57 8238

因为 OpenVPN 使用 lzo 进行压缩处理,使用 OpenSSL 加密数据和控制信息,并且对 Server 和 Client 的时间同步较为敏感,我们在交叉编译 OpenVPN 之前,需要先交叉编译 lzo、OpenVPN 和 ntpdate(用于时间同步)。这里有几点需要注意:

建议下载较新的稳定版本,采用 Linux-3.0.1 内核。老版本的软件已经不再被支持,所以很可能在新内核上出错。使用新版本的软件可以避免这个问题。
OpenVPN 的 Server 和 Client 版本号应该保持一致。
编译 OpenVPN 采用的编译器应该与编译 Linux 内核所用的编译器一致。
内核需要支持 tun 模块。
交叉编译时请使用 root 账户。
考虑到以上几点,我最终选择了:

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 节点
```bash
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 连接成功了。

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
david
红包 1 收藏 评论 打赏
评论
1个
内容存在敏感词
手气红包
  • KITT 2022-08-09 20:24:45
    回复
    你好,我现在在研究这个linux遇到些问题是否可以帮我看看,有偿,谢谢!
相关专栏
关于作者
david

david

一个爱徒步的~IT民工

原创253
阅读100.7w
收藏24
点赞11
评论6
打赏用户 1
我要创作
分享技术经验,可获取创作收益
分类专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
david
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区