L2TP客户端之Strongswan移植(二)
说明
上一篇博客L2TP客户端之Strongswan移植(一)有提到,移植前需要一些准备,需要交叉编译gmp、openssl、crypto、curl,这里我们将会对strongswan全套工具和依赖库进行移植。
移植依赖库
Strongswan
1、gmp
1)gmp下载链接:
http://www.anheng.com.cn/debian/pool/main/g/gmp/
我这里下载的是6.2.1版本。
2)解压后,输入以下命令:
./configure --host=arm-linux-gnueabihf --with-pcap=linux --prefix=/home/nfs/test/strongswan/gmp-6.2.1/install CC=arm-linux-gnueabihf-gcc
make
make install
2、openssl
1)openssl下载链接:
https://www.openssl.org/source/
我这里下载的是1.1.1版本。
2)解压后,输入以下命令:
./config no-asm shared --prefix=/home/nfs/test/strongswan/openssl-1.1.1/install CROSS_COMPILE=/opt/hfcctool/bin/arm-linux-gnueabihf- CC=gcc
make
make install
3、curl
1)curl下载链接:
https://curl.se/download.html
我这里下载的是7.85.0版本。
2)解压后,输入以下命令:
./configure --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ --with-ssl --enable-shared --enable-static --disable-dict --disable-ftp --disable-imap --disable-ldap --disable-ldaps --disable-pop3 --disable-proxy --disable-rtsp --disable-smtp --disable-telnet --disable-tftp --disable-zlib --without-ca-bundle --without-gnutls --without-libidn --without-librtmp --without-libssh2 --without-nss --without-zlib --prefix=/home/nfs/test/strongswan/curl-7.85.0/install CFLAGS=“-I/home/nfs/test/strongswan/openssl-1.1.1/install/include” CPPFLAGS=“-I/home/nfs/test/strongswan/openssl-1.1.1/install/include” LDFLAGS=“-L/home/nfs/test/strongswan/openssl-1.1.1/install/lib -L/disk/work/work_vnet_unicom/APP/m-patches/lib” LIBS=“-ldl -lssl -lcrypto”
make
make install
4、strongswan
1)strongswan下载链接:
https://www.strongswan.org/download.html
我这里下载的是5.5.0版本,要结合自己的编译链进行版本的筛选,不然交叉编译时会出现很多不兼容的BUG。
2)解压后,输入以下命令:
./configure CC=arm-linux-gnueabihf-gcc --host=arm-linux-gnueabihf --prefix=/mnt/platform --sysconfdir=/mnt/platform/etc CFLAGS=“-I/home/nfs/test/strongswan/other/gmp/include -I/home/nfs/test/strongswan/other/openssl/include -I/home/nfs/test/strongswan/other/pam/include -I/home/nfs/test/strongswan/other/curl/include” LDFLAGS=“-L/home/nfs/test/strongswan/other/gmp/lib -L/home/nfs/test/strongswan/other/pam/lib -L/home/nfs/test/strongswan/other/openssl/lib -L/home/nfs/test/strongswan/other/curl/lib” --disable-defaults --enable-cmd --enable-pubkey --enable-eap-identity --enable-eap-dynamic --enable-eap-md5 --enable-eap-mschapv2 --enable-md4 --enable-gmp --enable-fips-prf --enable-aes --enable-hmac --enable-error-notify --enable-stroke --enable-charon --enable-ikev2 --enable-nonce --enable-sha2 --enable-socket-default --enable-kernel-netlink --enable-random --disable-vici --enable-swanctl --enable-openssl --enable-silent-rules --enable-pem --enable-x509 --enable-constraints --enable-revocation --enable-pki --enable-resolve --enable-updown --enable-curl --enable-monolithic LIBS=“-lgmp -lcurl -ldl -lssl -lcrypto -lm -lc”
make
make install
注意事项:
1)–prefix=/mnt/platform --sysconfdir=/mnt/platform/etc一定要参考开发板的环境进行配置,否则会出现部分工具无法顺利运行的情况。
2)strongswan对静态库的兼容做的不是很好,如果进行静态编译会出现一些不兼容的情况。这里交叉编译出来的库都是动态的,用的是动态链接。
到此,用于IPsec支持的strongswan成套工具已交叉编译完成。具体如下图:
pki用于证书认证的支持
etc目录是strongswan配置文件的存放目录
lib是stongswan相关工具运行时的依赖库,这里不要用静态库,strongswan对静态库的兼容做的不是很好
stongswan的可执行文件
L2TP
1、pcap
1)pcap下载链接:
https://www.linuxfromscratch.org/blfs/view/svn/basicnet/libpcap.html
我这里下载的是1.10.1版本。
2)解压后,输入以下命令:
./configure --host=arm-linux-gnueabihf --with-pcap=linux --prefix=/home/nfs/test/pcap/libpcap-1.10.1/install CC=arm-linux-gnueabihf-gcc
make
make install
2、xl2tpd
1)xl2tpd下载链接:
https://github.com/xelerance/xl2tpd
我这里下载的是github上的最新版本。
2)xl2tpd与其他源码有点不同,找不到它的configure文件,只能通过修改makefile和make传参的方式进行配置,具体如下:
打开makefile,做如下修改:
在90行,添加
OSFLAGS+= -DPPPD=\"/mnt/platform/sbin/pppd\"
在下一行,添加
LIBSRC?=
在130行(pfc:下),添加
$(CC) $(LDFLAGS) -o pfc -L$(LIBSRC) pfc.o -lpcap $(LDLIBS)
这里附上makefile文件,需要的自行下载做参考:
https://download.csdn.net/download/weixin_44362642/86662974
敲下以下命令:
make CC=arm-linux-gnueabihf-gcc KERNELSRC=/home/nfs/test/libpcap-1.10.1/install LIBSRC=/home/nfs/test/libpcap-1.10.1/install/lib
make
make install(此步骤可省略)
我们只需要其中的xl2tpd和xl2tpd-control两个工具
至此,L2TP/IPsec所需的工具都已交叉编译完成。
内核支持
工具的移植完成只是其中的一步,想要让这些工具在开发板中顺利跑起来,还需要开启内核的一些支持。
需要开启的内核模块如下:
ah4
ah6
esp4
esp6
xfrm4_tunnel
xfrm6_tunnel
xfrm_user
ip_tunnel
tunnel
tunnel6
xfrm4_mode_tunnel
xfrm6_mode_tunnel
可以通过以下脚本来检查是否已开启内核配置:
#!/bin/sh
grep '\<CONFIG_XFRM_USER\>' /boot/config-`uname -r`
grep '\<CONFIG_NET_KEY\>' /boot/config-`uname -r`
grep '\<CONFIG_INET\>' /boot/config-`uname -r`
grep '\<CONFIG_IP_ADVANCED_ROUTER\>' /boot/config-`uname -r`
grep '\<CONFIG_IP_MULTIPLE_TABLES\>' /boot/config-`uname -r`
grep '\<CONFIG_INET_AH\>' /boot/config-`uname -r`
grep '\<CONFIG_INET_ESP\>' /boot/config-`uname -r`
grep '\<CONFIG_INET_IPCOMP\>' /boot/config-`uname -r`
grep '\<CONFIG_INET_XFRM_MODE_TRANSPORT\>' /boot/config-`uname -r`
grep '\<CONFIG_INET_XFRM_MODE_TUNNEL\>' /boot/config-`uname -r`
grep '\<CONFIG_INET_XFRM_MODE_BEET\>' /boot/config-`uname -r`
grep '\<CONFIG_IPV6\>' /boot/config-`uname -r`
grep '\<CONFIG_INET6_AH\>' /boot/config-`uname -r`
grep '\<CONFIG_INET6_ESP\>' /boot/config-`uname -r`
grep '\<CONFIG_INET6_IPCOMP\>' /boot/config-`uname -r`
grep '\<CONFIG_INET6_XFRM_MODE_TRANSPORT\>' /boot/config-`uname -r`
grep '\<CONFIG_INET6_XFRM_MODE_TUNNEL\>' /boot/config-`uname -r`
grep '\<CONFIG_INET6_XFRM_MODE_BEET\>' /boot/config-`uname -r`
grep '\<CONFIG_IPV6_MULTIPLE_TABLES\>' /boot/config-`uname -r`
grep '\<CONFIG_NETFILTER\>' /boot/config-`uname -r`
grep '\<CONFIG_NETFILTER_XTABLES\>' /boot/config-`uname -r`
grep '\<CONFIG_NETFILTER_XT_MATCH_POLICY\>' /boot/config-`uname -r`
这里上一篇已经提到过,官网也有介绍,就不再详细展开。
你们可以将这些模块编译后动态装载到开发板,也可以直接编译进内内核,然后直接烧录到开发板,两种方式是一样的。
由于篇幅问题,本篇先到这里,下一篇继续。
(注意:本博客只在CSDN发布,原创不易,禁止抄袭,转载请标明出处和附上原文链接)
L2TP客户端之Strongswan移植(二)相关推荐
- L2TP客户端之Strongswan移植(一)
说明 本篇是序言篇,会对L2TP客户端的移植做一个简单的介绍.后续篇章才是移植的真正开始. 一.L2TP简介 L2TP是一种工业标准的Internet隧道协议,全称是第二层隧道协议(英语:Layer ...
- L2TP客户端之Strongswan移植(三)
说明 上一篇已经移植完strongswan的全套工具,以及内核模块也做了支持.接下来就是移植的工具在开发板的部署了. 资源部署 1.文件放置 有了内核的支持,现在要做的就是把L2TP/IPsec的工具 ...
- Windows客户端开发简介(二)
Windows客户端开发简介(二) 一个典型的Windows客户端程序要有哪几部分构成呢?下面我会以一个国内比较流行的互联网客户端程序的基本架构来跟大家逐步展开分析,由于涉及到知识产权的问题,请大家不 ...
- 10.1418 西山居 游戏客户端 一面40分钟+二面1h
原帖在牛客,被封,不知道为什么.很无语,我只是记录过程而已,起码给个理由吧? 作者:BBBourne 链接:10.14&18 西山居 游戏客户端 一面40分钟+二面1h_笔经面经_牛客网 来源 ...
- mysql 客户端 交叉编译_移植mysql到嵌入式ARM平台
移植MySQL到嵌入式ARM平台 MySQL没有专门针对ARM的版本,移植到ARM没有官方文档可参考,因此,暂时参考这样一篇文档: http://blog.chinaunix.net/space.ph ...
- Linux 终端环境安装 L2TP 客户端
安装: yum -y install xl2tpd ppp 安装成功后,直接进入配置流程 配置: 配置过程也并不复杂,主要有两个文件.首先就是配置 /etc/xl2tpd/xl2tpd.conf 文件 ...
- Android版MrHuo工作室客户端开发心得(二)
接上一节,下一步,进入主桌面.感觉做android客户端,最主要的还是要美工好啊,呵呵,我个人美工很差劲,也就这二流子进不去也称不上三流子的,二不二三不三的水平. 主界面根节点是LinearLayou ...
- android系统硬件OpenGL 3D移植(二)
通过前面两篇文章: http://blog.csdn.net/andyhuabing/article/details/7176049 http://blog.csdn.net/andyhuabing ...
- 安卓版炉石修改服务器,越南玩家自制炉石传说安卓版客户端 可能公开移植方法...
炉石传说安卓版何时才能上线?相信这个一定是广大安卓炉友 关心的话题了.对此,暴雪早在今年年初就已提到:除了已经上架的iPad版外,对应安卓系统的炉石客户端也在紧密制作中,预计将会在年底上线. 凭什么苹 ...
最新文章
- matlab m 文件例子,一个简单OFDM例子(matlab m文件)
- 验证码识别技术(1) - 边缘检测
- 为什么不要使用finalize方法
- VMware Workstation 7.0 203739 汉化补丁
- UVA690 Pipeline Scheduling 流水线调度
- python与7无关的数输出格式第一行为所有与7无关的数_70 道 NumPy 测试题
- 量子力学到底神奇在哪里?看完这个,我的认知彻底坍塌了
- 微信小程序 全局共享数据
- c++ enum 给定类型_在 Rust 中创建 C/C++ API
- spring中集成使用jedis(2)
- Eclipse搭建springboot项目(六)全局异常
- 自学python好找工作么-学习python后好找工作吗
- c 连接mysql自动断开_ESQL/C连接和断开数据库(INFORMIX) | 学步园
- 机器人动力学与控制学习笔记(二)————机器人动力学建模
- 用python实现PSNR与SSIM
- Hinton传奇:退学当木匠,辞职反军方,终成一代AI教父
- 计算几何入门 1.6:凸包的构造——Graham Scan算法
- H5中的label、textarea、select标签
- springboot之整合Elasticsearch实现搜索
- U盘插上不显示解决方法
热门文章
- Java使用javax.mail.jar发送邮件并允许发送附件
- java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter 报错的解决办法
- c# 面试题及部分答案
- 考试排座位顺序,要求校内同班不相邻
- 2022年起重机械安全管理复训题库模拟考试平台操作
- 克拉默法则的通俗理解
- 关于ie下阻止ActiveX控件
- 蓝桥杯c语言试题寒假作业,寒假作业--蓝桥杯
- nodemcu能不能用c语言开发,NodeMcu: 编译及运行esp-open-rtos系统
- 《流畅的python》学习笔记之python是什么类型的语言?