|
|
本脚本适用环境:
% s0 j; P& T+ L7 j- K0 D# Z a e系统支持:CentOS6+,Debian7+,Ubuntu12+
8 U$ G- e9 t4 {7 r5 \内存要求:≥128M1 o( a8 X. F( H+ x R$ a9 d
更新日期:2017 年 05 月 28 日& r, ~( @1 z4 p7 g4 o' M3 L" d/ [
关于本脚本:
! K& b' V4 y! V$ G8 o7 v& G名词解释如下
D3 X J- ^8 X% }+ h7 u' LL2TP(Layer 2 Tunneling Protocol)/ [0 F; [* Y+ C
IPSec(Internet Protocol Security)
) f- S! b- c9 Q. ?( RIKEv2 (Internet Key Exchange v2)9 n9 m/ h' `& W: j+ l! O0 y5 Y
能实现 IPsec 的目前总体上有 openswan,libreswan,strongswan 这3种。; K% m2 z( @, q. w6 J
libreswan 是基于 openswan 的 fork,所以现在各个发行版基本已经看不到 openswan 的身影了。- Y' C# Z: Y0 a
当然也有使用 strongswan 的。
' F6 H3 ~0 v! I4 n- I& M- [3 V之所以要更新 L2TP 一键安装脚本,是因为随着各个 Linux 发行版不断推陈出新,原有的脚本已经不适应现在的需求。) D" |3 | l. Y' b1 t& M- u9 J
本脚本通过编译安装最新版 libreswan 来实现 IPSec(CentOS7 下则是全部 yum 安装),yum 或 apt-get 来安装 xl2tpd,再根据各个发行版的使用方法不同,部署防火墙规则。
! i) H6 A; m. C P
% `! I- X# O5 S1 B) d% Q 隆重介绍 Docker 版 L2TP/IPsec3 f3 y: w0 S4 Q$ \" b" l
由于此脚本已经很久不更新,因此已经不推荐使用该脚本来安装了。OK,下面隆重介绍一下 Docker 版 L2TP/IPsec。
) Q5 |9 I" p* X1 y使用 Docker 的好处就是对当前系统的环境没有破坏性,随时可以新建或者删除容器,而且方便快捷,实在是居家必备。
, p/ c) \5 D" n) }5 D+ ?& Y具体请查看《介绍几款 Docker 镜像》此文中的【L2TP/IPsec VPN Server Docker Image】小节。" H6 Y5 m" N& T" M& y5 S, W+ u* e
以及该项目的 Docker Hub 页面,或 Github 页面。
' k# u# \/ ]6 }8 m4 |4 W Z5 r9 u }, h( C5 Y
写在前面:) h9 ]: J+ D9 t, z G5 K0 e
基于 OpenVZ 虚拟化技术的 VPS 需要开启TUN/TAP才能正常使用,购买 VPS 时请先咨询服务商是否支持开启 TUN/TAP。
8 V0 t3 k* g- O% [1 r1 _# N; g* AOpenVZ 虚拟的 VPS 需要系统内核支持 IPSec 才行。也就是说,母服务器的内核如果不支持的话那就没办法,只能换 VPS。) D( @4 L" x; G9 r- X" S
因此,一般不建议在 OpenVZ 的 VPS 上安装本脚本。脚本如果检测到该 VPS 为 OpenVZ 架构,会出现警告提醒。
0 N4 M* V6 ]. r5 J) ` A如何检测是否支持TUN模块?
- V, K% [- ]& \) e2 s! L3 E执行命令:
2 u' f/ a" {. T- E: q. @; ?cat /dev/net/tun
; g! n4 O3 n5 s, U; b' { |如果返回信息为:cat: /dev/net/tun: File descriptor in bad state 说明正常1 G# n8 q0 \8 G5 ?+ n h
如何检测是否支持ppp模块?
7 d- P+ R9 N: e8 g$ v/ j+ F执行命令:+ j8 {2 A0 \# ]
cat /dev/ppp8 I$ X$ ?8 t6 |% w- ?' ~- t
如果返回信息为:cat: /dev/ppp: No such device or address 说明正常3 y1 ]2 C$ {5 K* K+ j
当然,脚本在安装时也会执行检查,如果不适用于安装,脚本会予以提示。
% N/ a: X4 j0 Q8 Y) [$ d 使用方法:0 k! t$ s0 E2 \" G3 J k$ s- ?8 M
root 用户登录后,运行以下命令:
, p1 R* W% U' r% r" Fwget --no-check-certificate https://raw.githubusercontent.co ... master/l2tp.shchmod +x l2tp.sh./l2tp.sh执行后,会有如下交互界面' n$ M! h' {+ R ]- x# t4 J

2 z2 n/ F8 e2 K7 E: nPlease input IP-Range:3 G$ p5 T! @7 B0 {
(Default Range: 192.168.18):
( `) v6 {& e- [- i2 y1 Y输入本地IP段范围(本地电脑连接到VPS后给分配的一个本地IP地址),直接回车意味着输入默认值192.168.18
+ k% ?# M. f; o: M Y( GPlease input PSK:
# h2 x# Q' f I3 R(Default PSK: teddysun.com):
: [! n# u4 G6 G( _( V- l- A2 ~# ^PSK意为预共享密钥,即指定一个密钥将来在连接时需要用到,直接回车意味着输入默认值teddysun.com* X6 y8 F5 t- o" v
Please input Username:
% u4 p, Z& H( K. P, a+ q(Default Username: teddysun):( A4 R1 K1 }- q; s2 ]2 D
Username意为用户名,即第一个默认用户。直接回车意味着输入默认值teddysun
6 O4 E& i7 H, J: G! N0 yPlease input teddysun’s password:
& J; `/ O1 L" Q# N# J: l(Default Password: Q4SKhu2EXQ):
" u/ f$ f3 C% s g% E, |. \, C输入用户的密码,默认会随机生成一个10位包含大小写字母和数字的密码,当然你也可以指定密码。
# ^/ D r$ G9 T" `: D! HServerIP:your_server_main_IP2 _# r, ?1 ]0 C, L3 h: \8 L
显示你的 VPS 的主 IP(如果是多 IP 的 VPS 也只显示一个)
- J, S8 s- n; b* l% m2 hServer Local IP:192.168.18.1$ P( R' x9 t" Z9 t6 j! f& B, Q
显示你的 VPS 的本地 IP(默认即可)
! x3 |+ B& {6 ^# c- E% I" KClient Remote IP Range:192.168.18.2-192.168.18.254
3 h2 X0 y+ c6 u/ V显示 IP 段范围3 L/ @" t+ h4 \" L
PSK:teddysun.com D: f) `; l1 i- E( B( d; T! [
显示 PSK" W1 l; T3 n& f6 d; n7 G- [
Press any key to start…or Press Ctrl+c to cancel3 r! b& _0 Q/ @: x
按下任意按键继续,如果想取消安装,请按Ctrl+c键7 u( R5 o& Z( G' Z" @. \6 o
安装完成后,脚本会执行 ipsec verify 命令并提示如下:7 c i6 R0 a% n& B- [# a
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!如果你要想对用户进行操作,可以使用如下命令:
7 ^% a9 Y. r7 }( p1 V; X' I# Q3 ul2tp -a 新增用户
; {& i2 A4 z; W$ vl2tp -d 删除用户' \( c4 f* P( h7 t; b2 W; k
l2tp -m 修改现有的用户的密码5 B0 p4 A7 P8 J7 O* t. }$ Q" v. n
l2tp -l 列出所有用户名和密码$ R7 g0 K$ i7 S5 L6 J
l2tp -h 列出帮助信息
3 r `/ E1 |/ y. h6 B/ [( Z) S L x7 Q4 B1 M
其他事项:# Q P3 v+ T9 g! a) K
1、脚本在安装完成后,已自动启动进程,并加入了开机自启动。
1 ~6 w, i3 u6 q2、脚本会改写 iptables 或 firewalld 的规则。
8 L& ]1 f0 s5 u, @, U* Z3、脚本安装时,会即时将安装日志写到 /root/l2tp.log 文件里,如果你安装失败,可以通过此文件来寻找错误信息。
5 @1 M5 C: q6 C K: N z 使用命令:
; a/ ^8 F( Z6 k- M ^) {9 [. Iipsec status (查看 IPSec 运行状态)
9 M/ U3 @$ w( T* G, Q! S! i2 `" Sipsec verify (查看 IPSec 检查结果): g3 |3 V0 j* y, h
/etc/init.d/ipsec start|stop|restart|status (CentOS6 下使用)2 k9 k7 z" s& i k5 X
/etc/init.d/xl2tpd start|stop|restart (CentOS6 下使用), |6 E# F: a: A& `/ W2 E, |6 C
systemctl start|stop|restart|status ipsec (CentOS7 下使用)
1 ^& }) T% E) O0 l4 ksystemctl start|stop|restart xl2tpd (CentOS7 下使用)
4 q$ ]( n" u' J3 t8 Jservice ipsec start|stop|restart|status (Debian/Ubuntu 下使用)" b' y1 [3 A3 ^0 z
service xl2tpd start|stop|restart (Debian/Ubuntu 下使用)
! f$ ~* F8 b/ V6 `# [% g- e5 T 更新日志0 W4 y2 T* K0 G) G' M; Q
2017 年 05 月 28 日:! ^8 E+ m# ^$ v7 C6 e2 m* }3 m
升级 libreswan 到版本 3.20。2 \( P: p5 e! O- }8 k. u3 o
修正 libreswan 的若干配置问题。
0 G! L" Z7 @$ ?% S* q c/ d* Z修正 xl2tpd 的端口监听配置问题。+ ^ n. U2 p# T& m! |
修正在 CentOS 6 对 libevent2 的依赖问题,改为 yum 安装 libevent2-devel。+ X: C; L- N B2 @6 d& r* C H
测试表明,在内网环境的 VPS 里(如AWS, IDCF,GCE,腾讯云,阿里云等)也可以正常使用了。
# q. ~- ^* r( |, s- S2017 年 02 月 25 日:
) ~$ k# z4 j' R4 k升级 libreswan 到版本 3.19。9 ~# V) K2 `. ~2 o
2016 年 09 月 12 日:
# \ M) d8 n1 M& Y修正了在 CentOS 6 下 libevent2 依赖的问题;9 ~$ v4 Y+ i/ i% A2 r2 z
新增了一个 -m 选项,用以修改现有用户的密码。
; @5 Z6 i2 N) Y2016 年 08 月 13 日:8 W# r/ h/ l: n5 x
修正 Debian 8 下的 sd-daemon.h: No such file or directory 问题,是由于缺少依赖包 libsystemd-daemon-dev 导致的。" f" H1 g, G8 g, @
2016 年 08 月 05 日:( ?9 u6 g8 a* S) q' \
升级 libreswan 到版本 3.18。" j& V0 b+ ^0 T2 e
2016 年 06 月 10 日:) t1 A2 `% w) q( d
脚本在安装完成后,新增了几个命令,便于操作用户: A! B' L4 E0 i6 |
l2tp -a 新增用户& a+ ?# _8 a0 K
l2tp -d 删除用户
% c S; K6 j6 b3 q2 rl2tp -l 列出所有用户& j! ?% ^$ b9 f2 Z3 k C0 v
l2tp -h 列出帮助信息9 ~5 t& T9 [# K: W1 l! m; F
2016 年 04 月 25 日:$ I8 w1 c; k. D& ~
4、在 Vultr 的 Debian 7的系统模板下安装时,软件包 libcurl4-nss-dev 会出现依赖错误。如下所示:
4 z6 y4 u( k1 PThe 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 又依赖了其他几种软件包。总之最后的依赖关系如下:
! Q* ?2 u) x& l+ L* B1 ?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 即可。( @( b9 M/ W* ?' x
apt-get -y remove libp11-kit0apt-get -y --no-install-recommends install libcurl4-nss-dev wget然后再运行脚本安装即可。+ h( H3 D) a$ M e
2016 年 04 月 22 日:) K3 p, g! Y+ Q/ T
修复了在 Ubuntu 16.04 下因为默认缺少 python 命令而导致 ipsec verify 等命令不能用的问题。" t2 y; v( l! E/ o& V) |9 W- x
2016 年 04 月 19 日:
) s6 d' P- z; a7 }2 y0 F修复了在 Debian 7 下因为 libnss3 和 libnspr4 的版本过低而导致编译 libreswan 失败的问题。
# G V* F+ n* ^) Z2016 年 04 月 18 日:5 [5 q/ k. a! J7 `
目前在 Debian 7 上测试的结果,因为 libnss3 和 libnspr4 的版本过低而导致编译 libreswan 失败。临时解决办法是 dpkg 安装 libnss3_3.17.2 和 libnspr4_4.10.7 的 deb 包后重试。4 g: J4 l" B9 V$ w. q4 S
参考链接:5 q/ b7 Z* p% r; j4 v( c, A
https://libreswan.org/wiki/3.14_on_Debian_Wheezy
$ R+ Q# c8 m8 K+ Ohttps://github.com/libreswan/libreswan1 `- s4 P6 n, N/ G2 L Q
. Z7 o" t( ]/ x" J6 A
|
|