L2TP客户端之Strongswan移植(三)
说明
上一篇已经移植完strongswan的全套工具,以及内核模块也做了支持。接下来就是移植的工具在开发板的部署了。
资源部署
1、文件放置
有了内核的支持,现在要做的就是把L2TP/IPsec的工具都部署到开发板。
只有正确部署,这些工具才能顺利跑起来。
前面交叉编译xl2tpd和strongswan的时候,都是以开发板的环境进行配置的,我这边的开发板是在/mnt/platform下运行的(bin/sbin/lib/libexec都是存放在这里目录下),所以前面的配置传参都是用/mnt/platform,不要交叉编译的时候随便配置一个路径,不然在部署到开发板的时候,让你头疼的问题会层出不穷。
接下来,我们需要把以下图片中的资源,都拷贝到开发板上的/mnt/platform目录下:
其中,xl2tpd和xl2tpd-control也放到上图的sbin目录中。
另外,在etc目录下,创建一个xl2tpd的目录,在xl2tpd这个目录下创建一个xl2tpd.conf文件;
在etc目录下,创建一个ipsec.secrets文件;
在etc目录下,创建一个ppp的目录,把拨号相关的chap-secrets文件,拷贝到该目录下。
在ppp目录下,创建一个options.l2tp.conf文件(该文件名字随意,不过要与xl2tpd.conf里的参数对应上)。
所有配置文件如下图:
2、配置修改
所有要修改的配置文件,都位于开发板的/mnt/platform/etc下,主要修改的配置文件有:ipsec.conf、ipsec.secrets、xl2tpd.conf、options.l2tp.conf。
- ipsec.conf
conn %default
ikelifetime = 60m
keylife = 20m
keyexchange = ikev2 //密钥交互协议版本
rekeymargin = 3m
keyingtries = 1
authby = secret
ike = aes256-sha256-modp2048! //密钥交互算法
esp = aes256-sha256-modp2048! //数据传输算法
# Encryption of traffic to the L2TP server
conn eft-ipsec
left = %defaultroute
leftprotoport = 17/1701
# set ip of l2tp server, default is "192.168.10.100"
right = 192.168.10.100 //远程L2TP服务器ip
rightprotoport = 17/%any
# Auto start of encrytion if negotiation fails
auto = start
# Restarting encryption if negotiation fails
dpdaction = restart
# Restart encryption on unexpected close
closeaction = restart
# Reconnect unlimited number of times
keyingtries = %forever
authby = secret
type = transport //透传模式
这里的ike以及esp算法,要根据L2TP服务器的配置进行设置,算法不一致,加密认证是无法通过的。
- ipsec.secrets
# <GATEWAY IP ADDRESS> <SERVER ADDRESS> : PSK "<PRE-SHARED KEY>"
%any 192.168.10.100 : PSK "123456"
192.168.10.100是L2TP远程服务器的IP,123456是预共享密钥的密码。
- xl2tpd.conf
[lac eft-ipsec]
lns = 192.168.10.100
ppp debug = yes
pppoptfile = /mnt/platform/etc/ppp/options.l2tp.conf
length bit = yes
autodial = yes
redial = yes
redial timeout = 30
/mnt/platform/etc/ppp/options.l2tp.conf是options.l2tp.conf文件的绝对路径,根据自己开发板的实际环境进行设置。
- options.l2tp.conf
ipcp-accept-local
ipcp-accept-remote
refuse-eap
require-mschap-v2
noccp
noauth
mtu 1280
mtu 1280
noipdefault
nodefaultroute
usepeerdns
connect-delay 5000
name test
password test-vpn
这里的test和test-vpn,是用于L2TP客户端登录的用户名和密码,不涉及IPsec。
而前面ipsec.secrets文件里的密码123456,是和IPsec相关的,用于预共享密钥。两者不冲突。
至此,环境部署完毕,全套配置文件存放到以下路径,有需要的下载自取:
https://download.csdn.net/download/weixin_44362642/86666005
七、启动L2TP
1、先确认板端已开启4G拨号模块,最好试下能否ping通百度,确保网络畅通(或者用有线网络也一样,只要能访问到百度就行)。
2、在板端敲下以下命令:
xl2tpd -C /mnt/platform/etc/xl2tpd/xl2tpd.conf -D
l2tp服务器会分配一个IP给客户端,这里客户端得到的IP为10.199.12.203,通过ifconfig可以查看得到(此时是没有开启ipesc安全加密的):
此时,服务器就可以访问到的你的开发板了。如果没有安全性的要求,那开发到这里就可以结束了。
而如果对安全性有要求,则继续往后看。
八、启动IPsec
1、在板端敲下以下命令:
ipsec start --nofork --debug-all
图片中出现的ah4、esp4等not found可以不用理睬,我们已经把这些模块集成到了内核。因为不是动态装载,所以才会报错,但是不影响工具的运行。
最后结果我们可以从L2TP服务器端看到:
此时,l2tp/ipsec已成功和服务器建立安全连接,服务器可以访问到的你的开发板了。