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

L2TP/IPSec一键安装脚本

[复制链接]

991

主题

92

回帖

5万

积分

管理员

积分
55457
发表于 2022-7-4 16:54:16 | 显示全部楼层 |阅读模式
本脚本适用环境:* X) a% _& E: I! ^( n1 f+ ?9 y( |  G
系统支持:CentOS6+,Debian7+,Ubuntu12+$ ^- ?: r: y* [( R& L# }5 B
内存要求:≥128M
- @3 a, l, z- j" Z+ i% m/ r" `更新日期:2017 年 05 月 28 日5 w' E1 ~$ a. O$ v
关于本脚本:/ h, j1 B( m  ]: m6 E0 q1 h
名词解释如下  Y" e+ h& n7 X
L2TP(Layer 2 Tunneling Protocol)! X. Y1 E: L% a- P$ f) ^
IPSec(Internet Protocol Security)" L2 ~/ c  E/ p0 Z2 r- L
IKEv2 (Internet Key Exchange v2)
; Z- K$ l2 o$ J3 a, B能实现 IPsec 的目前总体上有 openswan,libreswan,strongswan 这3种。
8 t1 h1 e- b# y- [5 \) ]libreswan 是基于 openswan 的 fork,所以现在各个发行版基本已经看不到 openswan 的身影了。
2 m$ V% J+ ~! @当然也有使用 strongswan 的。
" g. W: R* \, p之所以要更新 L2TP 一键安装脚本,是因为随着各个 Linux 发行版不断推陈出新,原有的脚本已经不适应现在的需求。4 r  }( U' q1 o. `" E
本脚本通过编译安装最新版 libreswan 来实现 IPSec(CentOS7 下则是全部 yum 安装),yum 或 apt-get 来安装 xl2tpd,再根据各个发行版的使用方法不同,部署防火墙规则。
2 i8 s' N& u+ E' o% u       
2 R7 p3 F/ ^, b0 j, _2 C9 h        隆重介绍 Docker 版 L2TP/IPsec
7 h) b4 W% s3 Q- L1 W
由于此脚本已经很久不更新,因此已经不推荐使用该脚本来安装了。OK,下面隆重介绍一下 Docker 版 L2TP/IPsec。2 V, W$ R! |  J+ U6 K$ X2 ~
使用 Docker 的好处就是对当前系统的环境没有破坏性,随时可以新建或者删除容器,而且方便快捷,实在是居家必备。
- H2 x4 L/ @, T& P! f8 Z9 @具体请查看《介绍几款 Docker 镜像》此文中的【L2TP/IPsec VPN Server Docker Image】小节。0 i! Q' }+ L( A8 m7 c: t( b
以及该项目的 Docker Hub 页面,或 Github 页面5 L5 f. q4 n# A8 z' _# Z
; J0 l: {7 c( |( m# v! i  T
        写在前面:  x  _6 `6 r+ B2 O5 B# x2 z
基于 OpenVZ 虚拟化技术的 VPS 需要开启TUN/TAP才能正常使用,购买 VPS 时请先咨询服务商是否支持开启 TUN/TAP。2 b0 s+ V- m& e6 n
OpenVZ 虚拟的 VPS 需要系统内核支持 IPSec 才行。也就是说,母服务器的内核如果不支持的话那就没办法,只能换 VPS。0 O* c. x4 }6 c! m) \; a2 z4 b  ^
因此,一般不建议在 OpenVZ 的 VPS 上安装本脚本。脚本如果检测到该 VPS 为 OpenVZ 架构,会出现警告提醒。
  @4 U! N- e1 C) r6 z( H如何检测是否支持TUN模块?
2 s4 V( S5 m& f* X! i5 [执行命令:
0 B2 \3 K6 h3 D6 mcat /dev/net/tun+ J5 v, e( p) {* V( R* \% m3 k
如果返回信息为:cat: /dev/net/tun: File descriptor in bad state 说明正常
5 K- `" S1 i& n( x4 C4 _如何检测是否支持ppp模块?! v; x# X5 u5 j
执行命令:# [3 _$ m( c+ J; P
cat /dev/ppp4 W# T3 G1 J* Q: b7 R% x
如果返回信息为:cat: /dev/ppp: No such device or address 说明正常$ b' V  U4 Z/ r+ [6 L. l& P6 P3 ~
当然,脚本在安装时也会执行检查,如果不适用于安装,脚本会予以提示。
; ~, _$ ~% A& k, ?. L        使用方法:
0 B  f6 s& S' Q* x
root 用户登录后,运行以下命令:) O2 A1 X1 W& \& Z
wget --no-check-certificate https://raw.githubusercontent.co ... master/l2tp.shchmod +x l2tp.sh./l2tp.sh执行后,会有如下交互界面+ I$ }  P9 h! ?- K; t9 ^

4 W7 E: a; g: R; e7 b$ @. \Please input IP-Range:
$ `& E1 h% A4 ?; \1 X(Default Range: 192.168.18):
7 {- U3 N# o8 I输入本地IP段范围(本地电脑连接到VPS后给分配的一个本地IP地址),直接回车意味着输入默认值192.168.18
; D3 s# v4 g9 x/ L  BPlease input PSK:
9 D3 Z+ s2 z6 l, E(Default PSK: teddysun.com):) ^9 x% I% C* A& Y
PSK意为预共享密钥,即指定一个密钥将来在连接时需要用到,直接回车意味着输入默认值teddysun.com
$ z, n9 t3 Y, b- ]( MPlease input Username:- H+ T& R5 n8 T
(Default Username: teddysun):; c* z; G1 ]6 M5 b' I1 v
Username意为用户名,即第一个默认用户。直接回车意味着输入默认值teddysun: ?( j0 i8 P6 E- X7 k
Please input teddysun’s password:+ o: L$ g- t4 ?- c: ^) X6 u
(Default Password: Q4SKhu2EXQ):( G/ q2 O+ V+ B- l; c& o
输入用户的密码,默认会随机生成一个10位包含大小写字母和数字的密码,当然你也可以指定密码。
* n; U# w& [8 I; {! W5 [* r! bServerIP:your_server_main_IP" a) _' D- i- d# q3 ?
显示你的 VPS 的主 IP(如果是多 IP 的 VPS 也只显示一个)% N: d! v; A$ |. u: v' X: ~
Server Local IP:192.168.18.1
1 V3 ?/ {1 G3 w+ n) T: O* K+ Q: ]显示你的 VPS 的本地 IP(默认即可)
$ y* i; ]& ^9 t5 g( vClient Remote IP Range:192.168.18.2-192.168.18.254& u2 k$ v! F& v, c. ^: P
显示 IP 段范围
2 q- E2 \: w/ K. P- f+ n& {- C6 RPSK:teddysun.com* ~2 j- O  R6 s" C6 {* n
显示 PSK
- R/ r' ]( X2 x* `& kPress any key to start…or Press Ctrl+c to cancel" s. B5 W4 a& |
按下任意按键继续,如果想取消安装,请按Ctrl+c键
) Y! @# \7 X# i; x安装完成后,脚本会执行 ipsec verify 命令并提示如下:6 ^+ ?6 g/ F1 K3 y" \
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!如果你要想对用户进行操作,可以使用如下命令:
, F" I5 j% H  N7 Wl2tp -a  新增用户- D5 f! D+ j. B
l2tp -d  删除用户* @$ ]5 m  v; t0 j8 V, D7 |$ @
l2tp -m  修改现有的用户的密码
9 Q3 ~9 J4 j# s+ cl2tp -l  列出所有用户名和密码9 B9 i$ t( i; `9 O
l2tp -h  列出帮助信息
2 n+ N6 E8 U% ]' a. {; r" l& I8 x
        其他事项:1 a! E$ y: i) R4 n' }
1、脚本在安装完成后,已自动启动进程,并加入了开机自启动。
5 S5 l" u/ T6 ^# c: V2、脚本会改写 iptables 或 firewalld 的规则。
0 P+ I% r% M. A+ Y+ e7 H3、脚本安装时,会即时将安装日志写到 /root/l2tp.log 文件里,如果你安装失败,可以通过此文件来寻找错误信息。
0 v- b, k; \6 C) I! t' t        使用命令:
+ U, E$ {7 }' t; P. N$ V
ipsec status (查看 IPSec 运行状态)
- B5 D, Z  o) f. g/ Sipsec verify (查看 IPSec 检查结果)$ A4 v- Q! k* M
/etc/init.d/ipsec start|stop|restart|status (CentOS6 下使用)8 ]7 _4 m+ R7 Q1 o0 P
/etc/init.d/xl2tpd start|stop|restart (CentOS6 下使用)
0 E/ ^8 A8 y$ F3 |6 |5 hsystemctl start|stop|restart|status ipsec (CentOS7 下使用)$ D! _& |& a; r/ r# X
systemctl start|stop|restart xl2tpd (CentOS7 下使用)0 V& l4 y. o# Y2 l0 C! b2 w
service ipsec start|stop|restart|status (Debian/Ubuntu 下使用)6 \$ M; @% M: l& y( Q
service xl2tpd start|stop|restart (Debian/Ubuntu 下使用)
3 m% o. y! B: C) Z        更新日志0 M* h: p1 n9 W. ^9 K& x- {# ?
2017 年 05 月 28 日:& r4 ?( u; i6 t1 A- b* w! P9 r
升级 libreswan 到版本 3.20。
1 N3 n6 c& Z. z( @7 E  I$ K修正 libreswan 的若干配置问题。
& E: A$ S/ K  `, e修正 xl2tpd 的端口监听配置问题。0 k2 n$ z8 G4 u& b+ c2 `, D2 \
修正在 CentOS 6 对 libevent2 的依赖问题,改为 yum 安装 libevent2-devel。
3 i" I0 R$ Y: u+ J* [5 f/ ~测试表明,在内网环境的 VPS 里(如AWS, IDCF,GCE,腾讯云,阿里云等)也可以正常使用了。
9 B! z: [9 G+ i$ I- @2017 年 02 月 25 日:/ J/ v9 T2 Z. F8 S7 e  x
升级 libreswan 到版本 3.19。! x* D. k4 m3 g" k) ~1 H3 B8 [
2016 年 09 月 12 日:, c! ]$ Y1 [3 {, C* Q8 j" Z% C7 h% j
修正了在 CentOS 6 下 libevent2 依赖的问题;
/ o  B. V4 s4 i  H3 f0 P  h! n- v9 y新增了一个 -m 选项,用以修改现有用户的密码。( v' w( V6 s" I6 N( ?
2016 年 08 月 13 日:, \' z5 g# {9 F6 |& {. Y. r$ U
修正 Debian 8 下的 sd-daemon.h: No such file or directory 问题,是由于缺少依赖包 libsystemd-daemon-dev 导致的。8 k/ C  @. O* K) l  ?5 t
2016 年 08 月 05 日:" S: k; G, o& S  B" B0 [
升级 libreswan 到版本 3.18。& @: D! O7 D6 i# @" F; g
2016 年 06 月 10 日:
  |4 x9 Y, }# B3 |  U脚本在安装完成后,新增了几个命令,便于操作用户0 [& t. R2 D& y
l2tp -a  新增用户
6 h2 J4 f* g7 P4 k, @l2tp -d  删除用户
* P3 e8 u1 l( k" z7 w" x' {l2tp -l  列出所有用户# A) M8 Y# d' k
l2tp -h  列出帮助信息
6 N, H* A, c/ R& l( R1 f( r2016 年 04 月 25 日:$ u% H( e# d; t. [* i. H
4、在 Vultr 的 Debian 7的系统模板下安装时,软件包 libcurl4-nss-dev 会出现依赖错误。如下所示:
/ N+ m0 h  D# p  y8 i3 y% b) \/ OThe 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 又依赖了其他几种软件包。总之最后的依赖关系如下:
. ~; J, r! F  r1 o! O7 W+ K! ^  Qlibldap2-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 即可。( ^8 A" f6 ]" [3 ]& ], J6 z! P& |
apt-get -y remove libp11-kit0apt-get -y --no-install-recommends install libcurl4-nss-dev wget然后再运行脚本安装即可。
3 ^6 C& e6 U* Y- E2016 年 04 月 22 日:5 [* f0 K, o0 o) O9 o" E" e% T0 \; P9 S- e
修复了在 Ubuntu 16.04 下因为默认缺少 python 命令而导致 ipsec verify 等命令不能用的问题。& Q6 X. h! M. C6 X3 Y. |& S
2016 年 04 月 19 日:; q2 c* O$ U; d. T. e
修复了在 Debian 7 下因为 libnss3 和 libnspr4 的版本过低而导致编译 libreswan 失败的问题。2 L$ @0 ?! S4 `2 s
2016 年 04 月 18 日:/ b+ j- u; c3 w3 J4 Q( @! ^
目前在 Debian 7 上测试的结果,因为 libnss3 和 libnspr4 的版本过低而导致编译 libreswan 失败。临时解决办法是 dpkg 安装 libnss3_3.17.2 和 libnspr4_4.10.7 的 deb 包后重试。, C3 l: O. b$ n# n- X8 {3 K5 I
参考链接:# A# [9 e/ n5 q3 l/ b7 S; w
https://libreswan.org/wiki/3.14_on_Debian_Wheezy
* o' p$ P# m' a! F' [$ L. H) Dhttps://github.com/libreswan/libreswan
* _4 T- Z" O  I  t' O) d6 C1 c) q
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|

GMT+8, 2026-8-5 03:24 PM , Processed in 0.105606 second(s), 22 queries .

Powered by xyh-moon X3.5

© 2001-2026 Discuz! Team.

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