CentOS Linux 安装配置L2tp+IPsec VPN 解决VPN不稳定

在VPS上部署VPN有一段时间了,但用SSH较多,偶尔用手机连连VPN。最近用的时候遇到一些小问题:“断开VPN连接后再次连接的时候就连不上了”, 重启IPsec后才能恢复。当时安装的时候图省心,直接用的一键脚本,虽然过程中也遇到些小问题,但后来都谷歌解决了,之后也没有记录安装过程。今天连带解决这个问题转发一帖就当复习了。

考虑到很多网络环境的不确定已经一些移动通信网络对pptp的不支持,早晚要用得上L2tp,所以这次就顺便搭一下。

第二层隧道协议L2TP(Layer 2 Tunneling Protocol)是一种工业标准的Internet隧道协议,它使用UDP的1701端口进行通信。L2TP本身并没有任何加密,但是我们可以使用IPSec对L2TP包进行加密。

仅搭建L2tp即可实现大部分功能,但一般情况下L2tp都与IPSec配合使用,MacOS与iOS的设备貌似对L2tp的支持都必须使用IPSec,所以有必要部署IPSec。

部署IPSec

首先安装必备依赖包

yum -y install make gcc gmp-devel bison flex lsof
其次安装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
编辑配置文件/etc/ipsec.conf:

vim /etc/ipsec.conf
查找protostack=auto,修改为:

protostack=netkey
在最后加入:

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,下同。 设置共享密钥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 失败,可以先忽略此项错误,虽然我此项FAIL,但不影响使用,根据邮件列表的内容来看很可能是一个未解决的判断BUG, 查看日志中出现 IPSec connection established此类字样基本没有问题。

部署L2TP(使用xl2tpd和rp-l2tp)

xl2tpd是由Xelerance Corporation维护的l2tpd应用。但是xl2tpd没有l2tp-control,需要从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用的是目前最新的xl2tpd-1.3.0(更新得不是很快)

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
后继问题解决

部署成功后,可以使用并连接,但每天的连接并不稳定,经常需要重启IPSec。检查日志发现大量类似结果:

Maximum retries exceeded for tunnel 50347. Closing.

经过这几天试验,终于解决,在/etc/ipsec.conf中的 conn L2TP-PSK-noNAT节 加入如下内容解决:

dpddelay=40
dpdtimeout=130
dpdaction=clear
leftnexthop=%defaultroute
rightnexthop=%defaultroute
至此实现了备选方案的部署。 via fish176.com
时间: 2024-10-15 21:24:07

CentOS Linux 安装配置L2tp+IPsec VPN 解决VPN不稳定的相关文章

【ruby】【linux】【irb】CentOS上安装配置ruby开发环境,安装 irb

在读<理解Unix进程>这本书,书中代码是用Ruby写的,就自己想实践一下,搜来搜去要安装配置Ruby,我是centOS6.5的系统.下面这篇不错,我又加入了一点自己的理解和试验. 1 方法一:下载ruby的安装包来进行安装 1.安装编译环境gcc 使用yum install gcc在线安装 2.安装ruby开发环境 PS:经常在搜帖子的时候,大神的文章中都是随随便便下载个什么啊,又没告诉我这样的菜鸟到哪里下,让人几番周折,这里 下载 Ruby - Ruby 官方网站:https://www.

linux常用(一)linux 安装配置 jdk之 安装后找不到安装后的文件目录 解决

linux 安装配置 jdk 应该算是一个很基本的东西.但是我到现在才自己第一次 正式安装.果然出现了问题.. 问题就是 安装之后 找不到 安装路径 ,进而没法配置环境变量. 现象如下: 提示 already installed 之后  用find命令查找 结果还是: 没有显示/usr/java/jdk-1.6.0_27/ 这样的目录 整了很长时间搞不定 ,没别的办法  看到了 安装的包 有.bin的 也有.rpm的 所以决定先百度下 搞清楚 这两种格式有什么区别 整理如下: 用bin文件和用w

记录:CentOS 7 安装配置分布式文件系统 FastDFS 5.1.1

CentOS 7 安装配置分布式文件系统 FastDFS 5.1.1 软件下载:http://download.csdn.net/download/qingchunwuxian1993/9897458 yum-y install net-tools.x86_64 前言 项目中用到文件服务器,有朋友推荐用FastDFS,所以就了解学习了一番,感觉确实颇为强大,在此再次感谢淘宝资深架构师余庆大神开源了如此优秀的轻量级分布式文件系统,本篇文章就记录一下FastDFS的最新版本5.1.1在CentOS7

Linux安装配置varnish web加速器

Linux安装配置varnish web加速器 Varnish是一款高性能的开源HTTP加速器,它可以来做纯粹的代理服务器,负载均衡,但varnish最主要的功能是缓存加速,也是它最出色的地方.下面介绍如何安装和使用. wget -c http://repo.varnish-cache.org/source/varnish-3.0.1.tar.gz tar xzvf varnish-3.0.1.tar.gz cd varnish-3.0.1 ./configure --prefix=/usr/l

Linux安装配置MariaDB数据库全程详解

MariaDB在很多方面强于MySQL,在Linux下如何安装MariaDB数据库成为大家比较头疼的一个问题,下面用实例为大家讲解下 MariaDB是采用Maria存储引擎的MySQL分支版本,在很多方面强于MySQL,那么在Linux下如何安装MariaDB数据库呢?下面小编就给大家介绍下Linux安装配置MariaDB数据库的方法. 说明: 操作系统:CentOS 5.10 32位 MariaDB版本:mariadb-5.5.33a MariaDB数据库存放目录:/data/mysql 准备

centos ansible安装配置

关于ansible就不多做简绍了,直接开始安装配置 [安装环境] [[email protected] ~]# cat /etc/centos-release  CentOS release 6.5 (Final) [[email protected] ~]# uname -a Linux AnsibleServer 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux 安

&lt;转&gt;CentOS 7 安装配置 NFS

CentOS 7  安装配置 NFS 环境 nps 192.168.1.97 client 192.168.1.98 一.yum 安装 yum -y install nfs-utils rpcbind nfs 的配置文件 /etc/expots 默认为空 vi /etc/exports /opt/test/ 192.168.1.0/24(rw,no_root_squash,no_all_squash,sync,anonuid=501,anongid=501) 二.使配置生效 exportfs -

转帖:CentOS 6安装配置LAMP服务器(Apache+PHP5+MySQL)

这篇文章主要介绍了CentOS 6 安装配置LAMP服务器(Apache+PHP5+MySQL)的方法,需要的朋友可以参考下 准备篇: 1.配置防火墙,开启80端口.3306端口vi /etc/sysconfig/iptables-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT #允许80端口通过防火墙-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -

CentOS 7安装配置Apache HTTP Server

原文 CentOS 7安装配置Apache HTTP Server   RPM安装httpd # yum -yinstall httpd //安装httpd会自动安装一下依赖包: apr apr-util httpd-tools mailcap # rpm -qi httpd Name      : httpd Version    : 2.4.6 Release    : 18.el7.centos Architecture: x86_64 Install Date: Mon 11 Aug 2