找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2657|回复: 0

wireguard

[复制链接]
发表于 2013-5-15 22:37:16 | 显示全部楼层 |阅读模式
本脚本适用环境
' T8 ~6 D4 r* F1 a系统支持:CentOS 7+,Debian 8+,Raspbian 10,Ubuntu 16+,Fedora 29+
( m( }1 U2 i# C9 ], J! t, T6 E内存要求:≥256M8 T2 l: v, v0 l% Z) P
日期  :2020 年 4 月 2 日0 w2 _  m7 f* w

, R! X9 S: F6 X/ ^  @8 H关于本脚本
  G$ c( v, ~* |- G, ~. a" j1. 支持两种安装方式:从代码编译安装,从 repository 直接安装;
. J1 W+ T" E' C7 y6 b2. 脚本会创建默认的 wg0 设备,以及 wg0 的客户端配置,并生成客户端配置对应的二维码 png 图片;
& m3 c, B2 {( c: L( j  `4 _7 F  t( N3. 脚本会修改本机防火墙设置,如果未启用防火墙,则会出现警告提示,需要手动去设置;
! W# f% |) L6 \$ M) w& A4. 脚本会从 1024 到 20480 随机生成监听端口;' T3 Q; p! {) K9 k1 I# U
5. 脚本支持新增,删除,列出客户端功能;& @& F1 I6 ?0 G; @1 }2 R6 J6 x9 B
6. 脚本支持查看已安装的 WireGuard 的版本号;) u" a" m; G2 h; D' D
7. 脚本支持从代码编译安装的方式升级 WireGuard 到当前最新版本;, o# c& V. [! Q/ @

: w" f% l* J: H  p6 w客户端下载9 o! e' d7 |# E3 X# j
Windows, macOS, Android, iOS 客户端
/ K* X, A- [4 @1 L4 E1 Zhttps://www.wireguard.com/install/
0 Y. M/ q/ R1 \& N  L6 B$ N
( f8 m, O# j+ @" S( N脚本使用方法
* [2 _$ n. _0 z0 D# @9 U0 }使用 root 用户登录系统,运行以下命令下载脚本,赋予执行权限:
' K9 ~$ m: B! o' e: i7 z; w
  r) _/ z8 P+ L# f5 @wget --no-check-certificate -O /opt/wireguard.sh https://raw.githubusercontent.co ... master/wireguard.sh  d: k  v/ K! b; H( C- k  w# ?( O
chmod 755 /opt/wireguard.sh+ Y2 L1 C! E4 s/ R7 U* R
写在前面
; S+ r' x4 w) O% Y; Z& ]6 JWireGuard 的安装和使用条件是比较苛刻的。因此我不建议在生产系统里安装和使用 WireGuard,除非你知道自己在做什么。
) q$ g  ^: u  Q3 e; o$ \- \+ r它依赖于内核,也就是 kernel,在不同的系统中,内核,内核源码包,内核头文件必须存在且这三者版本要一致。
( m8 q" X+ t, N, z7 ]7 Q" @" M, NRedHat,CentOS,Fedora,Oracle Linux,Amazon Linux 等 rpm 系的名字是 kernel,kernel-devel,kernel-headers。* R% U( r7 h# z& n$ T( y
Debian,Ubuntu 等 deb 系的名字是 kernel,linux-headers。; c7 l6 U& ?, j! M+ k1 e
如果这三者任一条件不满足的话,则不管是从代码编译安装还是从 repository 直接安装,也只是安装了 wireguard-tools 而已。- o* p8 Q* |. D5 a# f
而 WireGuard 真正工作的部分,是 wireguard-dkms,也就是动态内核模块支持(DKMS),是它将 WireGuard 编译到系统内核中。" l5 t; Q  c3 E+ W! y5 b$ U( \; {
因此,在某些 VPS 商家,是需要你先自主更换系统内核,并事先将这三者安装好,才有可能不会出现编译或安装失败。
! ?3 |/ |( P. j0 B9 b! v
$ B; q, N: l( v/ |, q3 S我在测试的时候,就经历过各种内核的问题导致的安装失败。如果你也遇到了同样的问题,建议先更换内核。
8 U5 ]7 s) S; G就我个人的体验而言,在 CentOS 7 下更换为 elrepo 的内核是最容易的。这里有个脚本,可以更换到最新版内核,且自动开启 BBR 网络传输算法。/ H( o. A; \5 P, y$ Y
一键安装最新内核并开启 BBR 脚本
5 y( M2 K! C& C# z此脚本运行后,最后会提示你重启系统,此时可以输入 n,暂不重启。手动安装 kernel-headers,运行如下命令:2 L- N: d: n/ C' j

% N9 U; G) G% E  u% \! q" r: fyum -y install kernel-ml-headers
7 y1 Y) V* `) n3 k- @; L( f然后再重启之。运行如下命令:2 Z1 y( `9 `! W% E: ~  U
0 |$ o! p1 G% u6 W8 [
reboot4 M/ [  a$ E" K( Q4 ^
重启后进入系统,运行下面的从代码编译安装 WireGuard,基本上就不会出现安装失败的问题了。
# o0 z  R3 F& [6 F! N注意:自主更换内核后,我建议使用从代码编译安装 WireGuard。# |0 B9 |* l: e8 v  Z
% ?8 E9 c6 F( E4 X/ b
更新日志
# k0 M, X6 V- i. V/ @$ q7 G; g9 N2020 年 4 月 2 日:& U' Q. n( q% m8 f
Linux 内核 5.6 正式发布了,内置了 wireguard module。* X+ H# l7 N; j$ e* o7 `- ^6 f
本次更新添加了检测系统内核版本,如果大于等于 5.6 则不安装 wireguard module,仅安装 wireguard tools,然后再生成默认配置。/ x/ ?5 P7 X/ p3 ?
当系统内核小于 5.6 时,则依然安装 wireguard module 和 tools,并生成默认配置。
0 W6 S/ q2 l) i2 U* t. o7 L5 _/ n
* z2 P1 t  {# L+ ]. l. Q7 V2020 年 1 月 6 日:$ G& w3 U- m4 K7 T9 H
一个好消息是 WireGuard 即将要合并到内核 5.6 里面了。$ ~/ {# C$ _' L0 x  j
于是作者在近期把 repo 改名了,从而导致脚本无法获取到正确的版本号。
* n, }) B! \( r/ f1 H1 M并且还把原来的 repo 一分为二了,分别改为 wireguard-linux-compat 和 wireguard-tools。前者是内核模块,后者是命令行工具。
% \9 R; ^6 V: M. |0 j此次更新就是修复了以上问题。7 }2 w/ s# g5 Y/ [+ c

6 Q1 J# f7 {$ W" q, t( S* I; y3 F2019 年 11 月 16 日:
  v7 |4 a6 u: b* n1、修正客户端配置文件创建时的各参数顺序,与 Windows 客户端的显示顺序一致。$ g+ a$ T- t; ~& r
2、新增 Windows 客户端配置示例说明。
9 q/ B! R: L1 f5 k* w
- t$ ^8 [! {# U# M; s/ Y2019 年 10 月 27 日:: J* |+ N% c8 P+ z  A) |  _8 L6 D
1、新增卸载函数,使用方法请参考下面的卸载方法。- }0 o! Q& J# w( d- {4 e, T
2、支持在 CentOS8 下从 repository 安装,或者从代码编译安装。% f! J9 N. d' [! n# U; b+ A
( [" v3 P' O; o& r9 |
从代码编译安装 WireGuard
7 u' F2 ^2 i+ f/ i/opt/wireguard.sh -s3 p( ^. p9 l, D* c: t( C. x+ I7 B
从 repository 直接安装 WireGuard
8 r. j% ^, _3 h) r& u/opt/wireguard.sh -r$ P. Y& d: w2 B" E
安装完成后,脚本提示如下9 ]- E( b! F6 ?. B& G
WireGuard VPN Server installation completed3 J) D3 r2 Q, E0 }& H1 X
WireGuard VPN default client file is below:/ u. X. j, L( ~1 u2 x+ `
/etc/wireguard/wg0_client7 J1 E' L8 ^1 C8 Q: ^9 Q. n. E2 B8 s
WireGuard VPN default client QR Code is below:
" s9 T+ ~% {7 _$ ]" m* C/etc/wireguard/wg0_client.png
  H6 ^* Z3 ~. p- o- [* {Download and scan this QR Code with your phone, J" v0 ]  P8 s' E( L3 B+ b) z
Welcome to visit: https://teddysun.com/554.html0 j8 ^8 d0 ~* O* ~2 S
Enjoy it
2 g7 K9 Y$ B& t, i& P" z卸载方法
3 Z" N" W2 G5 c3 _9 u: I/opt/wireguard.sh -n' y0 E# R# ]0 g4 f5 K
其他使用选项0 F: j  {5 k" e! X! h; }3 Y
查看已安装 WireGuard 版本号
$ \4 p5 q8 C7 H7 V. _5 `- U
  D+ D0 B* ~0 c& o* {7 v) R/opt/wireguard.sh -v% G: i1 p1 C4 M$ ]
编译升级 WireGuard 到当前最新版本
0 s! l1 U+ D5 I2 H2 N& ?  P4 t9 P, T- u7 E
/opt/wireguard.sh -u; `- j: y" v5 I! z/ z: A6 k
新增 WireGuard 客户端配置
1 n+ |, [9 R0 b5 X- c0 z7 F7 r3 f5 E4 o. m1 q2 R$ L
/opt/wireguard.sh -a- E3 c& j& I9 m, P2 H
删除 WireGuard 客户端配置
2 |7 `- x1 J1 \0 I: p4 M9 w注意:默认客户端 wg0 不允许删除
: o" C* M5 R" B: Y8 T7 }4 J" V: K- [; x) a4 c7 ?
/opt/wireguard.sh -d
6 y% ]6 [4 F' k# a列出 WireGuard 客户端配置
& L; W  l3 |- N: O5 r/ y$ t0 i8 y0 P
: w5 @. m: k( K9 O/opt/wireguard.sh -l! _2 }  }( h9 s+ f0 x
高级用法  V. W7 K! Q4 D3 {4 l
如果你在安装时,需要自定义自己想要的端口,那么可以 export 变量 VPN_SERVER_WG_PORT 的值,这样脚本就会读取这个变量值来定义监听端口,而不会自己随机生成。  B1 u; y5 f, r  R* l
比如你想自定义端口为 1234,那么具体做法就是,在执行从代码编译安装 WireGuard 或者从 repository 直接安装 WireGuard 之前,运行如下命令:
) h. J+ |# [. r1 ]' M
: R: B- p( S' H- M1 Rexport VPN_SERVER_WG_PORT=1234
3 y- ~2 T; F) X4 O2 v下面是一份脚本里用到的变量列表名(共计 11 个),以及它们具体代表什么含义的说明。9 H. ]! k* B& S+ y. I, R% h
VPN_SERVER_PUB_IPV4,定义服务器公网 IPv4,如果你的服务器端存在多个可用公网 IPv4,指定此变量的值。. r5 j* m7 e( X7 ~# |2 q+ R9 `
VPN_SERVER_PUB_IPV6,定义服务器公网 IPv6,如果你的服务器端存在多个可用公网 IPv6,指定此变量的值。
# [4 _6 h# s. C' K1 X% s. MVPN_SERVER_PUB_NIC,定义服务器默认网卡名称,如果你的服务器有多个可用网卡,指定此变量的值。5 b( [$ G- |: s, h  a: _
VPN_SERVER_WG_NIC,定义 WireGuard 网卡名,默认为 wg0,这里一般不推荐指定此变量的值。* `+ ~) v( I' R1 ^- D
VPN_SERVER_WG_IPV4,定义 WireGuard 服务端的内网 IPv4,默认为 10.88.88.1,这里一般不推荐指定此变量的值。: {: T: A* a( c& p' P8 a; f: `
VPN_SERVER_WG_IPV6,定义 WireGuard 服务端的内网 IPv6,默认为 fd88:88:88::1,这里一般不推荐指定此变量的值。- @- I/ D# l* Q% ]5 W1 b# [
VPN_SERVER_WG_PORT,定义器 WireGuard 服务端的监听端口,默认为从 1024 到 20480 随机生成,如果你想自定义端口,指定此变量的值。
$ [# c) ?& G$ Q* |VPN_CLIENT_WG_IPV4,定义 WireGuard 默认客户端的内网 IPv4,默认为 10.88.88.2,这里一般不推荐指定此变量的值。
; Y* i/ k( s; a: ^: P, F9 RVPN_CLIENT_WG_IPV6,定义 WireGuard 默认客户端的内网 IPv6,默认为 fd88:88:88::2,这里一般不推荐指定此变量的值。
  f! d( B" M0 M) M3 DVPN_CLIENT_DNS_1,定义 WireGuard 默认客户端的 DNS,默认为 1.1.1.1,如果你想自定义为别的 DNS,指定此变量的值。6 Q% b7 U( V; u0 {8 N. E0 ?  c
VPN_CLIENT_DNS_2,定义 WireGuard 默认客户端的 DNS,默认为 8.8.8.8,如果你想自定义为别的 DNS,指定此变量的值。
- l; ^2 q1 k& B5 W, `* _9 M' e( i/ p, |! m2 q5 Q
Windows 客户端配置
+ Z/ S6 g. w% O2 g5 K' G下载,安装,打开客户端软件,点击 Add Tunnel -> Add empty tunnel…3 L  `$ O$ X# \: }) L: c, l
WireGuard 一键安装脚本- [" W- a" R  v8 `7 e$ x6 d+ B
/ N+ P) D" A8 f# J# `
此时出现一个可以编辑的界面,将脚本生成的客户端配置 /etc/wireguard/wg0_client 里的内容复制出来,粘贴,保存。
; W4 Y* P! _7 e- _' q8 v6 p$ rWireGuard 一键安装脚本
* Y0 \' l4 ?* N, m! A
* _# {4 F1 n) I* t4 IWireGuard 一键安装脚本
- L9 a  b. W6 N8 _( a8 G' u- M4 F' v6 e* f
点击 Activate,就可以 VPN 连接了。0 b$ b- y+ A8 M8 Q; u" F
WireGuard 一键安装脚本4 c4 z0 \  e2 \6 ?* d# c2 A+ v
8 ~* m' F' A0 S2 D7 h2 o
参考链接
) [* w% ^/ d  m/ Hhttps://www.wireguard.com
  @: ]2 x  T  S6 @4 h! l# ~, `https://github.com/WireGuard/WireGuard' ]4 b* P, ?: q; \+ u4 X7 f
https://git.zx2c4.com/WireGuard5 r) K3 l/ n, p& _9 J# \
https://golb.hplar.ch/2019/07/wireguard-windows.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|赛格电脑 华强北 电脑城 南山赛格 龙岗电子世界 龙华电脑城 沙井电脑城 松岗电脑城 pc4g.com ( 粤ICP备16039863号 )

GMT+8, 2025-9-2 09:14 , Processed in 0.081273 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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