|
|
本脚本适用环境:) q) c! l* s S: A/ g8 F
系统支持:CentOS6+,Debian7+,Ubuntu12+1 W& B, K9 o* h' E- f
内存要求:≥128M
; q- B$ _& o1 A% ]6 @更新日期:2017 年 05 月 28 日; m) `* P5 g) {3 a6 v; V
关于本脚本:
' m1 P* U) `7 D: t名词解释如下5 H8 X. q* v. K
L2TP(Layer 2 Tunneling Protocol)
$ ^: p; Y. `9 n0 bIPSec(Internet Protocol Security)
2 u' t' Z- ]! xIKEv2 (Internet Key Exchange v2)
0 e1 |; x9 F& B2 X3 t能实现 IPsec 的目前总体上有 openswan,libreswan,strongswan 这3种。% i7 {. k, p% d+ R3 Q( [& X5 V
libreswan 是基于 openswan 的 fork,所以现在各个发行版基本已经看不到 openswan 的身影了。
, b9 s$ w- s+ y5 f% n当然也有使用 strongswan 的。
- {' J$ e$ ^0 _" O+ n! `; F之所以要更新 L2TP 一键安装脚本,是因为随着各个 Linux 发行版不断推陈出新,原有的脚本已经不适应现在的需求。' E7 D: } R3 E+ L" X) d5 q
本脚本通过编译安装最新版 libreswan 来实现 IPSec(CentOS7 下则是全部 yum 安装),yum 或 apt-get 来安装 xl2tpd,再根据各个发行版的使用方法不同,部署防火墙规则。
* H1 @: [! q) j) z, l9 d * j" l0 y8 I. p
隆重介绍 Docker 版 L2TP/IPsec t% [( |% g, K
由于此脚本已经很久不更新,因此已经不推荐使用该脚本来安装了。OK,下面隆重介绍一下 Docker 版 L2TP/IPsec。
1 f" n. k" b; g9 v( _) Z; v使用 Docker 的好处就是对当前系统的环境没有破坏性,随时可以新建或者删除容器,而且方便快捷,实在是居家必备。- U' y! i2 E# K/ i
具体请查看《介绍几款 Docker 镜像》此文中的【L2TP/IPsec VPN Server Docker Image】小节。7 O" W, M3 N2 Q! @
以及该项目的 Docker Hub 页面,或 Github 页面。
4 b: `% T x5 U5 B: L% n1 f
9 G" L, n+ v0 c# `; S. i 写在前面:3 q5 l* N! s! `$ _8 e
基于 OpenVZ 虚拟化技术的 VPS 需要开启TUN/TAP才能正常使用,购买 VPS 时请先咨询服务商是否支持开启 TUN/TAP。
* t5 j' r; L' t$ aOpenVZ 虚拟的 VPS 需要系统内核支持 IPSec 才行。也就是说,母服务器的内核如果不支持的话那就没办法,只能换 VPS。% S& ~5 H i& q0 G3 k' e
因此,一般不建议在 OpenVZ 的 VPS 上安装本脚本。脚本如果检测到该 VPS 为 OpenVZ 架构,会出现警告提醒。
- F+ |7 G+ u/ a! I' U* ]# E如何检测是否支持TUN模块?2 w: P7 }8 e. a6 b! L
执行命令:
- I+ M! w; E) n+ g, ] Lcat /dev/net/tun
) b& Y: Y6 s: d0 v# I/ R4 r如果返回信息为:cat: /dev/net/tun: File descriptor in bad state 说明正常5 h9 \9 ]7 e6 P; A: U3 {' v
如何检测是否支持ppp模块?
% G, f- c! @2 }& L, W; m执行命令:
, D6 ^" P2 D4 d- r. N1 acat /dev/ppp; M w& E3 e5 H) [4 w
如果返回信息为:cat: /dev/ppp: No such device or address 说明正常
( B: X% v! h8 W2 u8 K1 c当然,脚本在安装时也会执行检查,如果不适用于安装,脚本会予以提示。$ p+ U" v- g6 z4 j0 [" Y
使用方法:
- q3 |0 v3 y: {& uroot 用户登录后,运行以下命令:3 v m2 [" ?/ R
wget --no-check-certificate https://raw.githubusercontent.co ... master/l2tp.shchmod +x l2tp.sh./l2tp.sh执行后,会有如下交互界面
6 j1 A" s- w9 c; _" C) g
- V+ R) b% Z/ V3 f+ ?- mPlease input IP-Range:
5 F4 _1 C5 V/ M+ |/ p0 D) k* l: Z0 i4 ~(Default Range: 192.168.18):" W& n& o: |* h
输入本地IP段范围(本地电脑连接到VPS后给分配的一个本地IP地址),直接回车意味着输入默认值192.168.18
# K& x# a: q5 VPlease input PSK:! h' J9 `9 I. q: s o3 L
(Default PSK: teddysun.com):
1 X9 Y* z' u! I: n DPSK意为预共享密钥,即指定一个密钥将来在连接时需要用到,直接回车意味着输入默认值teddysun.com8 n# _8 b+ g, W. K) F& m
Please input Username:5 H* q: @ `9 ~/ @
(Default Username: teddysun): H8 Z' q3 E) O. U
Username意为用户名,即第一个默认用户。直接回车意味着输入默认值teddysun, p* B3 O/ p8 H/ L! h
Please input teddysun’s password:
- c2 o8 g3 a# I5 a6 K \# W3 X* a# O(Default Password: Q4SKhu2EXQ):
6 t- A$ X! g' \# u! |输入用户的密码,默认会随机生成一个10位包含大小写字母和数字的密码,当然你也可以指定密码。
0 E8 |- g; |% D/ h- g' QServerIP:your_server_main_IP
3 T* }$ y c; e4 |显示你的 VPS 的主 IP(如果是多 IP 的 VPS 也只显示一个)
3 Y7 @, j$ I0 `$ ^$ eServer Local IP:192.168.18.10 d. b f/ |: J9 e2 A% S0 Z
显示你的 VPS 的本地 IP(默认即可)& g/ c/ I/ j! z) O- ]
Client Remote IP Range:192.168.18.2-192.168.18.254: O, `8 F/ e: u/ m
显示 IP 段范围
0 }1 O" ~4 `, E, {5 M y6 |PSK:teddysun.com: \. p. `. o% ^$ Q2 Y0 J
显示 PSK3 ^9 ?. p0 i D h
Press any key to start…or Press Ctrl+c to cancel( ?) Q8 r; J3 }+ j- N' d5 H
按下任意按键继续,如果想取消安装,请按Ctrl+c键# ~0 e& l& `; @( c+ h
安装完成后,脚本会执行 ipsec verify 命令并提示如下:
6 d! Z/ {% P! U, ?' x1 y& FIf 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!如果你要想对用户进行操作,可以使用如下命令:
/ U7 z& v7 b& n' v8 G- s; b. Xl2tp -a 新增用户. ?: b! B. x1 R% O/ \! `
l2tp -d 删除用户
, h! a `( B; [l2tp -m 修改现有的用户的密码0 \4 P b% w* b$ E& A; Y
l2tp -l 列出所有用户名和密码" F- u# w2 K" P$ `" \" h* |
l2tp -h 列出帮助信息
& ]5 d1 ]7 H- E1 d( M% j" z: _! A( C7 z" O8 `
其他事项:
4 M+ R* S' r4 r4 o. I3 D1、脚本在安装完成后,已自动启动进程,并加入了开机自启动。7 s' T: }2 R) T i. c7 _5 \( Y/ B
2、脚本会改写 iptables 或 firewalld 的规则。& g) f) F+ g4 B; s
3、脚本安装时,会即时将安装日志写到 /root/l2tp.log 文件里,如果你安装失败,可以通过此文件来寻找错误信息。* ` ]6 X* }# n
使用命令:" O; W" `- T4 a& E
ipsec status (查看 IPSec 运行状态)* x# b* R5 g3 \$ X' W" `
ipsec verify (查看 IPSec 检查结果)' o+ F: b, K) _2 B
/etc/init.d/ipsec start|stop|restart|status (CentOS6 下使用)
; _& p4 _. u0 L/ v- `' ^' b/etc/init.d/xl2tpd start|stop|restart (CentOS6 下使用) R! B/ L& `! C- _
systemctl start|stop|restart|status ipsec (CentOS7 下使用)- N) q7 B, ^% n; }. S
systemctl start|stop|restart xl2tpd (CentOS7 下使用)3 L& M! |4 {# N; E N7 g- L0 I
service ipsec start|stop|restart|status (Debian/Ubuntu 下使用)+ k8 x0 `4 m$ c% Q3 l
service xl2tpd start|stop|restart (Debian/Ubuntu 下使用)
$ \' W; I5 d& ]2 m7 i. E 更新日志' y" n7 r% o; ~ S$ |0 @8 C
2017 年 05 月 28 日:1 J: e9 w6 @2 @
升级 libreswan 到版本 3.20。6 A: K/ { v \
修正 libreswan 的若干配置问题。: m# M4 F* j* W( _
修正 xl2tpd 的端口监听配置问题。7 J/ T: K8 {7 z# C
修正在 CentOS 6 对 libevent2 的依赖问题,改为 yum 安装 libevent2-devel。4 \; U: i2 _, h3 b
测试表明,在内网环境的 VPS 里(如AWS, IDCF,GCE,腾讯云,阿里云等)也可以正常使用了。( J% P0 {/ [: g' ]2 Z7 Y& C9 r! s* a
2017 年 02 月 25 日:
( y% e2 P9 {3 E: l' H& o升级 libreswan 到版本 3.19。
_ p$ ]$ R6 C) {. t3 S! m2016 年 09 月 12 日:
. q3 s5 r* t: B* F/ q$ y t$ K修正了在 CentOS 6 下 libevent2 依赖的问题;$ { N5 ?, m6 J& A+ q: V Q
新增了一个 -m 选项,用以修改现有用户的密码。' D$ c/ |( t" A7 `! [% x9 f
2016 年 08 月 13 日:2 i6 u' [) {+ M( |3 P$ j
修正 Debian 8 下的 sd-daemon.h: No such file or directory 问题,是由于缺少依赖包 libsystemd-daemon-dev 导致的。
$ H% r: S" {) U6 m- v7 }6 h2016 年 08 月 05 日:
: ~1 L( Z1 q0 Z1 ]/ w1 G/ ^6 ] r, I升级 libreswan 到版本 3.18。
8 h1 u# `4 W6 I2016 年 06 月 10 日:
0 ~0 ]* A+ q; f* W5 v3 y1 p脚本在安装完成后,新增了几个命令,便于操作用户' q5 c0 K* E* v. h8 K! Q0 g$ {. G
l2tp -a 新增用户
/ @6 {$ v; U' R' |7 y8 hl2tp -d 删除用户$ U$ N" y' G+ U: z9 n$ g
l2tp -l 列出所有用户
( ~& ?9 Y: t6 k1 V7 z) Dl2tp -h 列出帮助信息
5 r$ X& q9 i( L* X# j2016 年 04 月 25 日:
, i3 h5 \& f1 ] F4、在 Vultr 的 Debian 7的系统模板下安装时,软件包 libcurl4-nss-dev 会出现依赖错误。如下所示:
9 ]6 t( L2 Z* ^& p& V3 eThe 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 又依赖了其他几种软件包。总之最后的依赖关系如下:
i: D3 f; ?; I4 R' k/ H( ~) Blibldap2-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* U3 a$ X9 E7 {% f: Xapt-get -y remove libp11-kit0apt-get -y --no-install-recommends install libcurl4-nss-dev wget然后再运行脚本安装即可。, z7 m" a2 F* k; L3 i
2016 年 04 月 22 日:8 H. p0 Z5 O) x3 P0 O6 f
修复了在 Ubuntu 16.04 下因为默认缺少 python 命令而导致 ipsec verify 等命令不能用的问题。
# O. B Q/ z; s- a* [2016 年 04 月 19 日:& p7 E' b) B8 M, t0 w' d' t! p
修复了在 Debian 7 下因为 libnss3 和 libnspr4 的版本过低而导致编译 libreswan 失败的问题。6 H) q$ H) A8 m) ?7 F. y& `
2016 年 04 月 18 日:/ V3 L* \* a u5 }3 K# [" I
目前在 Debian 7 上测试的结果,因为 libnss3 和 libnspr4 的版本过低而导致编译 libreswan 失败。临时解决办法是 dpkg 安装 libnss3_3.17.2 和 libnspr4_4.10.7 的 deb 包后重试。8 b1 r" |* o8 Q9 U" M
参考链接:6 U+ M' d0 r; I
https://libreswan.org/wiki/3.14_on_Debian_Wheezy
, I6 q: ?/ {8 z% |2 o8 Ihttps://github.com/libreswan/libreswan
+ [, B- ]* D5 d. `9 ]' H( r% u! T
|
|