找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2629|回复: 0

wireguard

[复制链接]
发表于 2013-5-15 22:37:16 | 显示全部楼层 |阅读模式
本脚本适用环境
* V  i3 t! x- s; C1 X9 |% |系统支持:CentOS 7+,Debian 8+,Raspbian 10,Ubuntu 16+,Fedora 29+9 T+ p$ c) V) v! I6 F) B* C
内存要求:≥256M
/ \9 n# T( j0 @! ^- J日期  :2020 年 4 月 2 日# k4 h3 x$ L& u, j$ {# R

8 ]2 p- I1 [3 Z) F2 D, D8 e( y关于本脚本
/ A  a6 U/ B" R, t1. 支持两种安装方式:从代码编译安装,从 repository 直接安装;
9 |% _' Z7 q$ a! I; R- e6 ~2. 脚本会创建默认的 wg0 设备,以及 wg0 的客户端配置,并生成客户端配置对应的二维码 png 图片;
- s& v( m/ Q3 {) H$ l3. 脚本会修改本机防火墙设置,如果未启用防火墙,则会出现警告提示,需要手动去设置;; K& s$ B  D3 H$ Y1 d
4. 脚本会从 1024 到 20480 随机生成监听端口;
8 p  L; `! \$ G) D, U5. 脚本支持新增,删除,列出客户端功能;
2 v# C8 J3 e) ^8 h1 j) X6. 脚本支持查看已安装的 WireGuard 的版本号;
! ^6 I# s/ E; I# T( N7. 脚本支持从代码编译安装的方式升级 WireGuard 到当前最新版本;. l& u; m. U& v1 B

' X  \5 Z5 g" e- ?8 Q& @( B客户端下载
8 q7 u  Y9 C+ \& j7 x% lWindows, macOS, Android, iOS 客户端
, C! J4 ~! u8 s& U5 J, ehttps://www.wireguard.com/install/
9 ?  f: P9 V: A  l2 E
( w9 H6 b/ a# g2 [脚本使用方法3 A" s! G' J3 w* a0 y1 y: o
使用 root 用户登录系统,运行以下命令下载脚本,赋予执行权限:
. |/ a$ k% ~3 [# {1 n, d
4 S9 k+ ]: V8 H3 @4 C9 @wget --no-check-certificate -O /opt/wireguard.sh https://raw.githubusercontent.co ... master/wireguard.sh
; R! K; M% ~" V9 T- Jchmod 755 /opt/wireguard.sh' L0 ~* x; A8 \- e
写在前面# p4 J  h2 ~, h4 R/ w7 n
WireGuard 的安装和使用条件是比较苛刻的。因此我不建议在生产系统里安装和使用 WireGuard,除非你知道自己在做什么。7 P4 `7 j( K9 Y  c- W" o
它依赖于内核,也就是 kernel,在不同的系统中,内核,内核源码包,内核头文件必须存在且这三者版本要一致。
: i0 D7 H- Y" h3 ~: ZRedHat,CentOS,Fedora,Oracle Linux,Amazon Linux 等 rpm 系的名字是 kernel,kernel-devel,kernel-headers。: S: I8 R! o9 `2 Q  I  [
Debian,Ubuntu 等 deb 系的名字是 kernel,linux-headers。
/ _4 S2 D0 s5 s( V如果这三者任一条件不满足的话,则不管是从代码编译安装还是从 repository 直接安装,也只是安装了 wireguard-tools 而已。0 X- b4 O' B' o9 }* d3 m. S
而 WireGuard 真正工作的部分,是 wireguard-dkms,也就是动态内核模块支持(DKMS),是它将 WireGuard 编译到系统内核中。
% E8 f; Y. o4 L! Z8 N$ U6 P- C因此,在某些 VPS 商家,是需要你先自主更换系统内核,并事先将这三者安装好,才有可能不会出现编译或安装失败。+ g6 A  j* i) n: I, B7 F
- c% Q* `: H$ Q
我在测试的时候,就经历过各种内核的问题导致的安装失败。如果你也遇到了同样的问题,建议先更换内核。; K5 r; F/ V6 ~6 M2 I# s5 h
就我个人的体验而言,在 CentOS 7 下更换为 elrepo 的内核是最容易的。这里有个脚本,可以更换到最新版内核,且自动开启 BBR 网络传输算法。
$ G* Y; n" W) @' V6 F一键安装最新内核并开启 BBR 脚本
3 w& Y) ?' [+ f  }$ O4 [( d, p# b此脚本运行后,最后会提示你重启系统,此时可以输入 n,暂不重启。手动安装 kernel-headers,运行如下命令:+ n7 u# |" d7 q

2 X! Y" W8 X. Z, ?" e- ^5 Xyum -y install kernel-ml-headers; Q  ~% t7 v% d9 W( i
然后再重启之。运行如下命令:
  Q, K" u/ f1 Y$ k" `+ T: b* o. o! p! [, f
reboot
4 g! U( j( @$ t% a重启后进入系统,运行下面的从代码编译安装 WireGuard,基本上就不会出现安装失败的问题了。2 N5 k3 i0 [# {0 e
注意:自主更换内核后,我建议使用从代码编译安装 WireGuard。
% b% ^8 r$ D+ O5 z* g2 K
5 i. g2 l5 D  @) `9 S; h( ~更新日志
/ B# p: V* u6 ?4 J: O2020 年 4 月 2 日:5 s+ H/ J' ?; a: i
Linux 内核 5.6 正式发布了,内置了 wireguard module。
& T1 F. @* n' j本次更新添加了检测系统内核版本,如果大于等于 5.6 则不安装 wireguard module,仅安装 wireguard tools,然后再生成默认配置。
4 k' \' m; S/ \5 h' y  S, ?: U& y当系统内核小于 5.6 时,则依然安装 wireguard module 和 tools,并生成默认配置。9 r, [, {5 c! p: C
0 j1 j& }+ j' y6 k, a
2020 年 1 月 6 日:6 O# f( q8 U. O6 P- L
一个好消息是 WireGuard 即将要合并到内核 5.6 里面了。" P) Q8 w* G6 W9 Q
于是作者在近期把 repo 改名了,从而导致脚本无法获取到正确的版本号。
8 M( ]/ d  x& N# I并且还把原来的 repo 一分为二了,分别改为 wireguard-linux-compat 和 wireguard-tools。前者是内核模块,后者是命令行工具。
- l- O( _% p" R" }) s此次更新就是修复了以上问题。8 ?- [' Y0 M4 A1 o* j" [
+ z+ n- f, m" g* i9 V/ N4 w5 c
2019 年 11 月 16 日:; l1 {0 ]% n# ^8 o
1、修正客户端配置文件创建时的各参数顺序,与 Windows 客户端的显示顺序一致。! q- g# R) U% z/ E
2、新增 Windows 客户端配置示例说明。4 Y1 a3 p6 W8 S1 r) S" B4 P  [
0 x2 `, C1 f  t; A
2019 年 10 月 27 日:3 r( p& S; M' o# Q
1、新增卸载函数,使用方法请参考下面的卸载方法。% Q/ @* k- ], t
2、支持在 CentOS8 下从 repository 安装,或者从代码编译安装。4 K) U: H) t# ^/ w; `- o5 R

9 Y( K9 l' [  q- g$ @从代码编译安装 WireGuard  B/ ^9 k4 Y2 x+ R. @! z$ ]
/opt/wireguard.sh -s
4 ?8 u1 E  I" {0 e从 repository 直接安装 WireGuard: I% G2 C" o0 x) {& l3 t2 J3 g
/opt/wireguard.sh -r
  C6 z; p0 x" o9 i3 E安装完成后,脚本提示如下4 \, t) x+ S% b# z6 p. O( _0 k
WireGuard VPN Server installation completed$ f# `6 s6 y- c4 B
WireGuard VPN default client file is below:
) f0 d. d1 U% Z) Y& j" F/etc/wireguard/wg0_client* @, a( g6 t$ L) _; D# w& f# s: A7 P
WireGuard VPN default client QR Code is below:
% _- b) V3 l% K: r2 A' N& C/etc/wireguard/wg0_client.png7 z4 J7 ]2 o" H) Q- |' M
Download and scan this QR Code with your phone
1 ]) S" K! _5 U; ^Welcome to visit: https://teddysun.com/554.html! R5 v, D( r7 }( A1 e1 M# e$ ]  I
Enjoy it
% {+ {  e$ E+ u+ z. P卸载方法' r& A! a! b# |; ~6 s8 U
/opt/wireguard.sh -n/ Z) ]3 R  h& W* y. n" w, \' I& P$ k
其他使用选项
+ H; F5 S; b6 Z9 h$ c, m7 T' L6 x查看已安装 WireGuard 版本号( l- e' ~9 d6 O/ R# U

7 f+ ]4 q% d5 |) ?* @# L/opt/wireguard.sh -v
( b' O4 n2 j! M' a编译升级 WireGuard 到当前最新版本6 {7 t6 K1 }9 g% n. s5 X2 j" x# L2 u( {
$ C5 _) {4 z4 m/ a* Y  k0 J  `4 [* m
/opt/wireguard.sh -u$ X8 S/ @5 Q0 E0 l4 V) v
新增 WireGuard 客户端配置: U* i8 H% v( L

3 W+ U/ S, u9 v* p0 V) l# D/opt/wireguard.sh -a) g2 c6 [9 t  Q+ B6 H
删除 WireGuard 客户端配置
$ ^& p3 G7 d" c9 k3 g0 q7 V注意:默认客户端 wg0 不允许删除+ D2 A$ h- u* B7 H! m- O
7 I( \! {8 h* {  }) `$ j
/opt/wireguard.sh -d
) T$ n, S5 F6 Z! T列出 WireGuard 客户端配置/ V8 \" @( o( y: o$ I7 s9 G
2 z6 X+ S& S. ?' {+ w
/opt/wireguard.sh -l
& n! U* {  a& E! K高级用法
2 y3 s' P* n( p+ u& J+ u如果你在安装时,需要自定义自己想要的端口,那么可以 export 变量 VPN_SERVER_WG_PORT 的值,这样脚本就会读取这个变量值来定义监听端口,而不会自己随机生成。. ^4 G% r5 |8 A( C* {9 d
比如你想自定义端口为 1234,那么具体做法就是,在执行从代码编译安装 WireGuard 或者从 repository 直接安装 WireGuard 之前,运行如下命令:
% g/ }" y: i; P4 ~* l9 }& d, V5 _
. X7 X3 k3 I6 xexport VPN_SERVER_WG_PORT=1234
$ V5 F3 A+ Y+ d7 G" N2 l# I, a1 _下面是一份脚本里用到的变量列表名(共计 11 个),以及它们具体代表什么含义的说明。
) y9 r! k7 c5 y8 k5 s4 Z4 [VPN_SERVER_PUB_IPV4,定义服务器公网 IPv4,如果你的服务器端存在多个可用公网 IPv4,指定此变量的值。$ Y* F2 P3 h7 }; O. W
VPN_SERVER_PUB_IPV6,定义服务器公网 IPv6,如果你的服务器端存在多个可用公网 IPv6,指定此变量的值。# P. X! M  W% r! }' a) F
VPN_SERVER_PUB_NIC,定义服务器默认网卡名称,如果你的服务器有多个可用网卡,指定此变量的值。
" k* K2 `/ q% }' E  IVPN_SERVER_WG_NIC,定义 WireGuard 网卡名,默认为 wg0,这里一般不推荐指定此变量的值。, O) x) p4 r, m/ J, Z' z4 w6 @
VPN_SERVER_WG_IPV4,定义 WireGuard 服务端的内网 IPv4,默认为 10.88.88.1,这里一般不推荐指定此变量的值。" t1 C/ t+ O# ^( E# Y  V) ~: I$ Z
VPN_SERVER_WG_IPV6,定义 WireGuard 服务端的内网 IPv6,默认为 fd88:88:88::1,这里一般不推荐指定此变量的值。
: u8 D2 a, i( i( E# e' O6 ^# qVPN_SERVER_WG_PORT,定义器 WireGuard 服务端的监听端口,默认为从 1024 到 20480 随机生成,如果你想自定义端口,指定此变量的值。" W$ d1 V# Y$ O% @* H
VPN_CLIENT_WG_IPV4,定义 WireGuard 默认客户端的内网 IPv4,默认为 10.88.88.2,这里一般不推荐指定此变量的值。* \) v6 a" P- n8 c8 w1 j! O, [  v( h* `
VPN_CLIENT_WG_IPV6,定义 WireGuard 默认客户端的内网 IPv6,默认为 fd88:88:88::2,这里一般不推荐指定此变量的值。' A" M8 z+ [4 }' C, I2 H
VPN_CLIENT_DNS_1,定义 WireGuard 默认客户端的 DNS,默认为 1.1.1.1,如果你想自定义为别的 DNS,指定此变量的值。
+ R% q0 F/ a! `9 T1 nVPN_CLIENT_DNS_2,定义 WireGuard 默认客户端的 DNS,默认为 8.8.8.8,如果你想自定义为别的 DNS,指定此变量的值。
6 ]2 ^  z4 C% l5 P3 @0 X( @3 a# [( c# B
Windows 客户端配置2 V& F* w* F2 c" n6 x+ O; V# T, ~
下载,安装,打开客户端软件,点击 Add Tunnel -> Add empty tunnel…
8 x: x3 y, V1 F# C# M6 JWireGuard 一键安装脚本) ?, g* ]' F  ]  N6 C( A

, q9 I. V1 o  ?3 j3 Y此时出现一个可以编辑的界面,将脚本生成的客户端配置 /etc/wireguard/wg0_client 里的内容复制出来,粘贴,保存。
  W+ I& h7 D" G* U/ J: l8 \- C- q+ nWireGuard 一键安装脚本7 \3 [% }! h" U: |

( B- N) ]% t% w% [+ T. DWireGuard 一键安装脚本
4 Y5 N: h, l, K0 N" e& ^! x" n7 U/ v' \8 j% F7 v. i. W, _
点击 Activate,就可以 VPN 连接了。
" ^5 b' F# r$ D8 s4 M4 o7 O7 UWireGuard 一键安装脚本
5 R- l  g/ l5 p, O2 B; I; n: D' n7 b2 H' o1 G- z
参考链接
5 U+ ~1 [# L4 w1 Thttps://www.wireguard.com
* T' F2 S/ D) V9 D2 w) V; Ahttps://github.com/WireGuard/WireGuard, l8 Z9 c* v+ U) c$ q
https://git.zx2c4.com/WireGuard5 s5 t2 _( d% \$ e
https://golb.hplar.ch/2019/07/wireguard-windows.html
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-14 18:05 , Processed in 0.028841 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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