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

L2TP/IPSec一键安装脚本

[复制链接]

979

主题

90

回帖

5万

积分

管理员

积分
53052
发表于 2022-7-4 16:54:16 | 显示全部楼层 |阅读模式
本脚本适用环境:$ w( A+ z; {# U7 I0 @
系统支持:CentOS6+,Debian7+,Ubuntu12+" \$ W5 K( ^; [; t2 w6 ^$ B+ H
内存要求:≥128M4 c5 n  S$ R( w: o& L0 U+ _
更新日期:2017 年 05 月 28 日* ^( L/ U8 |4 F$ p
关于本脚本:
( r: F# i% G5 \; F名词解释如下! Q. e; V* K* b* J9 T
L2TP(Layer 2 Tunneling Protocol)) X1 ]0 ?2 ~$ Z2 b/ c# n
IPSec(Internet Protocol Security)
5 d, b5 f- g$ M4 F5 p" E7 c' ~IKEv2 (Internet Key Exchange v2)* @8 f8 C# R8 v4 ^2 p1 r
能实现 IPsec 的目前总体上有 openswan,libreswan,strongswan 这3种。
# `; S2 Q! c- [& {0 F0 v, ~7 Slibreswan 是基于 openswan 的 fork,所以现在各个发行版基本已经看不到 openswan 的身影了。
3 n4 e# T) s2 I, N6 |7 r: K) E当然也有使用 strongswan 的。/ l6 h" j% c9 u6 f" P
之所以要更新 L2TP 一键安装脚本,是因为随着各个 Linux 发行版不断推陈出新,原有的脚本已经不适应现在的需求。: r4 c' z4 Y" I, m  d/ P9 {
本脚本通过编译安装最新版 libreswan 来实现 IPSec(CentOS7 下则是全部 yum 安装),yum 或 apt-get 来安装 xl2tpd,再根据各个发行版的使用方法不同,部署防火墙规则。& Z; W/ t6 I" b6 Z) f( R
       
9 ?" Y) Z, x/ w3 L/ }% s, ^        隆重介绍 Docker 版 L2TP/IPsec
* y2 Z0 S2 A' F: V+ W5 ]# l
由于此脚本已经很久不更新,因此已经不推荐使用该脚本来安装了。OK,下面隆重介绍一下 Docker 版 L2TP/IPsec。
% S2 _7 c; A5 k5 o使用 Docker 的好处就是对当前系统的环境没有破坏性,随时可以新建或者删除容器,而且方便快捷,实在是居家必备。
# p0 I& }" o1 {5 Y) J6 a& W0 a9 X具体请查看《介绍几款 Docker 镜像》此文中的【L2TP/IPsec VPN Server Docker Image】小节。
' @1 r& z, }% f' R- ~以及该项目的 Docker Hub 页面,或 Github 页面
1 |/ l# T+ @$ j! V% E( }/ b. I9 q/ ]* f* ~
        写在前面:4 E$ g8 ~9 R8 M% @/ L/ A
基于 OpenVZ 虚拟化技术的 VPS 需要开启TUN/TAP才能正常使用,购买 VPS 时请先咨询服务商是否支持开启 TUN/TAP。3 g5 ~& n5 n3 z! O9 Q
OpenVZ 虚拟的 VPS 需要系统内核支持 IPSec 才行。也就是说,母服务器的内核如果不支持的话那就没办法,只能换 VPS。
" `- v+ W% E8 [: o- Q% s  @, X因此,一般不建议在 OpenVZ 的 VPS 上安装本脚本。脚本如果检测到该 VPS 为 OpenVZ 架构,会出现警告提醒。
! g, t/ ]% m4 [$ W# H- P1 E如何检测是否支持TUN模块?
2 v+ W7 Z2 `7 T0 ?$ e# B; U执行命令:
+ U% O$ k9 Q; d4 \cat /dev/net/tun
- |! |) S& M5 e2 u1 j: A8 y如果返回信息为:cat: /dev/net/tun: File descriptor in bad state 说明正常1 X& s0 Y) y: o, ^
如何检测是否支持ppp模块?, S$ Z# Y6 e6 a$ c; J/ n* w2 B3 W* O% D
执行命令:
0 c0 z" o7 N2 }cat /dev/ppp6 P' j/ ^3 _  _0 a; ~1 o- |
如果返回信息为:cat: /dev/ppp: No such device or address 说明正常
' F, W' G5 a7 j6 }当然,脚本在安装时也会执行检查,如果不适用于安装,脚本会予以提示。$ ]% I5 w) L7 m, A6 p6 N& C3 V
        使用方法:
2 q2 }: L0 f0 W9 k0 N5 w- {, A
root 用户登录后,运行以下命令:
7 q9 Q; E0 Q7 [% q: Q& b# Dwget --no-check-certificate https://raw.githubusercontent.co ... master/l2tp.shchmod +x l2tp.sh./l2tp.sh执行后,会有如下交互界面
" q3 A# y0 J% z
5 R2 [5 J4 _. z% SPlease input IP-Range:' ^4 B4 N; Y& P2 D0 U* F  L
(Default Range: 192.168.18):
) G- k0 J  p4 {- ^输入本地IP段范围(本地电脑连接到VPS后给分配的一个本地IP地址),直接回车意味着输入默认值192.168.18
9 r! j( ]2 S8 X& j4 [' w4 g& S* YPlease input PSK:
7 L0 y/ ?  V  Y1 e' `* P(Default PSK: teddysun.com):
" m# m* u9 r7 ~$ A$ T! [PSK意为预共享密钥,即指定一个密钥将来在连接时需要用到,直接回车意味着输入默认值teddysun.com
- I1 r  ?: D6 G! m; R) QPlease input Username:5 o- |+ B+ h" u- Z& m$ o: B
(Default Username: teddysun):2 X3 I& G6 I& g1 j4 C
Username意为用户名,即第一个默认用户。直接回车意味着输入默认值teddysun2 [% N' o/ U. j/ C7 P) ~3 D
Please input teddysun’s password:: @" X7 R( f6 `- @% D
(Default Password: Q4SKhu2EXQ):/ [* i5 Y. ]: \
输入用户的密码,默认会随机生成一个10位包含大小写字母和数字的密码,当然你也可以指定密码。/ W3 j+ x+ ]) ^2 u0 E, Y0 p# \& Q
ServerIP:your_server_main_IP5 j1 f) K, o! `; ^+ n
显示你的 VPS 的主 IP(如果是多 IP 的 VPS 也只显示一个); d7 P# g5 Z0 M% r" D7 J# k! |8 z2 e
Server Local IP:192.168.18.16 r" J. c$ ]# F
显示你的 VPS 的本地 IP(默认即可)
# ^6 K7 \' [& A; P+ qClient Remote IP Range:192.168.18.2-192.168.18.254& F; X# g5 e' h0 p4 d% g
显示 IP 段范围1 M  L, e- k; d* y, y  y9 c- W
PSK:teddysun.com
, w3 R& A1 n8 x显示 PSK
+ C" W( O8 d2 MPress any key to start…or Press Ctrl+c to cancel& W! A4 ^. ~0 [, Z, p2 @, J$ Z! I5 U
按下任意按键继续,如果想取消安装,请按Ctrl+c键; F& h) i: U. L% x" [8 H
安装完成后,脚本会执行 ipsec verify 命令并提示如下:
1 @9 s; I1 F) [" w# i! jIf 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!如果你要想对用户进行操作,可以使用如下命令:0 U" K& U* [( l! [4 \' E- ^
l2tp -a  新增用户
: P3 R. N% V. g6 V7 `l2tp -d  删除用户
7 r3 }5 H3 T' L  y' L" C/ C9 W6 zl2tp -m  修改现有的用户的密码0 a& R  M3 r6 R' q/ H! Z
l2tp -l  列出所有用户名和密码$ i5 R7 v( X- {$ n3 |# r) a- J
l2tp -h  列出帮助信息+ l. e: {# }0 d" T. A6 K1 o7 Y6 v
4 j1 a4 l) j, R' N2 G$ r. q
        其他事项:
' t: F3 R- u  x; C3 M& K' M
1、脚本在安装完成后,已自动启动进程,并加入了开机自启动。
, L) s7 i* ^5 c2 ~3 {2、脚本会改写 iptables 或 firewalld 的规则。' {1 b& j1 s3 \% c! N3 @# F7 f
3、脚本安装时,会即时将安装日志写到 /root/l2tp.log 文件里,如果你安装失败,可以通过此文件来寻找错误信息。
% n& d- h: O* O        使用命令:
& [- T2 @- t6 A- Q
ipsec status (查看 IPSec 运行状态)
9 V; s" t5 Q+ Hipsec verify (查看 IPSec 检查结果)
/ W& {: w; l7 N. K6 Q  b5 Y9 u/etc/init.d/ipsec start|stop|restart|status (CentOS6 下使用)1 P8 E8 h; C5 g6 [
/etc/init.d/xl2tpd start|stop|restart (CentOS6 下使用)
& Q4 K# x# V5 D0 p  {systemctl start|stop|restart|status ipsec (CentOS7 下使用)
* x0 g& U  E3 l# e( Psystemctl start|stop|restart xl2tpd (CentOS7 下使用)
, X: P8 y, x* Rservice ipsec start|stop|restart|status (Debian/Ubuntu 下使用)$ H1 o; h- S/ @3 X# z1 c# ]
service xl2tpd start|stop|restart (Debian/Ubuntu 下使用)
( n/ j/ B( G0 H% x* \$ {* S        更新日志
) O$ U  e5 Y& ^8 f0 g6 ^( ?
2017 年 05 月 28 日:. W7 ^) n  y) x
升级 libreswan 到版本 3.20。
/ |5 q( h5 b* _' \# Q" e7 Y修正 libreswan 的若干配置问题。: `4 j2 x- O: ~& Y" @0 @
修正 xl2tpd 的端口监听配置问题。
. v7 C% Y4 G0 c+ t. z+ C* w  H修正在 CentOS 6 对 libevent2 的依赖问题,改为 yum 安装 libevent2-devel。
: r+ [$ C8 s& k5 O测试表明,在内网环境的 VPS 里(如AWS, IDCF,GCE,腾讯云,阿里云等)也可以正常使用了。
  m  {0 l6 U# a7 I5 v5 i- O* I2017 年 02 月 25 日:
& y2 `7 W+ t; Q6 x; d3 @; q升级 libreswan 到版本 3.19。3 A; I2 d, d" `1 [9 N
2016 年 09 月 12 日:" M+ h( F) b+ |. Q
修正了在 CentOS 6 下 libevent2 依赖的问题;# i1 m# {: c+ H
新增了一个 -m 选项,用以修改现有用户的密码。8 B" O# ]4 G1 A& v1 J
2016 年 08 月 13 日:
+ t4 O, o+ R& l; O  M2 z修正 Debian 8 下的 sd-daemon.h: No such file or directory 问题,是由于缺少依赖包 libsystemd-daemon-dev 导致的。" I! d. Q8 E- l/ P& _
2016 年 08 月 05 日:
4 v9 |4 e5 P. i! _/ q升级 libreswan 到版本 3.18。; @# _1 v# v7 V" ^% L* t
2016 年 06 月 10 日:# L. ^7 {( t& L8 }) q
脚本在安装完成后,新增了几个命令,便于操作用户8 e" @; Q0 m4 n+ X
l2tp -a  新增用户) J2 S( W2 Z% T. o) M0 V) J% }
l2tp -d  删除用户. w. K8 k5 v1 L# n# c3 Y5 Z) R( _
l2tp -l  列出所有用户
1 p2 G" X3 W4 q: H7 A2 t, Ql2tp -h  列出帮助信息: }3 x& P0 e: x1 s; M: O
2016 年 04 月 25 日:$ B' \4 M+ t4 j( q4 z! |, V
4、在 Vultr 的 Debian 7的系统模板下安装时,软件包 libcurl4-nss-dev 会出现依赖错误。如下所示:9 _, [) E5 b) Q
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 又依赖了其他几种软件包。总之最后的依赖关系如下:
) Q* [+ E+ t' x; r8 o; Plibldap2-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 即可。+ t' {6 N, Y1 c  ]
apt-get -y remove libp11-kit0apt-get -y --no-install-recommends install libcurl4-nss-dev wget然后再运行脚本安装即可。% q- ~* I* r/ L% R$ C( Q( l% O
2016 年 04 月 22 日:
/ o9 O& b- |8 ]修复了在 Ubuntu 16.04 下因为默认缺少 python 命令而导致 ipsec verify 等命令不能用的问题。8 t! N8 C4 A( r! A3 H4 j, p
2016 年 04 月 19 日:; v. n% t* X9 K$ P4 ]  l
修复了在 Debian 7 下因为 libnss3 和 libnspr4 的版本过低而导致编译 libreswan 失败的问题。
& N2 i0 i; c3 e1 @$ S( c2016 年 04 月 18 日:
0 p: r/ M0 ^! }) ^5 p& M' A- Q目前在 Debian 7 上测试的结果,因为 libnss3 和 libnspr4 的版本过低而导致编译 libreswan 失败。临时解决办法是 dpkg 安装 libnss3_3.17.2 和 libnspr4_4.10.7 的 deb 包后重试。
! @, J2 B1 j! X7 S# d5 {参考链接:
) ~; I. U* z& E2 C; ahttps://libreswan.org/wiki/3.14_on_Debian_Wheezy! N& B2 k5 n# `0 _
https://github.com/libreswan/libreswan
6 G; G6 n" V9 t! ]* S
, ~$ J; ~9 X* @! \5 A( a
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|

GMT+8, 2025-2-25 07:49 , Processed in 0.125394 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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