L2TP相比PPTP是另外一种隧道协议方式,部分网络下PPTP无法连接,可以尝试L2TP,一般而言在PC上,两者使用体验没什么不同,技术原理上的不同请参照这里.
建议PC电脑上优先使用PPTP,无法使用可以尝试L2TP,移动端推荐使用L2TP;
安装方式:
一、一键脚本安装(推荐,安装简单)
安装的软件包版本分别是openswan-2.6.38、xl2tpd-1.2.4
VPS是需要基于Xen或KVM的。
注意:基于 OpenVZ 虚拟化技术的 VPS 需要开启TUN/TAP才能正常使用,购买 VPS 时请先咨询服务商是否支持开启 TUN/TAP。
检测是否支持TUN模块
执行命令:
cat /dev/net/tun
如果返回信息为:cat: /dev/net/tun: File descriptor in bad state 说明正常
检测是否支持ppp模块
执行命令:
cat /dev/ppp
如果返回信息为:cat: /dev/ppp: No such device or address 说明正常
开始安装:终端里运行以下命令(以root用户运行):
cd /root wget http://lamp.teddysun.com/files/l2tp.sh #CentOS、Fedora或Redhat系统时执行 wget http://lamp.teddysun.com/files/l2tp_ubuntu.sh #Ubuntu系统时执行此命令 chmod +x *.sh ./l2tp.sh #CentOS、Fedora或Redhat系统时执行 ./l2tp_ubuntu.sh #Ubuntu系统时执行此命令</p>
等待出现
「Please input IP-Range:」设置网段,一般回车即可
「Please input PSK:」设置你预共享密钥。
执行后,一直等待成功,会显示相关配置信息。
生成的密码是随机的,需要修改的话,执行
vi /etc/ppp/chap-secrets
注意:xp用户使用L2TP方法登陆的话,可能需要查看电脑的IPSec服务是否正常开启,如果关闭请去“控制面板->管理工具->服务”开启一下。
二、完整diy脚本(高级用户推荐)
①部署IPSec
1、首先安装必备依赖包
yum install make gcc gmp-devel bison flex lsof
2、安装Openswan
wget http://www.openswan.org/download/openswan-2.6.38.tar.gz tar -zxvf openswan-2.6.38.tar.gz cd openswan-2.6.38 make programs install
3、编辑配置文件/etc/ipsec.conf
vim /etc/ipsec.conf
将protostack=auto,修改为:protostack=netkey
4、在最后加上:
conn L2TP-PSK-NAT rightsubnet=vhost:%priv also=L2TP-PSK-noNAT conn L2TP-PSK-noNAT authby=secret pfs=no auto=add keyingtries=3 rekey=no ikelifetime=8h keylife=1h type=transport left=YOUR.SERVER.IP.ADDRESS leftprotoport=17/1701 right=%any rightprotoport=17/%any
其中“YOUR.SERVER.IP.ADDRESS”为外网IP,下同。
5、设置共享密钥PSK 编辑配置文件/etc/ipsec.secrets:
vim /etc/ipsec.secrets
输入:
YOUR.SERVER.IP.ADDRESS %any: PSK “YourSharedSecret”
修改包转发设置
for each in /proc/sys/net/ipv4/conf/* do echo 0 > $each/accept_redirects echo 0 > $each/send_redirects done echo 1 >/proc/sys/net/core/xfrm_larval_drop
修改内核设置,使其支持转发,编辑/etc/sysctl.conf文件:
vim /etc/sysctl.conf
将“net.ipv4.ip_forward”的值改为1。
使修改生效:
sysctl -p
重启IPSec:
service ipsec restart
查看系统IPSec安装和启动的正确性:
ipsec verify
一般情况下没有报[FAILED]就可以了。但是如果转发已经确认配置了,但仍检测checking IP Forwarding 失败,可以先忽略此项错误.
②部署L2TP(使用xl2tpd和rp-l2tp)
xl2tpd最新版已经包含了l2tp-control,rp-l2tp可不需要安装。
首先安装依赖软件:
yum install libpcap-devel ppp policycoreutils
安装xl2tpd和rp-l2tp:
wget http://sourceforge.net/projects/rp-l2tp/files/rp-l2tp/0.4/rp-l2tp-0.4.tar.gz tar -zxvf rp-l2tp-0.4.tar.gz cd rp-l2tp-0.4 ./configure make cp handlers/l2tp-control /usr/local/sbin/ mkdir /var/run/xl2tpd/ ln -s /usr/local/sbin/l2tp-control /var/run/xl2tpd/l2tp-control
安装xl2tpd:
wget http://www.xelerance.com/wp-content/uploads/software/xl2tpd/xl2tpd-1.3.0.tar.gz tar -zxvf xl2tpd-1.3.0.tar.gz cd xl2tpd-1.3.0 make make install
建立xl2tpd配置文件:
mkdir /etc/xl2tpd vim /etc/xl2tpd/xl2tpd.conf
加入:
[global] ipsec saref = yes [lns default] ip range = 10.82.88.2-10.82.88.254 local ip = 10.82.88.1 refuse chap = yes refuse pap = yes require authentication = yes ppp debug = yes pppoptfile = /etc/ppp/options.xl2tpd length bit = yes
配置ppp 建立options.xl2tpd文件:
vim /etc/ppp/options.xl2tpd
加入:
#require-mschap-v2 #此处不是必须,在非MS环境下 ms-dns 8.8.8.8 ms-dns 8.8.4.4 asyncmap 0 auth crtscts lock hide-password modem debug name l2tpd proxyarp lcp-echo-interval 30 lcp-echo-failure 4
设置拨号用户名和密码:
vim /etc/ppp/chap-secrets
此处注意的是第二列的 l2tpd 为上面配置的name,如果有改动也要修改此处。
# Secrets for authentication using CHAP # client server secret IP addresses myusername l2tpd mypassword *
最后添加iptables转发规则并保存重启
iptables --table nat --append POSTROUTING --jump MASQUERADE /etc/init.d/iptables save /etc/init.d/iptables restart
以debug方式启动l2tp,查看有无错误:
xl2tpd -D
至此,已完成全部安装工作。
另外建议在/etc/ipsec.conf中的 conn L2TP-PSK-noNAT节,加入如下内容以解决少部分情况连接该服务不稳定的情况:
dpddelay=40 dpdtimeout=130 dpdaction=clear leftnexthop=%defaultroute rightnexthop=%defaultroute
备注:如果局域网内有第二台电脑无法连接的情况,请重启IPsec服务,2台都连上后,再连接就正常了。
相关文章:
1、L2TP+IPSec一键安装脚本:http://teddysun.com/135.html
2、CENTOS LINUX 安装配置L2TP+IPSEC http://www.fendou.info/centos-linux-install-l2tp-ipsec-vpn/
文档信息
- 版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0
- 原文网址: https://sunweiwei.com/1933/
- 最后修改时间: 2015年02月25日 16:55:12
20 3 月, 2015 at 下午 2:47
太齐全了,不得不收藏起来
12 6 月, 2015 at 上午 10:22
请问如何将数据加密选项调低?
12 6 月, 2015 at 上午 10:48
我这边按照第一个方法配置好了,但连接的时候出现错误:”错误789:L2TP 连接尝试失败,因为安全层在初始化与远程计算机的协商时遇到一个处理错误”
12 6 月, 2015 at 上午 10:51
看一下系统的错误日志
12 6 月, 2015 at 上午 11:08
惭愧,看不懂。不过,如果手机也连不上,应该是服务器端出的问题吧
12 6 月, 2015 at 下午 5:05
大神,请问如果出现以下几个问题该怎么解决?谢谢了
Version check and ipsec on-path [OK]
Linux Openswan U2.6.32/K(no kernel code presently loaded)
Checking for IPsec support in kernel [FAILED]
SAref kernel support [N/A]
Checking that pluto is running [FAILED]
whack: Pluto is not running (no “/var/run/pluto/pluto.ctl”)
Checking for ‘ip’ command [OK]
Checking /bin/sh is not /bin/dash [OK]
Checking for ‘iptables’ command [OK]
Opportunistic Encryption Support [DISABLED]
13 12 月, 2015 at 上午 7:40
Openswan下載失效
6 5 月, 2016 at 下午 10:15
您好,我是 teddysun.com 的站长。
基于 IPSec 搭建的 L2TP 一键安装脚本,我已经更新到了 2016 最新版。
网址为:
https://teddysun.com/448.html
请您更新一下该文章,这样也能方便到有需求的朋友。
另:如果出现以下信息:Checking for IPsec support in kernel [FAILED]
说明该 OpenVZ 虚拟的 VPS 母服务器内核是不支持 IPSec 的,这个无解。
19 9 月, 2016 at 上午 11:38
你好,我使用这个方法全程无问题,但是 l2tp 链接上后无网络。
我的服务器是 openvz 的 centos5.9 ,支持 ipsec .客户端用 win10 能链接上 l2tp 但无网络,使用 ios10 无法链接。
这个可能是什么情况?