找回密码
 立即注册
搜索
查看: 245|回复: 0

L2TP/IPSec一键安装脚本

[复制链接]

991

主题

92

回帖

5万

积分

管理员

积分
55422
发表于 2022-7-4 16:54:16 | 显示全部楼层 |阅读模式
本脚本适用环境:
3 s- N: H; L: y: `8 ^系统支持:CentOS6+,Debian7+,Ubuntu12+: U7 ^$ m6 r, U9 k3 w3 g- {
内存要求:≥128M
/ h, v7 R% ~+ Q& E' t0 _8 G- _, u更新日期:2017 年 05 月 28 日2 H: T$ t+ q3 H' K7 Q9 {- B
关于本脚本:& N/ P% N' i* M9 h
名词解释如下
2 @6 C$ _9 \' R1 K9 AL2TP(Layer 2 Tunneling Protocol)% @) M7 g1 Q2 x" k0 w9 W
IPSec(Internet Protocol Security)& `) w! U- S% E; r$ j
IKEv2 (Internet Key Exchange v2)7 i6 |* \/ ^% |5 @0 y" i/ Z' k0 v# Q5 |
能实现 IPsec 的目前总体上有 openswan,libreswan,strongswan 这3种。& R% _' q' N2 i: G8 z* H  z+ z# q6 J  M+ I
libreswan 是基于 openswan 的 fork,所以现在各个发行版基本已经看不到 openswan 的身影了。
( u4 |, b4 x7 D  ?; s当然也有使用 strongswan 的。
7 b/ M$ n3 @/ j; q+ D1 K之所以要更新 L2TP 一键安装脚本,是因为随着各个 Linux 发行版不断推陈出新,原有的脚本已经不适应现在的需求。
! v% N* @$ d* ^# P6 b, h6 J本脚本通过编译安装最新版 libreswan 来实现 IPSec(CentOS7 下则是全部 yum 安装),yum 或 apt-get 来安装 xl2tpd,再根据各个发行版的使用方法不同,部署防火墙规则。
$ H& F% L- H& f. p       
& q# ?9 F- e% K$ o        隆重介绍 Docker 版 L2TP/IPsec( x, I' V1 {5 W; F3 d
由于此脚本已经很久不更新,因此已经不推荐使用该脚本来安装了。OK,下面隆重介绍一下 Docker 版 L2TP/IPsec。
0 [  n: B/ ^! H, W3 s9 B7 l使用 Docker 的好处就是对当前系统的环境没有破坏性,随时可以新建或者删除容器,而且方便快捷,实在是居家必备。
: I, ^: t- U. u具体请查看《介绍几款 Docker 镜像》此文中的【L2TP/IPsec VPN Server Docker Image】小节。
8 }) B; m7 M1 Z4 t2 W" G以及该项目的 Docker Hub 页面,或 Github 页面
0 Q8 b) o$ O9 K0 p* L: C7 s2 K/ q( _+ r; A
        写在前面:
% V; a% a! i' i
基于 OpenVZ 虚拟化技术的 VPS 需要开启TUN/TAP才能正常使用,购买 VPS 时请先咨询服务商是否支持开启 TUN/TAP。( V7 S' q$ g3 \, L) l
OpenVZ 虚拟的 VPS 需要系统内核支持 IPSec 才行。也就是说,母服务器的内核如果不支持的话那就没办法,只能换 VPS。
$ V+ t$ _7 d( P: f; m因此,一般不建议在 OpenVZ 的 VPS 上安装本脚本。脚本如果检测到该 VPS 为 OpenVZ 架构,会出现警告提醒。3 p7 A: i" f: b# w% W! j' ?6 y
如何检测是否支持TUN模块?, T: C# ]. D6 |" ^/ {$ j4 Y: X0 ]
执行命令:& V. T; X# s+ g/ @0 u
cat /dev/net/tun  K9 d8 \. W* J4 Y: Q$ `
如果返回信息为:cat: /dev/net/tun: File descriptor in bad state 说明正常, ~9 J7 ?& F: T$ h3 G, i
如何检测是否支持ppp模块?
6 k% F9 X; _  `8 j. t2 A' y& [执行命令:+ M% H8 C% c6 l' t2 F
cat /dev/ppp
3 @% t% k0 T% m如果返回信息为:cat: /dev/ppp: No such device or address 说明正常) l6 Z  H$ |; ?  L/ @( j
当然,脚本在安装时也会执行检查,如果不适用于安装,脚本会予以提示。, q, b4 ?  a9 h9 i7 S. |
        使用方法:  V) H  ?2 \5 t
root 用户登录后,运行以下命令:. y: }- h  L& Z  ?9 x3 s+ s6 `1 Y
wget --no-check-certificate https://raw.githubusercontent.co ... master/l2tp.shchmod +x l2tp.sh./l2tp.sh执行后,会有如下交互界面
% G1 t8 i, E5 h9 V+ Q% D6 u6 l4 n7 R$ t$ O$ \
Please input IP-Range:
$ R! i) A; C4 k% |(Default Range: 192.168.18):8 F9 Y8 e6 H6 y% N4 B+ \
输入本地IP段范围(本地电脑连接到VPS后给分配的一个本地IP地址),直接回车意味着输入默认值192.168.18
1 S) i; R+ z( x8 _Please input PSK:
+ Y8 t6 V( p* [  g(Default PSK: teddysun.com):
$ x' t; Y3 h) K3 A: U( z; @6 T2 C+ fPSK意为预共享密钥,即指定一个密钥将来在连接时需要用到,直接回车意味着输入默认值teddysun.com
9 Y3 {7 v1 Q2 A0 v' R( LPlease input Username:; r: l. J# K3 [+ _9 n2 P# m! G
(Default Username: teddysun):: P5 w, f, J1 @( c; Y; U9 o
Username意为用户名,即第一个默认用户。直接回车意味着输入默认值teddysun
" q& t/ a% p) p* iPlease input teddysun’s password:0 J. w& V: k5 @  b( s
(Default Password: Q4SKhu2EXQ):8 q- H- u6 }5 Y7 m) t& [+ {3 n1 h
输入用户的密码,默认会随机生成一个10位包含大小写字母和数字的密码,当然你也可以指定密码。
7 B  h# F9 u; G9 [" F0 a' h  g+ U7 B; zServerIP:your_server_main_IP
* U* D4 K; M0 r1 G8 u4 o  U显示你的 VPS 的主 IP(如果是多 IP 的 VPS 也只显示一个)$ [4 Q: ?7 a, d3 s  w. @5 `
Server Local IP:192.168.18.11 H& E6 `0 j  F
显示你的 VPS 的本地 IP(默认即可)
( N  e4 L0 l; f2 [& RClient Remote IP Range:192.168.18.2-192.168.18.254; Z; T. Q6 {) D! h4 Y: Y
显示 IP 段范围( E% }  c* Q6 d! t/ K
PSK:teddysun.com
. B' d7 s9 n9 t' e3 k! J显示 PSK
, O7 m7 Z$ J& c) F5 k( z$ MPress any key to start…or Press Ctrl+c to cancel. G) k4 ^" p- O+ W5 Q
按下任意按键继续,如果想取消安装,请按Ctrl+c键$ W8 N  g- m: e. j: e( `
安装完成后,脚本会执行 ipsec verify 命令并提示如下:
* f# [! z8 D5 x* g4 C5 T" c6 MIf 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!如果你要想对用户进行操作,可以使用如下命令:
; X7 [/ ]4 \# dl2tp -a  新增用户
! n3 k2 \5 }: y0 G7 Y! J5 C; l2 h% ol2tp -d  删除用户
" ^( P3 V. q$ e' Vl2tp -m  修改现有的用户的密码4 V# I9 ], o- v, }6 ?! D
l2tp -l  列出所有用户名和密码5 q% @% w( s& M( `0 b8 x+ N
l2tp -h  列出帮助信息0 L' r  P, o: Y+ c0 l7 Q) ^; P

& b1 H( ?5 A) R' P/ y3 ^        其他事项:# B$ o" N3 J0 W' D+ ^
1、脚本在安装完成后,已自动启动进程,并加入了开机自启动。
: S) b0 v% m' h2 G$ b2、脚本会改写 iptables 或 firewalld 的规则。! v5 h5 b$ b* x1 o4 i4 T
3、脚本安装时,会即时将安装日志写到 /root/l2tp.log 文件里,如果你安装失败,可以通过此文件来寻找错误信息。
& s. m  P. K1 }" u7 n2 o        使用命令:
! l: B# v' Y# G6 p; m( \- P
ipsec status (查看 IPSec 运行状态)1 p4 Y7 w# U  G; \3 |+ N
ipsec verify (查看 IPSec 检查结果)
5 s. q0 ]" w: N6 A1 c5 H/etc/init.d/ipsec start|stop|restart|status (CentOS6 下使用). W" S" F- S7 G: T) a/ Z
/etc/init.d/xl2tpd start|stop|restart (CentOS6 下使用)
3 I% d& v1 _& s" zsystemctl start|stop|restart|status ipsec (CentOS7 下使用)
) @$ `! O" r0 [* D  M- M: esystemctl start|stop|restart xl2tpd (CentOS7 下使用)( k( F* j  Z& F* O$ X
service ipsec start|stop|restart|status (Debian/Ubuntu 下使用)
; H/ C6 B6 g$ ^/ Q+ h0 S* o/ t) Zservice xl2tpd start|stop|restart (Debian/Ubuntu 下使用)
& @+ @: ]% H& H        更新日志* {) W7 i. k, B, i) h$ P
2017 年 05 月 28 日:0 ~" _' A/ ~1 y. B+ ?: F
升级 libreswan 到版本 3.20。
2 i* j' W0 o8 b1 k修正 libreswan 的若干配置问题。
4 ^! J9 O3 U" X- {) C修正 xl2tpd 的端口监听配置问题。
( z" ?" B$ t2 p. {) m1 m修正在 CentOS 6 对 libevent2 的依赖问题,改为 yum 安装 libevent2-devel。
+ z: A: s3 ?$ h' p& ~2 @测试表明,在内网环境的 VPS 里(如AWS, IDCF,GCE,腾讯云,阿里云等)也可以正常使用了。5 J. a0 |# P4 C- P; ]6 q  _
2017 年 02 月 25 日:
1 t0 K4 z6 v& [4 X4 {! s7 n. p/ `升级 libreswan 到版本 3.19。6 z) \& E* I$ W" ~
2016 年 09 月 12 日:! G- K3 S3 a$ I, |0 ?, j# j8 G7 ^
修正了在 CentOS 6 下 libevent2 依赖的问题;
" T3 j+ ?8 p( W, }! J5 B! D新增了一个 -m 选项,用以修改现有用户的密码。
. P7 H3 j% T' P9 g$ q! o7 I2016 年 08 月 13 日:
! h- Y# T4 s2 q4 b2 d: f修正 Debian 8 下的 sd-daemon.h: No such file or directory 问题,是由于缺少依赖包 libsystemd-daemon-dev 导致的。
6 O# t, _# {4 H0 `0 j0 R: f* i+ _2016 年 08 月 05 日:& j9 k* X1 E4 D+ L) X5 h
升级 libreswan 到版本 3.18。
6 z: w) a- o  w8 c2016 年 06 月 10 日:; T0 a( w2 l: T2 _
脚本在安装完成后,新增了几个命令,便于操作用户
. n7 @5 h" Z8 Y4 ?$ Fl2tp -a  新增用户
+ O! r+ N, X6 b0 bl2tp -d  删除用户
9 N7 z, ?  V1 p+ Ul2tp -l  列出所有用户9 B/ f% u! W2 Z3 A4 g
l2tp -h  列出帮助信息" b2 ^. j7 H. G6 v! h" w8 k
2016 年 04 月 25 日:
- D% f/ m- s0 U- M4、在 Vultr 的 Debian 7的系统模板下安装时,软件包 libcurl4-nss-dev 会出现依赖错误。如下所示:0 f  j, b4 F' a7 F4 F8 p
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 又依赖了其他几种软件包。总之最后的依赖关系如下:
' V! l) P2 Y% z' t( Nlibldap2-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 即可。
! J2 Q  O3 N" ~) }  ]apt-get -y remove libp11-kit0apt-get -y --no-install-recommends install libcurl4-nss-dev wget然后再运行脚本安装即可。
; k$ ?* ?4 M: j% H2016 年 04 月 22 日:  w+ c' ?. |; o- K5 X
修复了在 Ubuntu 16.04 下因为默认缺少 python 命令而导致 ipsec verify 等命令不能用的问题。
) T1 }3 r. ~+ a& i2016 年 04 月 19 日:
6 }: a2 D; u7 t6 k4 [' B修复了在 Debian 7 下因为 libnss3 和 libnspr4 的版本过低而导致编译 libreswan 失败的问题。3 h! D1 G- C+ K4 r# A' o0 l" i
2016 年 04 月 18 日:+ O2 _) S8 G" o3 O. g( W
目前在 Debian 7 上测试的结果,因为 libnss3 和 libnspr4 的版本过低而导致编译 libreswan 失败。临时解决办法是 dpkg 安装 libnss3_3.17.2 和 libnspr4_4.10.7 的 deb 包后重试。
$ A6 C% P$ {9 y7 @9 a4 X参考链接:
6 b$ d& U- v0 t* A: ~: A& S: j" s" Xhttps://libreswan.org/wiki/3.14_on_Debian_Wheezy7 y3 i( _* y0 a& _" G' v/ U
https://github.com/libreswan/libreswan& F7 b# ~, J) k. t

0 }' [% G6 @" R0 j
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|

GMT+8, 2026-6-20 02:40 PM , Processed in 0.083591 second(s), 23 queries .

Powered by xyh-moon X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表