|
|
本脚本适用环境:
/ c' h0 S: E4 P! A. I- v2 \9 E系统支持:CentOS6+,Debian7+,Ubuntu12+
6 M$ e q% Z3 N# n# `内存要求:≥128M' U6 B/ s! B* _3 P
更新日期:2017 年 05 月 28 日
) H7 l: Y+ A2 E k/ a关于本脚本:
/ E* v% [2 Q3 K* t! m' v- a# g名词解释如下4 M0 x+ F% `2 P7 P- Z
L2TP(Layer 2 Tunneling Protocol), [6 v1 y; W! g/ K( o4 z
IPSec(Internet Protocol Security)7 }3 d9 Y0 I! b3 h! j7 H
IKEv2 (Internet Key Exchange v2)5 P- E" a- p; }& J$ g! p) B2 o( e
能实现 IPsec 的目前总体上有 openswan,libreswan,strongswan 这3种。
: }* v* i1 [# c4 T$ c* Xlibreswan 是基于 openswan 的 fork,所以现在各个发行版基本已经看不到 openswan 的身影了。3 T7 Z' g7 ^! t# L$ n
当然也有使用 strongswan 的。
6 t, x- B( J* w* C之所以要更新 L2TP 一键安装脚本,是因为随着各个 Linux 发行版不断推陈出新,原有的脚本已经不适应现在的需求。
3 f6 {' E6 l5 Z: d& H) x本脚本通过编译安装最新版 libreswan 来实现 IPSec(CentOS7 下则是全部 yum 安装),yum 或 apt-get 来安装 xl2tpd,再根据各个发行版的使用方法不同,部署防火墙规则。
R7 Q0 _4 s+ v! {4 u9 h 0 n( g% {* e; \9 j
隆重介绍 Docker 版 L2TP/IPsec
/ V1 V j% b6 r9 z8 S. y( l由于此脚本已经很久不更新,因此已经不推荐使用该脚本来安装了。OK,下面隆重介绍一下 Docker 版 L2TP/IPsec。7 s1 w% T. t$ o M% _; z* A! a
使用 Docker 的好处就是对当前系统的环境没有破坏性,随时可以新建或者删除容器,而且方便快捷,实在是居家必备。
- v' b4 `% W& r具体请查看《介绍几款 Docker 镜像》此文中的【L2TP/IPsec VPN Server Docker Image】小节。
e, E# w: c& c以及该项目的 Docker Hub 页面,或 Github 页面。, B5 w/ f" u5 M5 c8 E
# q0 ?; V7 ~& _8 L7 h- H, X
写在前面:3 |. v- w% S' w
基于 OpenVZ 虚拟化技术的 VPS 需要开启TUN/TAP才能正常使用,购买 VPS 时请先咨询服务商是否支持开启 TUN/TAP。! g! M+ x2 d' z, N5 G8 |2 L/ _
OpenVZ 虚拟的 VPS 需要系统内核支持 IPSec 才行。也就是说,母服务器的内核如果不支持的话那就没办法,只能换 VPS。
; E$ S; M5 z e/ p因此,一般不建议在 OpenVZ 的 VPS 上安装本脚本。脚本如果检测到该 VPS 为 OpenVZ 架构,会出现警告提醒。
) o: i' c% u( I3 S如何检测是否支持TUN模块?& l: K" U9 H* h" |" h0 p+ t
执行命令:
0 q& V! ~: }# f; r' F7 e& G6 pcat /dev/net/tun
/ @% v; [, ~% c9 c/ R如果返回信息为:cat: /dev/net/tun: File descriptor in bad state 说明正常
5 H# j- [/ ~1 K U. T a. }如何检测是否支持ppp模块?+ {" q5 M+ s! A9 ^6 B' d9 W
执行命令:
/ q. N/ J/ A9 N1 b/ w' Z; a6 O4 Ccat /dev/ppp/ y6 h- [* A; T" z3 t6 c
如果返回信息为:cat: /dev/ppp: No such device or address 说明正常0 P4 |) [6 x M- }6 _6 X7 d
当然,脚本在安装时也会执行检查,如果不适用于安装,脚本会予以提示。" q/ r7 Q9 n" S6 G
使用方法:! c* ^: x# t: c* R
root 用户登录后,运行以下命令:6 y* u" D& D$ E/ L. h# A
wget --no-check-certificate https://raw.githubusercontent.co ... master/l2tp.shchmod +x l2tp.sh./l2tp.sh执行后,会有如下交互界面! n# A5 h5 c5 P9 Q, G. S2 K% M
: U' Z: p6 J7 t4 g
Please input IP-Range:
" O! C" N2 e9 ?' |+ t/ b0 d4 i(Default Range: 192.168.18):
B) g' W0 i! A' K/ U输入本地IP段范围(本地电脑连接到VPS后给分配的一个本地IP地址),直接回车意味着输入默认值192.168.18
9 {8 _- x& b; P% b+ Y/ ]( |# B% dPlease input PSK:. y. }8 g( W$ n# S
(Default PSK: teddysun.com):4 I1 e; z* T# `2 ]7 w
PSK意为预共享密钥,即指定一个密钥将来在连接时需要用到,直接回车意味着输入默认值teddysun.com2 ~+ _' t" W- ~) M+ T6 N
Please input Username:* m. g8 T+ Q# h$ S/ q6 p
(Default Username: teddysun):
q8 U2 h* V$ r* }Username意为用户名,即第一个默认用户。直接回车意味着输入默认值teddysun7 S; g5 u; }# |$ X
Please input teddysun’s password:2 t" Y$ I( N. m- `3 @
(Default Password: Q4SKhu2EXQ):3 S2 u: Q# G4 Z; N! N
输入用户的密码,默认会随机生成一个10位包含大小写字母和数字的密码,当然你也可以指定密码。* N! l6 ^6 L# } X$ a9 V
ServerIP:your_server_main_IP
% q3 a W. k. j6 w* f/ r6 U2 a7 Q4 @显示你的 VPS 的主 IP(如果是多 IP 的 VPS 也只显示一个)
3 I/ p4 @, P4 j4 `) T' \6 N7 J4 XServer Local IP:192.168.18.1& p# _$ D4 M' u' k7 t/ V
显示你的 VPS 的本地 IP(默认即可)
; g% T2 `: n8 O4 _7 sClient Remote IP Range:192.168.18.2-192.168.18.254$ d( K6 L3 E0 e/ J* H* I5 f
显示 IP 段范围
- s {+ a) V; M8 t7 ^$ `: D# o& MPSK:teddysun.com: X- S$ ]6 ~, t- \# ?0 ~; Z
显示 PSK8 n& V8 G" B9 }# V4 O( x8 D9 v
Press any key to start…or Press Ctrl+c to cancel
8 K3 a9 X1 P4 b按下任意按键继续,如果想取消安装,请按Ctrl+c键0 w$ P1 c5 y: w/ o0 L
安装完成后,脚本会执行 ipsec verify 命令并提示如下:
' B& g" Q8 j o# tIf 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!如果你要想对用户进行操作,可以使用如下命令:( `7 P% G# K& B4 i
l2tp -a 新增用户
0 {4 f- I$ }; l( x' H/ l9 i. ]l2tp -d 删除用户3 s6 h x: F* |' R8 ]% ]! B, `
l2tp -m 修改现有的用户的密码0 w' M, y: U( |
l2tp -l 列出所有用户名和密码
' y9 v7 c2 z0 \) k3 fl2tp -h 列出帮助信息$ A) U) j5 s5 ]8 P: q
6 a+ r i4 o: E \ 其他事项:
$ h8 R1 z6 f4 d: \6 P3 P1、脚本在安装完成后,已自动启动进程,并加入了开机自启动。$ r9 A- d% Z) T5 e4 k' C4 P
2、脚本会改写 iptables 或 firewalld 的规则。! s& U# Z E% Z# ?
3、脚本安装时,会即时将安装日志写到 /root/l2tp.log 文件里,如果你安装失败,可以通过此文件来寻找错误信息。5 o3 f1 `) ^: D" u
使用命令:* E7 H) e) @+ Z2 T; x
ipsec status (查看 IPSec 运行状态)) }9 r9 Z" e1 F" F/ O
ipsec verify (查看 IPSec 检查结果)
2 r2 q) ^% [9 _8 |2 |+ p1 J: x6 X/etc/init.d/ipsec start|stop|restart|status (CentOS6 下使用)9 E' S7 D3 M- r* ?
/etc/init.d/xl2tpd start|stop|restart (CentOS6 下使用)1 z4 E4 u" c4 g! d
systemctl start|stop|restart|status ipsec (CentOS7 下使用), H. F! l- A H
systemctl start|stop|restart xl2tpd (CentOS7 下使用)8 q+ i4 \: s3 N8 z
service ipsec start|stop|restart|status (Debian/Ubuntu 下使用)0 Y! l9 `& X2 R# S! u) u
service xl2tpd start|stop|restart (Debian/Ubuntu 下使用)
$ X/ h: p( y/ ~8 T 更新日志
0 z1 c' {- k! c0 Q J. f2017 年 05 月 28 日:
, p4 ?+ f+ h: O) ~0 b9 k& x. S7 N! T升级 libreswan 到版本 3.20。
. `. x0 Z" Q/ q% c2 s. g; P J修正 libreswan 的若干配置问题。. D9 q% K& k) M$ k! X" f& k
修正 xl2tpd 的端口监听配置问题。- H2 Z `' A& v/ ]1 H
修正在 CentOS 6 对 libevent2 的依赖问题,改为 yum 安装 libevent2-devel。
% T$ _9 q+ j* s测试表明,在内网环境的 VPS 里(如AWS, IDCF,GCE,腾讯云,阿里云等)也可以正常使用了。
8 A: I p0 L5 g7 h3 o2017 年 02 月 25 日:, a- Y0 q b) G: i2 Z' k5 m
升级 libreswan 到版本 3.19。
1 Z- S. w- k* V+ V" D8 F/ Z2016 年 09 月 12 日:3 C9 J0 V9 w! I! z2 a
修正了在 CentOS 6 下 libevent2 依赖的问题;
5 T7 E* c$ |8 C1 u& y新增了一个 -m 选项,用以修改现有用户的密码。
3 J2 z- [7 w/ i# k5 [, f* p2016 年 08 月 13 日:$ F, n! t- ~: _1 A
修正 Debian 8 下的 sd-daemon.h: No such file or directory 问题,是由于缺少依赖包 libsystemd-daemon-dev 导致的。
, y1 N, v& L& a4 V2016 年 08 月 05 日:
% d3 N6 y% k5 m& O+ L& Y2 ~. {升级 libreswan 到版本 3.18。+ C" D/ n3 ?" I+ y, r D6 I
2016 年 06 月 10 日:; n7 x5 E2 Y1 p. p
脚本在安装完成后,新增了几个命令,便于操作用户/ X% y0 V$ q8 U+ }7 x* Z6 V
l2tp -a 新增用户2 |3 ]/ d& @* C% b( h
l2tp -d 删除用户: w0 e+ G3 X A. V) e
l2tp -l 列出所有用户0 n3 L$ B, ?. M6 I0 L# U2 s- k' A
l2tp -h 列出帮助信息
5 Z) t! E% O5 M* @2016 年 04 月 25 日:
" T$ I4 a* n' n, b' l' B% M4、在 Vultr 的 Debian 7的系统模板下安装时,软件包 libcurl4-nss-dev 会出现依赖错误。如下所示:1 C( e$ _( S$ J8 G0 O/ ~
The 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 又依赖了其他几种软件包。总之最后的依赖关系如下:
5 I, a. m6 k6 L3 [& Z$ ]2 k5 Qlibldap2-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 即可。3 t* A7 I- X* ]* L# k
apt-get -y remove libp11-kit0apt-get -y --no-install-recommends install libcurl4-nss-dev wget然后再运行脚本安装即可。0 J+ p6 y4 b- i( s3 A
2016 年 04 月 22 日:
- `5 c0 Y8 N. g. J; S修复了在 Ubuntu 16.04 下因为默认缺少 python 命令而导致 ipsec verify 等命令不能用的问题。
; o, a9 i$ u, X& }5 ~2016 年 04 月 19 日:# }0 [5 e- h' x7 X+ _# M& Z
修复了在 Debian 7 下因为 libnss3 和 libnspr4 的版本过低而导致编译 libreswan 失败的问题。; f6 z% k2 I, ?8 Z7 L' F
2016 年 04 月 18 日:' ^( h, t% O) z _8 O7 g4 C* `9 j; H
目前在 Debian 7 上测试的结果,因为 libnss3 和 libnspr4 的版本过低而导致编译 libreswan 失败。临时解决办法是 dpkg 安装 libnss3_3.17.2 和 libnspr4_4.10.7 的 deb 包后重试。6 L) p0 @# s+ r2 K+ p# M8 Q$ W1 @- m
参考链接:
9 l4 T$ I5 n( ^# X+ C* p$ `2 jhttps://libreswan.org/wiki/3.14_on_Debian_Wheezy
# q' F, i0 q- Z( U0 Phttps://github.com/libreswan/libreswan* l \! ~6 Y) t W. V
) V1 ?# }: w! H1 _2 a; M/ } |
|