【原创】xl2tpd极简配置部署

学习xl2tpd VPN时,网上搜到的教程上来就贴一堆不明所以的配置,照葫芦画瓢折腾成功后很快又忘了。

现在结合官方提供的说明文档,由简入繁地一步步记录下来,以加强巩固。

环境

客户端 192.168.0.207 CentOS 6.3

服务器 192.168.0.213 CentOS 7.2

软件

pppd

https://ppp.samba.org/

实现PPP会话的软件,在l2tp VPN中,其数据包经由L2TP隧道传输,两者结合即PPPoL2TP(Point-to-Point Protocol over L2TP),可类比PPPoE(Point-to-Point Protocol over Ethernet)。

客户与服务器都需要安装pppd,下载源码解压后执行:

./configure
make
sudo make install

通过源码安装的执行文件一般在/usr/local/sbin目录下。

xl2tpd 

https://github.com/xelerance/xl2tpd

构建L2TP隧道的软件,L2TP隧道负责传输pppd生成的PPP数据包,一个xl2tpd进程可开启多个pppd进程,对应多个PPP会话。xl2tpd与其启动的pppd进程间通过伪终端(pseudo-tty)进行数据通信,两者关系可参考《Linux伪终端设备及其在L2TP中的应用》一文。

客户端与服务器都需要安装xl2tpd,下载源码解压后执行:

make

sudo make install

通过源码安装的执行文件一般在/usr/local/sbin目录下。

配置

服务器

服务器xl2tpd配置文件:

/etc/xl2tpd/xl2tpd.conf

简单配置如下:

[lns default]
ip range = 172.16.0.1-172.16.0.254
local ip range = 172.17.0.1

LNS(L2TP Network Server)信息为服务端的主要配置,LNS可以有多个,以 [lns xxx] 格式为名,[lns default] 为默认的LNS配置。

本次配置中LNS包含以下两项信息:

ip range,分配给L2TP隧道彼端(客户端)的IP地址范围,注意不能像PPTP那样写成172.16.0.1-254这样的格式,起始地址和结束地址都要使用完整的IP描述。

local ip range,与彼端IP相对应的L2TP隧道本地IP地址范围,注意这是一个范围,可以配置成172.17.0.1-172.17.0.254,也可以仅仅配置一个IP。

xl2tpd.conf文件中以分号";"作为注释开头。

客户端

客户端xl2tpd配置文件:

/etc/xl2tpd/xl2tpd.conf

[lac vpntest]
lns = 192.168.1.213

LAC(L2TP Access Concentrator)为客户端配置信息,格式为[lac xxx] ,xxx即LAC的名字,可以配置多个LAC信息。若是改动了LAC的名字,需要重启xl2tpd服务方能生效。

本次的LAC配置中只包含一项信息:lns, 即该LAC所连接LNS的IP地址或域名,不同的LAC能连接不同的LNS

测试

1)在客户端和服务端的机器上分别执行xl2tpd命令,xl2tp服务会以后台方式运行,在第一次运行前确认/var/run目录是否存在,若/var下没有run目录,需要手动创建,否则xl2tp服务会启动失败(在/var/log/message中会有日志提示)。

2)在客户端机器上执行命令:echo 'c vpntest' > /var/run/xl2tpd/l2tp-control,xl2tpd从l2tp-control文件中收到命令会创建ppp进程,如果成功在客户端和服务端会各自生产一个pppX的虚拟网卡,如下图所示:

客户端:

 

服务端:

172.16.0.1和172.17.0.1是可以相互通信的。

关闭客户端的命令为: echo 'd vpntest' > /var/run/xl2tpd/l2tp-control

'c vpntest'与'd vpntest'中的vpntest即配置文件/etc/xl2tpd/xl2tpd.conf中[lac xxx]相应的LAC名xxx

另外,只要相关配置存在,一个xl2tpd既可以作为LAC也可以作为LNS。

取消数据压缩

上述配置中,PPP协议默认对数据进行了压缩,不利于捕包观察和调试,可通过如下方式取消压缩:

方法一,通过服务器配置取消压缩:

1)在服务器编辑pppd的配置文件/etc/ppp/options.xl2tpd,增加一行“noccp”;

#不要对数据进行压缩
noccp

pppd的配置文件中以"#"作为注释开头。

2)在服务器编辑xl2tpd的配置文件/etc/xl2tpd/xl2tpd.conf,增加pppd的配置文件路径:

[lns default]
ip range = 172.16.0.1-172.16.0.254
local ip range = 172.17.0.1
;pppd配置文件路径
pppoptfile = /etc/ppp/options.xl2tpd

方法二,通过客户端配置取消压缩:

编辑客户端的pppd配置文件/etc/ppp/peers/vpntest.xl2tpd,增加一行"noccp",然后在/etc/xl2tpd/xl2tpd.conf中相应的LAC配置节下增加vpntest.xl2tpd的路径全名:

pppoptfile = /etc/ppp/peers/vpntest.xl2tpd

(这里的vpntest.xl2tpd与LNS的options.xl2tpd性质一样都是pppd的配置文件,不过从网上的诸多教程看,LAC的pppd配置文件一般存放于/etc/ppp/peers目录下,而LNS的pppd配置文件一般存放于/etc/ppp目录下)

为tty设备加锁

pppd使用tty设备与xl2tpd进行数据通信,tty默认没有被加锁。

在pppd的配置文件中(LNS为/etc/ppp/options.xl2tpd,LNC为/etcppp/peers/vpntest.xl2tpd),添加如下配置:

#为tty加锁
lock

如此一来,当pppd打开一个tty设备后,就会生成一个UUCP类型的文件锁以阻止其他进程访问该设备。

更多参考

在安装xl2tpd和pppd的系统中,可通过查阅man手册来获取更多的参考信息:

man xl2tpd,介绍xl2tpd程序的使用

man xl2tpd.conf,介绍xl2tpd.conf配置文件

man pppd,介绍pppd程序的使用,内容比较多,其中的OPTIONS各个选项可以写入配置文件,然后在xl2tpd.conf中使用pppoptfile指明路径名。

posted @ 2020-08-06 16:30  晓木生  阅读(4169)  评论(0编辑  收藏  举报