|
|
本脚本适用环境:
$ M) S( z C3 M; ~系统支持:CentOS6+,Debian7+,Ubuntu12+
. x* b! R l* _3 }8 _ j" \! }4 f内存要求:≥128M. A; @% y; s2 q- O. N) K
更新日期:2017 年 05 月 28 日4 Y2 _9 k# k! z# P, z M2 N
关于本脚本:# B- a, y# H6 y) m; V% r
名词解释如下
/ W3 w# h; s" X. d- Z& q& G/ c; ~L2TP(Layer 2 Tunneling Protocol)% X) B* V8 t0 E$ O
IPSec(Internet Protocol Security)
- D0 k" j% J+ x: Z6 x2 i6 bIKEv2 (Internet Key Exchange v2)
) @4 i# n' F% d% R1 S能实现 IPsec 的目前总体上有 openswan,libreswan,strongswan 这3种。
, k, O. q/ K2 f" dlibreswan 是基于 openswan 的 fork,所以现在各个发行版基本已经看不到 openswan 的身影了。
0 `4 R* L- f! ?( A D: r当然也有使用 strongswan 的。/ b: ^/ m/ X/ x6 H
之所以要更新 L2TP 一键安装脚本,是因为随着各个 Linux 发行版不断推陈出新,原有的脚本已经不适应现在的需求。" J7 w8 R* u# Q6 G
本脚本通过编译安装最新版 libreswan 来实现 IPSec(CentOS7 下则是全部 yum 安装),yum 或 apt-get 来安装 xl2tpd,再根据各个发行版的使用方法不同,部署防火墙规则。
& ?1 g; b2 ~9 N3 ?6 Q$ f
k0 G4 D n/ o( W& H& p/ [9 k2 W+ j 隆重介绍 Docker 版 L2TP/IPsec
4 C G1 s4 k$ q* Z, ?由于此脚本已经很久不更新,因此已经不推荐使用该脚本来安装了。OK,下面隆重介绍一下 Docker 版 L2TP/IPsec。
. M1 N: p7 }+ {3 Z使用 Docker 的好处就是对当前系统的环境没有破坏性,随时可以新建或者删除容器,而且方便快捷,实在是居家必备。
) V' s) y8 T3 P8 T! s7 p$ }具体请查看《介绍几款 Docker 镜像》此文中的【L2TP/IPsec VPN Server Docker Image】小节。
# O* K# A- f) o1 ~+ N) D) x$ W以及该项目的 Docker Hub 页面,或 Github 页面。$ \3 m1 e$ R9 }4 D3 F4 I
1 E) }9 n: g" \: w% [* T! I+ n1 I 写在前面:* A! z# I2 s7 E1 S6 o
基于 OpenVZ 虚拟化技术的 VPS 需要开启TUN/TAP才能正常使用,购买 VPS 时请先咨询服务商是否支持开启 TUN/TAP。
' L& J- p7 G0 d1 ?# }0 KOpenVZ 虚拟的 VPS 需要系统内核支持 IPSec 才行。也就是说,母服务器的内核如果不支持的话那就没办法,只能换 VPS。
! Q" `$ k3 Q" j: K因此,一般不建议在 OpenVZ 的 VPS 上安装本脚本。脚本如果检测到该 VPS 为 OpenVZ 架构,会出现警告提醒。
' E: y( F: @6 T0 X- P L$ E& Q7 A如何检测是否支持TUN模块?
* ~! h3 U" {9 N1 s" C: ~% |执行命令:0 H |& i8 S' R: Q: B+ o0 T1 O
cat /dev/net/tun
, n* [, h" A& F1 G如果返回信息为:cat: /dev/net/tun: File descriptor in bad state 说明正常
( n+ C- @" Z7 E$ h+ q6 l9 |如何检测是否支持ppp模块?0 p9 O1 r6 j! s$ A! m
执行命令:, r) u0 s, X. n ^3 }
cat /dev/ppp
8 N8 j) Y7 T) D9 d如果返回信息为:cat: /dev/ppp: No such device or address 说明正常9 E0 N$ e; N7 u8 e4 ~
当然,脚本在安装时也会执行检查,如果不适用于安装,脚本会予以提示。5 ^' a5 V: @4 D. Z
使用方法:
3 ]( a: F( Z. a6 O5 eroot 用户登录后,运行以下命令:" I( e2 ?2 @! N, j4 f7 X
wget --no-check-certificate https://raw.githubusercontent.co ... master/l2tp.shchmod +x l2tp.sh./l2tp.sh执行后,会有如下交互界面
# l9 A9 P+ l! |# ^3 L, W D 8 F) o+ U- N* t7 l( S2 W
Please input IP-Range:
6 z/ }& w% b; S# z6 }(Default Range: 192.168.18):
; Z7 m: T7 S* _9 J输入本地IP段范围(本地电脑连接到VPS后给分配的一个本地IP地址),直接回车意味着输入默认值192.168.18
0 f1 `- j4 ~# IPlease input PSK:$ d( J4 f6 ?2 @
(Default PSK: teddysun.com):
" s' F7 ]2 k/ }+ f6 c# [2 dPSK意为预共享密钥,即指定一个密钥将来在连接时需要用到,直接回车意味着输入默认值teddysun.com" U$ B- u2 H7 S: z' L+ f
Please input Username:* V% ]8 [* q$ @; a" e" K+ H. k2 |5 H* [
(Default Username: teddysun):% q3 M: X: q" Z. f
Username意为用户名,即第一个默认用户。直接回车意味着输入默认值teddysun: i1 D G- C, g, ~+ T/ s4 }1 \4 O
Please input teddysun’s password:
" p. s% y0 \) O: T(Default Password: Q4SKhu2EXQ):
+ m8 Z6 j Z, g* j# w1 x. T: S输入用户的密码,默认会随机生成一个10位包含大小写字母和数字的密码,当然你也可以指定密码。/ h9 n" t) _: e( U: X- }. `9 w
ServerIP:your_server_main_IP
9 Q, Y, [. A, h; j显示你的 VPS 的主 IP(如果是多 IP 的 VPS 也只显示一个)3 P' u. m$ M; x7 l5 s
Server Local IP:192.168.18.12 c/ P4 w0 ]" z
显示你的 VPS 的本地 IP(默认即可)
, J" l5 t. g4 _" @9 v6 r+ l' ~Client Remote IP Range:192.168.18.2-192.168.18.254; t8 L1 C& i* k. L. p* ]
显示 IP 段范围
9 [: \+ b9 F, ~PSK:teddysun.com" C% U T( K2 ~+ ~0 N
显示 PSK
Z: r) X* T& s, ~' R, q% p+ K3 s7 \Press any key to start…or Press Ctrl+c to cancel
- p, k- k7 t X% H3 V( E( J7 H按下任意按键继续,如果想取消安装,请按Ctrl+c键) C% S T% c' u' c0 N) d! {! x9 X# D
安装完成后,脚本会执行 ipsec verify 命令并提示如下: a7 ~' y) w, F
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!如果你要想对用户进行操作,可以使用如下命令:% J8 y, u3 m9 H8 Q
l2tp -a 新增用户* Z3 S4 a8 [! D3 s
l2tp -d 删除用户
1 p- ^# \8 M! Z+ h D0 ]! @# }l2tp -m 修改现有的用户的密码
! `5 f9 f% Z5 a Vl2tp -l 列出所有用户名和密码
0 W' _3 H/ ]* i- @. P' Cl2tp -h 列出帮助信息
, |0 ?# C% X9 l+ X# ~( d
& e" f6 \; k8 i: K* \4 w% _, H 其他事项:
9 s6 T! y* z. x) E1、脚本在安装完成后,已自动启动进程,并加入了开机自启动。
# u! M2 W& W% n3 g2 {2、脚本会改写 iptables 或 firewalld 的规则。
2 M4 E" k, T- g, J9 h$ [3、脚本安装时,会即时将安装日志写到 /root/l2tp.log 文件里,如果你安装失败,可以通过此文件来寻找错误信息。
, V U' s! }( y6 K 使用命令:$ `7 G4 D! c% m
ipsec status (查看 IPSec 运行状态)- n3 i6 T9 k+ _
ipsec verify (查看 IPSec 检查结果)
; ~6 `, U$ _+ Y( X4 L" R/etc/init.d/ipsec start|stop|restart|status (CentOS6 下使用)
0 {0 }/ f- z i0 O/ |* d [- @/ n/etc/init.d/xl2tpd start|stop|restart (CentOS6 下使用)
$ W$ E3 t7 Y" Ksystemctl start|stop|restart|status ipsec (CentOS7 下使用)
- k* Y" ^* _8 K* |systemctl start|stop|restart xl2tpd (CentOS7 下使用)
3 s2 O# S, F) Q- u; {service ipsec start|stop|restart|status (Debian/Ubuntu 下使用)
" `' q2 k/ W* U3 |service xl2tpd start|stop|restart (Debian/Ubuntu 下使用)' ^# q9 B' Y# M& Q4 W$ b; H! U
更新日志
x/ j8 h, |/ c/ j0 ?$ \5 T2017 年 05 月 28 日:
& ?5 g" ~5 a1 s4 N( V, w升级 libreswan 到版本 3.20。# E/ k5 E9 |- [* A6 c/ W
修正 libreswan 的若干配置问题。5 p- ]2 C# S1 h
修正 xl2tpd 的端口监听配置问题。
0 o/ I1 I9 Y; g3 G: b修正在 CentOS 6 对 libevent2 的依赖问题,改为 yum 安装 libevent2-devel。
4 a+ O, C9 f/ U5 e1 T7 Q+ E+ e测试表明,在内网环境的 VPS 里(如AWS, IDCF,GCE,腾讯云,阿里云等)也可以正常使用了。& H+ d) y* O" ]0 n5 E1 t
2017 年 02 月 25 日:
0 Q( e$ @/ H! |. v8 S( i( X( n% V升级 libreswan 到版本 3.19。+ ?$ N8 P+ \( f0 ]7 ?; n% o
2016 年 09 月 12 日:$ W! T/ i9 e1 D; e0 U1 r
修正了在 CentOS 6 下 libevent2 依赖的问题;
# S( W1 t- p" s+ q新增了一个 -m 选项,用以修改现有用户的密码。
! f1 `* n0 ?* q! R0 T2016 年 08 月 13 日: S. L1 m: m. E# b( e: A, T4 L
修正 Debian 8 下的 sd-daemon.h: No such file or directory 问题,是由于缺少依赖包 libsystemd-daemon-dev 导致的。
% N5 }7 l4 `1 G" y' L9 I& T0 c2016 年 08 月 05 日:2 F. b% G1 d2 p) R2 m- T8 x, \$ s
升级 libreswan 到版本 3.18。0 {) O; L3 w3 ]5 x
2016 年 06 月 10 日:
- x2 { s9 I Y/ @" ~2 @3 W脚本在安装完成后,新增了几个命令,便于操作用户/ o& O+ z6 v D, L
l2tp -a 新增用户
( K' m1 I5 @' V/ b0 Ll2tp -d 删除用户( J0 W; p6 s' x+ L: O
l2tp -l 列出所有用户
6 w' e& ]7 d8 ?. o6 ~. ]l2tp -h 列出帮助信息9 N4 o3 N/ H3 i$ T
2016 年 04 月 25 日:! H1 Q5 ?; }: E7 f3 x
4、在 Vultr 的 Debian 7的系统模板下安装时,软件包 libcurl4-nss-dev 会出现依赖错误。如下所示:
! ?! F# l+ a( ~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 y: s. x* v* n
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 即可。0 H8 v3 f; c: i9 {3 R+ e
apt-get -y remove libp11-kit0apt-get -y --no-install-recommends install libcurl4-nss-dev wget然后再运行脚本安装即可。
$ e+ L7 i- C; I5 `: V" d6 @6 g2016 年 04 月 22 日:. J' _2 Y, z( o r
修复了在 Ubuntu 16.04 下因为默认缺少 python 命令而导致 ipsec verify 等命令不能用的问题。
4 K- b' [, P! o: p: d. @2016 年 04 月 19 日:: z# _7 E+ i. C% ~4 x
修复了在 Debian 7 下因为 libnss3 和 libnspr4 的版本过低而导致编译 libreswan 失败的问题。, A! T5 b: Z- @& H
2016 年 04 月 18 日:
- ?6 m2 e2 B# n" Q/ j- Y/ L! o目前在 Debian 7 上测试的结果,因为 libnss3 和 libnspr4 的版本过低而导致编译 libreswan 失败。临时解决办法是 dpkg 安装 libnss3_3.17.2 和 libnspr4_4.10.7 的 deb 包后重试。
) x- X7 D( D4 X! ?, i) W* J: x+ R3 ]参考链接:$ }! j, o( o G/ ]+ j
https://libreswan.org/wiki/3.14_on_Debian_Wheezy
, k+ h& V; w# Chttps://github.com/libreswan/libreswan
3 h0 ~6 k3 ~6 o* M2 K) G3 l s; ]# t" Y e+ q* X
|
|