说明

本篇是序言篇,会对L2TP客户端的移植做一个简单的介绍。后续篇章才是移植的真正开始。

一、L2TP简介

L2TP是一种工业标准的Internet隧道协议,全称是第二层隧道协议(英语:Layer Two Tunneling Protocol,缩写为L2TP)是一种虚拟隧道协议,通常用于虚拟专用网。L2TP协议自身不提供加密与可靠性验证的功能,可以和安全协议搭配使用,从而实现数据的加密传输。经常与L2TP协议搭配的加密协议是IPsec,当这两个协议搭配使用时,通常合称L2TP/IPsec。

二、应用场景

客户想要在公司内部远程访问户外的设备。

三、L2TP客户端

公网IP由客户那边提供,也就是说我们设备是作为L2TP客户端。

好处是设备不需要提供公网IP,也不用做过多的网络参数配置,具体配置由L2TP服务器提供,客户端只要同步服务器的配置即可。

坏处是接收机是放在户外的,技术支持人员需要在现场就把环境搭好,让接收机能成功连接上L2TP服务器。否则一旦人员离开了,客户在公司想访问设备,就得重新派人到现场处理。

移植

一、说明

L2TP与IPsec不是强关联,如果客户想要远程,但是对安全加密没有要求,那只需要移植xl2tpd这个工具就足够了。

如果客户想要远程,且对安全性有要求,则在移植xl2tpd的基础上,还需要进一步移植IPsec相关的工具。

具体看各自的需求进行取舍,xl2tpd与IPsec在开发时间上的占比差不多是1:3。

二、方案选取

目前网上比较常见的搭建VPN的方案分别有openswan、libreswan、strongswan,首先说结论:推荐strongswan,不建议openswan与libreswan。

原因有下:

1)openswan与libreswan在arm上的移植,虽然博客比strongswan要多,但都零散不全,遇到问题时,一些细节部分博客各说各的,你都不知道以谁为参考,只能逐一摸索,最后还可能是无用功。

2)openswan与libreswan是使用linux内核自带的协议栈,libreswan是openswan演变出来的一个分支。正因如此,当初最开始选择了openswan进行开发,但这也是血泪深坑的开始。因为openswan与linux内核绑定太多,很多问题都和内核版本紧密关联。openswan的守护进程还有崩溃的危险,一查又和内核有关,最终放弃了该方案。

3)openswan的运行环境部署以及网络环境配置要比strongswan复杂。

4)strongswan需要开启的编译选项很多,且基本找不到在arm平台的移植教程(这也是当初没有首选strongswan的原因,因为预估工作量可能比openswan大),但strongswan与内核关联较少,遇到的很多问题都不涉及到内核,比较好解决。

5)strongswan有一直长期维护的官方网站和论坛,有非常系统的配置介绍,不像openswan零零散散,只能通过博客来摸索配置。

三、移植前准备

1、编译项

strongswan需要开启的编译项很多,不同的编译项可能还需要额外依赖一些库,故先确定好编译项,再根据编译项去交叉编译依赖库,才能进行strongswan的移植。

具体的编译项可以参考官网的说明,官方有提供一个说明列表,具体链接如下:

https://docs.strongswan.org/docs/5.9/install/autoconf.html

满足基本安全加密的话,开启的编译项如下:

–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

根据官方的说明,编译选项需要依赖以下这些库:libgmp、libopenssl、libcrypto、libcurl。

即我们需要交叉编译gmp、openssl、crypto、curl。

(经验分享:交叉编译依赖库时,先查询交叉编译链的版本,获取到编译链版本发布的时间T,在下载依赖库的版本时,以时间T为参考,这样可以避免很多交叉编译不兼容的问题)

2、内核准备

除了移植工具,还需要开启以下的内核模块:

ah4
ah6
esp4
esp6
xfrm4_tunnel
xfrm6_tunnel
xfrm_user
ip_tunnel
tunnel
tunnel6
xfrm4_mode_tunnel
xfrm6_mode_tunnel

这里strongswan的官网有比较详细的介绍,链接放在这里:
https://docs.strongswan.org/docs/5.9/install/kernelModules.html

本片暂时到这里,下篇开始真正的移植。

(注意:本博客只在CSDN发布,原创不易,禁止抄袭,转载请标明出处和附上原文链接)

L2TP客户端之Strongswan移植(一)相关推荐

  1. L2TP客户端之Strongswan移植(二)

    说明 上一篇博客L2TP客户端之Strongswan移植(一)有提到,移植前需要一些准备,需要交叉编译gmp.openssl.crypto.curl,这里我们将会对strongswan全套工具和依赖库 ...

  2. L2TP客户端之Strongswan移植(三)

    说明 上一篇已经移植完strongswan的全套工具,以及内核模块也做了支持.接下来就是移植的工具在开发板的部署了. 资源部署 1.文件放置 有了内核的支持,现在要做的就是把L2TP/IPsec的工具 ...

  3. mysql 客户端 交叉编译_移植mysql到嵌入式ARM平台

    移植MySQL到嵌入式ARM平台 MySQL没有专门针对ARM的版本,移植到ARM没有官方文档可参考,因此,暂时参考这样一篇文档: http://blog.chinaunix.net/space.ph ...

  4. Linux 终端环境安装 L2TP 客户端

    安装: yum -y install xl2tpd ppp 安装成功后,直接进入配置流程 配置: 配置过程也并不复杂,主要有两个文件.首先就是配置 /etc/xl2tpd/xl2tpd.conf 文件 ...

  5. 安卓版炉石修改服务器,越南玩家自制炉石传说安卓版客户端 可能公开移植方法...

    炉石传说安卓版何时才能上线?相信这个一定是广大安卓炉友 关心的话题了.对此,暴雪早在今年年初就已提到:除了已经上架的iPad版外,对应安卓系统的炉石客户端也在紧密制作中,预计将会在年底上线. 凭什么苹 ...

  6. Linux下l2tp客户端xl2tpd的安装配置

    1.下载xl2tp http://pkgs.org/search/?query=xl2tp&type=smart选择相应的版本进行下载 2.安装xl2tp和ppp yum install xl ...

  7. OpenWrt——配置L2TP客户端

    基本概念 L2TP:一种工业标准的Internet隧道协议,功能大致和PPTP协议类似,比如同样可以对网络数据流进行加密.不过也有不同之处,比如PPTP要求网络为IP网络,L2TP要求面向数据包的点对 ...

  8. 项目需求和产品需求_项目需求和你

    项目需求和产品需求 介绍(Introduction) This article isn't going to be language or framework-specific. It is goin ...

  9. 常见算法思想1:枚举法

    一.枚举法 枚举算法的思想是:将问题的所有可能的答案一一列举,然后根据条件判断此答案是否合适,保留合适的,丢弃不合适的. 使用枚举算法解题的基本思路如下所示: (1)确定枚举对象.枚举范围和判定条件. ...

最新文章

  1. R语言使用for循环绘制多个模型的DCA(Decision Curve Analysis)曲线并保存特定分辨率的DCA曲线的结果文件
  2. 主成分分析(PCA) Java
  3. Python中的retry
  4. C# 类中继承接口的属性
  5. github 档案馆(是不是那个把code放到北极的那个项目。。。)
  6. PHP strcasecmp函数
  7. 鸿蒙系统安兔兔排行榜,安兔兔评测鸿蒙版下载-安兔兔评测 鸿蒙版v9.0.7-PC6鸿蒙网...
  8. 巴黎市中心降下2019年第一场雪
  9. PrincetonAlgorithm I - Assignment2 Deques and Randomized Queues
  10. c语言爬虫和python爬虫_为什么写爬虫都喜欢用python?
  11. RefreshLayout刷新组件,有详细注释适合使用和中高端学习
  12. TubeMQ 万亿级分布式消息中间件
  13. Android 中文API (69) —— BluetoothAdapter[蓝牙]
  14. DeFi中的关键——智能合约 | 白话区块链入门220
  15. keil5.34设置GB2312编码后,字体不能改
  16. 已知元器件名,AD原理库快速查找元器件
  17. 属性动画实现卫星菜单效果
  18. 深入理解计算机网络-4信号编码与调制2
  19. 刷题体验第一天——《录鼎记》第一章
  20. Python使用腾讯云-短信服务发送手机短信

热门文章

  1. linux传奇私服文件包,传奇私服目录文件结构
  2. 什么才是一个量化交易策略的核心?
  3. ant-design-vue select 可搜索下拉加载更多
  4. openwrt web中文语言支持,并设置默认中文
  5. RPA机器人的6大收益
  6. offsetLeft与style.left区别
  7. OpenFeign报Read timed out异常
  8. java ee 中文_javaee中的中文乱码处理
  9. 曲师计算机考研内容,2019计算机考研大纲试卷内容
  10. 网络安全基础——ARP欺骗