网站首页 > 博客文章 正文
在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 install make gcc gmp-devel bison flex lsof
其次安装Openswan
wget http://www.openswan.org/download/openswan-2.6.38.tar.gztar -zxvf openswan-2.6.38.tar.gz cd openswan-2.6.38make 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.gztar -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.gztar -zxvf xl2tpd-1.3.0.tar.gz cd xl2tpd-1.3.0make 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.254local ip = 10.82.88.1refuse chap = yes refuse pap = yesrequire 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.8ms-dns 8.8.4.4asyncmap 0auth crtsctslockhide-password modem debug name l2tpd proxyarp lcp-echo-interval 30lcp-echo-failure 4
设置拨号用户名和密码:
vim /etc/ppp/chap-secrets
此处注意的是第二列的 l2tpd 为上面配置的name,如果有改动也要修改此处。
# Secrets for authentication using CHAP# client server secret IP addressesmyusername 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=40dpdtimeout=130dpdaction=clear leftnexthop=%defaultroute rightnexthop=%defaultroute
至此实现了备选方案的部署
猜你喜欢
- 2024-09-11 一文读懂:RHEL如何通过control-center建立安全的IPsec VPN连接
- 2024-09-11 出差在外异地办公不愁,蒲公英X6打造最强VPN异地组网
- 2024-09-11 linux下开发一个应用,首先要做什么?
- 2024-09-11 Fedora33下搭建WireGuard虚拟专用网
- 2024-09-11 Centos6下搭建openvpn并使用密钥形式登录
- 2024-09-11 使用虚拟专用网络的Python Web抓取
- 2024-09-11 搭建家庭服务器:Linux全攻略(家庭服务器搭建局域网)
- 2024-09-11 CentOS 搭建 OpenVPN 服务(在linux centos 7搭建openvpn服务与管理)
- 2024-09-11 ORB305连接Linux搭建的OpenVPN服务器操作手册
你 发表评论:
欢迎- 06-23MySQL合集-mysql5.7及mysql8的一些特性
- 06-23MySQL CREATE TABLE 简单设计模板交流
- 06-23MYSQL表设计规范(mysql设计表注意事项)
- 06-23MySQL数据库入门(四)数据类型简介
- 06-23数据丢失?别慌!MySQL备份恢复攻略
- 06-23MySQL设计规范(mysql 设计)
- 06-23MySQL数据实时增量同步到Elasticsearch
- 06-23MySQL 避坑指南之隐式数据类型转换
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)