|
|
本脚本适用环境:
% N' B4 [2 J; s6 w' {系统支持:CentOS6+,Debian7+,Ubuntu12+
* x+ h8 V6 q; |# n0 k内存要求:≥128M
4 V( B$ |. d+ i( n: b更新日期:2017 年 05 月 28 日1 K& U8 d, r' y O5 G. H2 e
关于本脚本:
$ ]* |- l @; T4 n名词解释如下
; G! ?) D/ S& k+ J% m: g2 \L2TP(Layer 2 Tunneling Protocol)
: T! s9 {. `; v' K4 JIPSec(Internet Protocol Security)
. f% S5 a- v, r( g" yIKEv2 (Internet Key Exchange v2)
) J. F2 M/ D# X) T2 H能实现 IPsec 的目前总体上有 openswan,libreswan,strongswan 这3种。; j- v9 W2 e$ e; {+ z" X+ T
libreswan 是基于 openswan 的 fork,所以现在各个发行版基本已经看不到 openswan 的身影了。
: M) Y% F" @; ~+ T" ^2 S9 ^0 x. g当然也有使用 strongswan 的。
- t% G6 o% {! r+ x+ Z& F4 y之所以要更新 L2TP 一键安装脚本,是因为随着各个 Linux 发行版不断推陈出新,原有的脚本已经不适应现在的需求。" N1 r/ x' h. w! E3 b/ v/ \# y/ p& J
本脚本通过编译安装最新版 libreswan 来实现 IPSec(CentOS7 下则是全部 yum 安装),yum 或 apt-get 来安装 xl2tpd,再根据各个发行版的使用方法不同,部署防火墙规则。$ k" @9 _5 M: n2 \* v/ v
8 p* [5 o5 S# N9 J7 y# } 隆重介绍 Docker 版 L2TP/IPsec
/ {& z& ^' ~3 [ H3 q+ ?7 ]* U由于此脚本已经很久不更新,因此已经不推荐使用该脚本来安装了。OK,下面隆重介绍一下 Docker 版 L2TP/IPsec。8 U# ?9 U" s2 l
使用 Docker 的好处就是对当前系统的环境没有破坏性,随时可以新建或者删除容器,而且方便快捷,实在是居家必备。( Y r. x" R' @/ `/ t4 I: c
具体请查看《介绍几款 Docker 镜像》此文中的【L2TP/IPsec VPN Server Docker Image】小节。
: v% F( X5 {7 K6 a! ?以及该项目的 Docker Hub 页面,或 Github 页面。, P% x0 o! z6 D% c" u
( J, T1 Z6 k1 B& U 写在前面:
7 R- p0 }7 ]$ J2 S基于 OpenVZ 虚拟化技术的 VPS 需要开启TUN/TAP才能正常使用,购买 VPS 时请先咨询服务商是否支持开启 TUN/TAP。) I4 F* G1 _6 @
OpenVZ 虚拟的 VPS 需要系统内核支持 IPSec 才行。也就是说,母服务器的内核如果不支持的话那就没办法,只能换 VPS。" ^( c- j" T0 M' E& \
因此,一般不建议在 OpenVZ 的 VPS 上安装本脚本。脚本如果检测到该 VPS 为 OpenVZ 架构,会出现警告提醒。
; w2 u+ o. T- h- A& Z, ^如何检测是否支持TUN模块?: W$ d/ \! P7 l: R7 a
执行命令:$ O& W! h0 S' _7 s
cat /dev/net/tun% X- P+ _ X& ?+ P6 O U' f
如果返回信息为:cat: /dev/net/tun: File descriptor in bad state 说明正常
& I& M) t" P* D8 z$ F如何检测是否支持ppp模块?
2 y" J* |8 |2 V2 N1 y- Z* r执行命令:2 j5 b4 X7 K% R y- |
cat /dev/ppp
. h5 t7 D+ }( O6 Z. `! b如果返回信息为:cat: /dev/ppp: No such device or address 说明正常
; G5 h5 p! [/ N4 b当然,脚本在安装时也会执行检查,如果不适用于安装,脚本会予以提示。
2 b. z3 G, z( _$ U$ P 使用方法:) ^3 c* Q: a( `) c
root 用户登录后,运行以下命令:) R6 J% d- E$ n+ o5 T
wget --no-check-certificate https://raw.githubusercontent.co ... master/l2tp.shchmod +x l2tp.sh./l2tp.sh执行后,会有如下交互界面) w: b1 l# f( j: g6 u

1 C* e( Z( u, vPlease input IP-Range:* C n! x5 d& k0 r9 G/ h+ D! P
(Default Range: 192.168.18):
$ n% _& b7 s" Q% t# d5 i输入本地IP段范围(本地电脑连接到VPS后给分配的一个本地IP地址),直接回车意味着输入默认值192.168.18
; S2 A7 k/ {* v/ iPlease input PSK:
. ?) S/ L; I* A/ j9 u; h$ u(Default PSK: teddysun.com):, `1 p' p% Z# S5 y
PSK意为预共享密钥,即指定一个密钥将来在连接时需要用到,直接回车意味着输入默认值teddysun.com
# t! h0 b0 O( O, GPlease input Username:1 T6 j+ T. e& N
(Default Username: teddysun):
1 X, E1 N1 j4 B( q+ o" BUsername意为用户名,即第一个默认用户。直接回车意味着输入默认值teddysun
$ M1 b* O; z; D$ w$ t. a8 oPlease input teddysun’s password:
4 i0 a9 x9 i8 z4 l4 a* z7 s7 `(Default Password: Q4SKhu2EXQ):4 U1 }0 e+ p0 Z* m
输入用户的密码,默认会随机生成一个10位包含大小写字母和数字的密码,当然你也可以指定密码。
3 _7 q3 ]8 v, m8 L7 ~6 QServerIP:your_server_main_IP
1 S7 q/ G% z" Z显示你的 VPS 的主 IP(如果是多 IP 的 VPS 也只显示一个)
! ^4 F* d+ R0 T0 E1 v$ ^8 o2 P; xServer Local IP:192.168.18.1; a" b) w& P+ [* V5 P, T
显示你的 VPS 的本地 IP(默认即可)
& n' n: g' G+ @Client Remote IP Range:192.168.18.2-192.168.18.254! g2 ^7 k3 M3 _2 }$ E8 @ v
显示 IP 段范围
$ t) Y5 M; L% _) g3 nPSK:teddysun.com r! D# Y, @) C# u
显示 PSK6 l O5 q! m2 V q& h8 Z' A
Press any key to start…or Press Ctrl+c to cancel
- Q8 u, [; E; E M5 H6 `按下任意按键继续,如果想取消安装,请按Ctrl+c键& B/ Z. W; q7 m/ K
安装完成后,脚本会执行 ipsec verify 命令并提示如下: P4 w8 Z& [. f& f4 q
If 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!如果你要想对用户进行操作,可以使用如下命令:
# o1 O" x4 M2 nl2tp -a 新增用户! g: T1 y- j' e# q: P
l2tp -d 删除用户( q0 y, p& O, Y- h, V; o
l2tp -m 修改现有的用户的密码
; L; i: q m+ Y/ O: A2 w) Ql2tp -l 列出所有用户名和密码
+ l! h v G! U" Q8 J, ^ o7 h$ E# pl2tp -h 列出帮助信息; d, F, b, ^% d* D- j9 C( |
3 |1 g f' b0 A U7 O7 ~! H6 m
其他事项:
. |1 M, J6 S3 |" n1、脚本在安装完成后,已自动启动进程,并加入了开机自启动。0 j# i. P- G0 M* v
2、脚本会改写 iptables 或 firewalld 的规则。* M7 [/ ^9 a. {% V/ J* T4 w( e
3、脚本安装时,会即时将安装日志写到 /root/l2tp.log 文件里,如果你安装失败,可以通过此文件来寻找错误信息。1 m, v% x2 f( }3 G& L$ o; m3 K/ V
使用命令:
0 C2 p3 M* i( I; Eipsec status (查看 IPSec 运行状态)
& O9 B1 c% ]% q; \ipsec verify (查看 IPSec 检查结果)5 t2 ^4 `8 V) P9 |5 w
/etc/init.d/ipsec start|stop|restart|status (CentOS6 下使用)/ {+ ~$ @: [" j7 B5 u% c9 i
/etc/init.d/xl2tpd start|stop|restart (CentOS6 下使用)- ~5 K) P1 S4 Y
systemctl start|stop|restart|status ipsec (CentOS7 下使用)4 }2 @' v# `. A/ V D4 r
systemctl start|stop|restart xl2tpd (CentOS7 下使用)
! k& U) A. j8 Dservice ipsec start|stop|restart|status (Debian/Ubuntu 下使用)) v! p! N' k1 K# O
service xl2tpd start|stop|restart (Debian/Ubuntu 下使用)
/ P# h2 S4 K- ]4 q& t; _# \ 更新日志) O1 _2 C [! {. Y; @) S
2017 年 05 月 28 日:4 O+ p. J; `* f4 `. e
升级 libreswan 到版本 3.20。* r0 b5 {! v: n
修正 libreswan 的若干配置问题。
% f7 R' c& A+ S. f修正 xl2tpd 的端口监听配置问题。
& ^4 z* Z+ E6 }2 V% B6 Y修正在 CentOS 6 对 libevent2 的依赖问题,改为 yum 安装 libevent2-devel。
1 f7 x( i! D. @8 t) W测试表明,在内网环境的 VPS 里(如AWS, IDCF,GCE,腾讯云,阿里云等)也可以正常使用了。' F( `. a0 N+ S& `7 ]' [ u
2017 年 02 月 25 日:4 P+ j4 a. w' \+ o* X* x
升级 libreswan 到版本 3.19。( U+ W5 t3 e# R0 W
2016 年 09 月 12 日:
$ [# \" z3 N( F" M" z& Y修正了在 CentOS 6 下 libevent2 依赖的问题;* p, } d) O6 ]4 n
新增了一个 -m 选项,用以修改现有用户的密码。
q$ a1 Z9 w" | r# u/ t6 g2016 年 08 月 13 日:" M# c. }/ Z B5 J! z) d9 n
修正 Debian 8 下的 sd-daemon.h: No such file or directory 问题,是由于缺少依赖包 libsystemd-daemon-dev 导致的。
' H3 ?; n- C! \2 n/ Z: X% O2016 年 08 月 05 日:
K* m: j3 l- k6 ^# l9 Q8 g升级 libreswan 到版本 3.18。2 G( a2 k) l, \3 e- y4 e* Q
2016 年 06 月 10 日:
7 T ~; Y0 w& r6 ~2 H D脚本在安装完成后,新增了几个命令,便于操作用户4 w8 o! [/ H0 D' y# `
l2tp -a 新增用户
: K* F' s1 E% c. cl2tp -d 删除用户
3 {' C; y: s2 W: |2 kl2tp -l 列出所有用户" m" k3 s, I6 P2 S$ J" s$ ]
l2tp -h 列出帮助信息$ I, D1 }0 M0 e$ {' E6 V( r Z
2016 年 04 月 25 日:
# u$ N4 L7 _" B9 A2 P3 N3 t4、在 Vultr 的 Debian 7的系统模板下安装时,软件包 libcurl4-nss-dev 会出现依赖错误。如下所示:
0 \' u! t+ L N/ I% ^8 m. JThe 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 又依赖了其他几种软件包。总之最后的依赖关系如下: : a0 V3 B/ I) B% D( l
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 即可。' o; h2 e, L8 h" k. N5 R1 z9 {
apt-get -y remove libp11-kit0apt-get -y --no-install-recommends install libcurl4-nss-dev wget然后再运行脚本安装即可。2 h! u4 h" U% l
2016 年 04 月 22 日:
6 E6 c9 n5 O4 D: ?, Y修复了在 Ubuntu 16.04 下因为默认缺少 python 命令而导致 ipsec verify 等命令不能用的问题。9 c, `. z3 i1 r( q* B
2016 年 04 月 19 日:
5 o: d/ I. H* C$ l修复了在 Debian 7 下因为 libnss3 和 libnspr4 的版本过低而导致编译 libreswan 失败的问题。: l6 U4 M2 I) ]+ ~. Z* a
2016 年 04 月 18 日:1 i- s' l9 G6 n( |1 I0 m
目前在 Debian 7 上测试的结果,因为 libnss3 和 libnspr4 的版本过低而导致编译 libreswan 失败。临时解决办法是 dpkg 安装 libnss3_3.17.2 和 libnspr4_4.10.7 的 deb 包后重试。$ _2 Q2 B3 V& I5 r @
参考链接:
. o8 b" n4 \. X7 ihttps://libreswan.org/wiki/3.14_on_Debian_Wheezy
# V; C6 \( Z% ohttps://github.com/libreswan/libreswan
0 ^6 d. z1 s/ ? v, i+ x4 q0 T/ G4 ]) P
|
|