|
|
本脚本适用环境:/ D* @; I, P L; W
系统支持:CentOS6+,Debian7+,Ubuntu12+
' _* r V5 p. J内存要求:≥128M
" Z3 |0 S/ P& H1 T, h k更新日期:2017 年 05 月 28 日4 z t: \, U8 Y/ C
关于本脚本:
3 d! ]; a M q4 |9 D名词解释如下
$ l0 ~+ ]8 } Q# XL2TP(Layer 2 Tunneling Protocol)* G% T5 Y2 Z# W" \7 @* i3 d
IPSec(Internet Protocol Security)/ B& ]& [+ \2 w) Q& Q: I6 o
IKEv2 (Internet Key Exchange v2)
' U9 y4 M T' Q3 [9 l能实现 IPsec 的目前总体上有 openswan,libreswan,strongswan 这3种。/ X) w; b; W5 G5 e% j
libreswan 是基于 openswan 的 fork,所以现在各个发行版基本已经看不到 openswan 的身影了。( y o q8 g2 M1 Z* }* {4 P# o
当然也有使用 strongswan 的。8 W+ H! ^: [+ U% E9 l4 W3 N$ i8 L* V
之所以要更新 L2TP 一键安装脚本,是因为随着各个 Linux 发行版不断推陈出新,原有的脚本已经不适应现在的需求。, P/ W# G2 B v% J
本脚本通过编译安装最新版 libreswan 来实现 IPSec(CentOS7 下则是全部 yum 安装),yum 或 apt-get 来安装 xl2tpd,再根据各个发行版的使用方法不同,部署防火墙规则。
% |( I' v1 U F( w0 u3 m8 c5 F * S- _: [6 v/ D( y6 M
隆重介绍 Docker 版 L2TP/IPsec
: A- K9 T# I+ q) _4 c6 A' U }由于此脚本已经很久不更新,因此已经不推荐使用该脚本来安装了。OK,下面隆重介绍一下 Docker 版 L2TP/IPsec。
3 T- S' J8 D8 s" w8 h* q使用 Docker 的好处就是对当前系统的环境没有破坏性,随时可以新建或者删除容器,而且方便快捷,实在是居家必备。$ t' P. U0 J" Y# d
具体请查看《介绍几款 Docker 镜像》此文中的【L2TP/IPsec VPN Server Docker Image】小节。
9 @) w6 E5 ]$ w7 L, `以及该项目的 Docker Hub 页面,或 Github 页面。0 O# _( |; d2 K
% e3 V+ m3 N2 F9 ]
写在前面:
G: n7 K/ B& L. E2 T基于 OpenVZ 虚拟化技术的 VPS 需要开启TUN/TAP才能正常使用,购买 VPS 时请先咨询服务商是否支持开启 TUN/TAP。6 u- |# i. c, n& {: D. G, e
OpenVZ 虚拟的 VPS 需要系统内核支持 IPSec 才行。也就是说,母服务器的内核如果不支持的话那就没办法,只能换 VPS。
# ^0 d: Y9 e3 P4 y1 }# x因此,一般不建议在 OpenVZ 的 VPS 上安装本脚本。脚本如果检测到该 VPS 为 OpenVZ 架构,会出现警告提醒。
4 m) K2 O: R2 x如何检测是否支持TUN模块?
. I. J3 Q2 y5 ^- Z6 {. E) x7 u执行命令:! g9 F$ H6 p' E. n
cat /dev/net/tun
4 e+ p* e7 K6 {如果返回信息为:cat: /dev/net/tun: File descriptor in bad state 说明正常0 i& P" y( Z% d; Y
如何检测是否支持ppp模块?
# n9 P% @2 \: O( O执行命令:
& p; z( g+ k% m& y1 ~cat /dev/ppp
2 M+ P) m" G4 |# Y" _如果返回信息为:cat: /dev/ppp: No such device or address 说明正常
9 M& I- d& `) Z5 v当然,脚本在安装时也会执行检查,如果不适用于安装,脚本会予以提示。
7 `4 A2 v4 U( q5 R' |* K5 g 使用方法:
% {* g4 S i0 M2 z2 d7 A/ groot 用户登录后,运行以下命令:+ S" o6 W+ W& g! q; ~, i8 Y+ [9 m
wget --no-check-certificate https://raw.githubusercontent.co ... master/l2tp.shchmod +x l2tp.sh./l2tp.sh执行后,会有如下交互界面$ Y8 B f' h/ N3 L
+ Y# p H. a" Y0 ~. \+ q+ c7 {
Please input IP-Range:
) s0 o# a+ j# U8 R(Default Range: 192.168.18):
9 T ~- ~3 l) L) `6 b输入本地IP段范围(本地电脑连接到VPS后给分配的一个本地IP地址),直接回车意味着输入默认值192.168.18
f% X* g Y+ ?7 g, OPlease input PSK:; A6 f; v' N1 B8 p
(Default PSK: teddysun.com):" |4 d' V& P- }- P; g
PSK意为预共享密钥,即指定一个密钥将来在连接时需要用到,直接回车意味着输入默认值teddysun.com }1 V1 t; y+ t' S9 J" H" `* [
Please input Username:, S7 N$ |6 C: Q5 d( d/ ]
(Default Username: teddysun):
% a2 m' }; X. ?2 CUsername意为用户名,即第一个默认用户。直接回车意味着输入默认值teddysun
2 d) l* M# O$ K$ n$ y. tPlease input teddysun’s password:
7 `% u. A8 |4 B7 q(Default Password: Q4SKhu2EXQ):
$ n5 ~* V4 k5 A% u: l( j输入用户的密码,默认会随机生成一个10位包含大小写字母和数字的密码,当然你也可以指定密码。
' }6 K! c5 ^* |& E: q/ JServerIP:your_server_main_IP
' O, H% q; v2 G0 X3 ?) f显示你的 VPS 的主 IP(如果是多 IP 的 VPS 也只显示一个)
. ^: j& Z$ ~1 Y$ s7 d tServer Local IP:192.168.18.1$ z2 B+ Y1 C. i. K
显示你的 VPS 的本地 IP(默认即可)
4 ^# ^/ y# ^* CClient Remote IP Range:192.168.18.2-192.168.18.254+ X3 `" G, m* O' i0 R
显示 IP 段范围
! ^7 Y6 T. \0 Y% r+ |0 `PSK:teddysun.com. v+ m0 b" i5 w4 N" C
显示 PSK9 W v" X1 p8 S$ Q" m
Press any key to start…or Press Ctrl+c to cancel
* ?. o1 j' d* L3 U+ u2 V按下任意按键继续,如果想取消安装,请按Ctrl+c键4 p. ?8 N0 l3 s. J/ E
安装完成后,脚本会执行 ipsec verify 命令并提示如下:
( k0 K2 e/ k( o4 Z2 oIf there are no [FAILED] above, then you can connect to yourL2TP VPN Server with the default Username/Password is below:ServerIP:your_server_IPPSK:your PSKUsername:your usenamePassword:your passwordIf you want to modify user settings, please use command(s):l2tp -a (Add a user)l2tp -d (Delete a user)l2tp -l (List all users)l2tp -m (Modify a user password)Welcome to visit https://teddysun.com/448.htmlEnjoy it!如果你要想对用户进行操作,可以使用如下命令:% P' J+ x+ R- H/ w( K; I
l2tp -a 新增用户6 z i7 ]3 Z: G+ j, a3 T E
l2tp -d 删除用户" }7 A2 |$ \6 E: r" o& k! [0 a
l2tp -m 修改现有的用户的密码/ m3 b& A3 j7 ? e
l2tp -l 列出所有用户名和密码
' V! }$ M. s* r* Sl2tp -h 列出帮助信息
! J: a% S7 M1 Z) M. f8 b! F0 m, @9 U
其他事项:# F$ [/ E1 S: E4 _* Y
1、脚本在安装完成后,已自动启动进程,并加入了开机自启动。
; K5 v" b0 h5 u; v9 e9 q) E2、脚本会改写 iptables 或 firewalld 的规则。
: U$ L2 M7 K+ I3 |/ q3、脚本安装时,会即时将安装日志写到 /root/l2tp.log 文件里,如果你安装失败,可以通过此文件来寻找错误信息。
. D3 y, R& r" h: n | 使用命令:
, g3 S/ _2 b$ p3 Vipsec status (查看 IPSec 运行状态)
1 q* m7 v/ j- m& Xipsec verify (查看 IPSec 检查结果)
/ \" ^. H' z# O: p5 E/etc/init.d/ipsec start|stop|restart|status (CentOS6 下使用)0 n: p! U; I% Z' j/ ?* i4 G) a) m
/etc/init.d/xl2tpd start|stop|restart (CentOS6 下使用)" m6 ?1 `2 x" S7 B' O
systemctl start|stop|restart|status ipsec (CentOS7 下使用)
7 p8 Q3 v9 q; P4 p: O Lsystemctl start|stop|restart xl2tpd (CentOS7 下使用)
G6 C6 x8 g T: Q4 }+ |service ipsec start|stop|restart|status (Debian/Ubuntu 下使用)8 I- v0 d- Q5 i( O3 b
service xl2tpd start|stop|restart (Debian/Ubuntu 下使用)7 b W, i9 `9 r- ]" E
更新日志
4 A. {; f" a; P' I7 a9 S2017 年 05 月 28 日:1 e# e6 |# [4 M: m& n# s5 S( W
升级 libreswan 到版本 3.20。; }" s8 a# ]+ g- D1 t+ Y1 F
修正 libreswan 的若干配置问题。6 j4 v: Y8 a* g, R6 ^
修正 xl2tpd 的端口监听配置问题。
1 X7 c; I* N0 G% O4 p9 L& Z修正在 CentOS 6 对 libevent2 的依赖问题,改为 yum 安装 libevent2-devel。 z8 O+ |% _' {" L$ ]" `; Y9 K; G% o
测试表明,在内网环境的 VPS 里(如AWS, IDCF,GCE,腾讯云,阿里云等)也可以正常使用了。
5 K) H8 C$ i) D9 j0 X- f2 F2017 年 02 月 25 日:
7 o! W' F) e7 q# D& [ ], C升级 libreswan 到版本 3.19。
5 @, s, p4 b3 X* z& V2016 年 09 月 12 日:
* n. Q; D0 i0 i6 s+ N修正了在 CentOS 6 下 libevent2 依赖的问题;$ x3 y1 y4 Y3 [' D( S
新增了一个 -m 选项,用以修改现有用户的密码。
8 t3 u9 v6 U3 e |+ L; v3 X2016 年 08 月 13 日:
; B; _$ z# v0 I% ]# q修正 Debian 8 下的 sd-daemon.h: No such file or directory 问题,是由于缺少依赖包 libsystemd-daemon-dev 导致的。" o* B% }- j$ I: P
2016 年 08 月 05 日:5 ~) n5 o. V. [8 H* [ }
升级 libreswan 到版本 3.18。! a# R! w/ f9 d
2016 年 06 月 10 日:0 ~( S- x I( S
脚本在安装完成后,新增了几个命令,便于操作用户 Z# k' ?. Q$ O" X% D+ G$ |: o" G. s% h
l2tp -a 新增用户; q Z3 }) i/ [/ s1 ?) X' q/ H5 _- p
l2tp -d 删除用户
, X+ f) ?, a! |: C) U" u' Dl2tp -l 列出所有用户
' V) w2 L+ p. t4 K, b. ml2tp -h 列出帮助信息
! t7 a3 o4 N' p- S1 d2016 年 04 月 25 日:
- ?! p$ }9 C0 |4、在 Vultr 的 Debian 7的系统模板下安装时,软件包 libcurl4-nss-dev 会出现依赖错误。如下所示:
; N( g1 ^* Q. ^( V# e J! W) ~! U) LThe following packages have unmet dependencies:libcurl4-nss-dev : Depends: libldap2-dev but it is not going to be installedDepends: librtmp-dev but it is not going to be installed而 libldap2-dev 和 librtmp-dev 又依赖了其他几种软件包。总之最后的依赖关系如下:
& a, e6 S! \2 [libldap2-dev : Depends: libldap-2.4-2 (= 2.4.31-2+deb7u1) but 2.4.31+really2.4.40+dfsg-1+deb8u1~bpo70+1 is to be installedlibrtmp-dev : Depends: libgnutls-dev but it is not going to be installedlibgnutls-dev : Depends: libp11-kit-dev (>= 0.4) but it is not going to be installedlibp11-kit-dev : Depends: libp11-kit0 (= 0.12-3) but 0.20.7-1~bpo70+1 is to be installed那么解决办法就是把最底层的依赖包 libp11-kit0 先卸载掉,然后再安装 libcurl4-nss-dev 即可。$ ^- g( x; C+ V1 g" p
apt-get -y remove libp11-kit0apt-get -y --no-install-recommends install libcurl4-nss-dev wget然后再运行脚本安装即可。, \3 _0 h; n, y; L* u a9 t
2016 年 04 月 22 日:" I* W0 P2 D" X/ S. } O9 Y5 D) i
修复了在 Ubuntu 16.04 下因为默认缺少 python 命令而导致 ipsec verify 等命令不能用的问题。. [/ x% r1 ?1 e
2016 年 04 月 19 日:
, |; G0 A4 U" r' K修复了在 Debian 7 下因为 libnss3 和 libnspr4 的版本过低而导致编译 libreswan 失败的问题。
$ V* o) r/ A, }7 c* `) ^2016 年 04 月 18 日:1 ] o4 z3 ?# ?" S
目前在 Debian 7 上测试的结果,因为 libnss3 和 libnspr4 的版本过低而导致编译 libreswan 失败。临时解决办法是 dpkg 安装 libnss3_3.17.2 和 libnspr4_4.10.7 的 deb 包后重试。 q* i( H" V/ H" Y, a; O( b
参考链接:/ Z+ B7 I3 `! ^! {
https://libreswan.org/wiki/3.14_on_Debian_Wheezy) i2 ^% Z1 M/ |' n; |4 b9 ?$ Z
https://github.com/libreswan/libreswan/ f ^7 S7 n/ P3 f$ V
3 v7 b5 S1 W) s; t5 p( p; ^+ w |
|