华强北电脑城 龙岗电子世界 龙华电脑城  凯尔电脑

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1872|回复: 0

wireguard

[复制链接]
发表于 2013-5-15 22:37:16 | 显示全部楼层 |阅读模式
本脚本适用环境" _6 ^, c! `0 u) K* Q
系统支持:CentOS 7+,Debian 8+,Raspbian 10,Ubuntu 16+,Fedora 29+4 t/ @" I7 P0 D
内存要求:≥256M' P7 W' D% D/ f3 M6 J8 Q
日期  :2020 年 4 月 2 日
9 G- N/ R0 A' m/ O* L+ P, D" h9 x) b1 T) ~, g* E' ]# ?' D) e
关于本脚本
& T! |" V( i+ E. _9 L, G1. 支持两种安装方式:从代码编译安装,从 repository 直接安装;
  e0 W2 X5 T( i+ E2. 脚本会创建默认的 wg0 设备,以及 wg0 的客户端配置,并生成客户端配置对应的二维码 png 图片;
3 i" G% i" y6 J3 z; Z# B3. 脚本会修改本机防火墙设置,如果未启用防火墙,则会出现警告提示,需要手动去设置;3 b: W2 R/ R7 L" Z  s5 f
4. 脚本会从 1024 到 20480 随机生成监听端口;1 o4 G2 L/ S* ]: e; H1 Q  b, i# l
5. 脚本支持新增,删除,列出客户端功能;
' Y, @/ W, _$ M+ b2 z* P6 j6. 脚本支持查看已安装的 WireGuard 的版本号;- {: {% ]6 I+ ]. h4 G
7. 脚本支持从代码编译安装的方式升级 WireGuard 到当前最新版本;
* N. h" z1 g: Q' e5 \( B/ K* h3 W& @! Y2 h
客户端下载* J- k% S4 @. j
Windows, macOS, Android, iOS 客户端
2 N- F6 b; P! h  i2 e5 Yhttps://www.wireguard.com/install/
& F2 h: l& a( k6 u& X7 @0 x, {. E) |1 c( N/ V" b5 ^9 {
脚本使用方法
) _- t5 h  A$ l使用 root 用户登录系统,运行以下命令下载脚本,赋予执行权限:
: w3 N4 |7 R: e; }* ?( A% d
" t* p3 C3 d' vwget --no-check-certificate -O /opt/wireguard.sh https://raw.githubusercontent.co ... master/wireguard.sh
+ \, P. I, D# @/ O& `# C% v$ ychmod 755 /opt/wireguard.sh
+ h0 \5 p: i. {8 ~  E- @3 }5 ?, E写在前面7 P5 ?! _9 `0 T' u* y* D
WireGuard 的安装和使用条件是比较苛刻的。因此我不建议在生产系统里安装和使用 WireGuard,除非你知道自己在做什么。% r9 a5 o3 Y7 O- V! i8 ^; B
它依赖于内核,也就是 kernel,在不同的系统中,内核,内核源码包,内核头文件必须存在且这三者版本要一致。
( I3 ~- n, I2 I# m, l3 xRedHat,CentOS,Fedora,Oracle Linux,Amazon Linux 等 rpm 系的名字是 kernel,kernel-devel,kernel-headers。
5 p8 w* `  Y; T# U7 D( HDebian,Ubuntu 等 deb 系的名字是 kernel,linux-headers。% I: m) ^4 n# z: U  r- X
如果这三者任一条件不满足的话,则不管是从代码编译安装还是从 repository 直接安装,也只是安装了 wireguard-tools 而已。# V- r; Q- C& T, A
而 WireGuard 真正工作的部分,是 wireguard-dkms,也就是动态内核模块支持(DKMS),是它将 WireGuard 编译到系统内核中。
, m4 d0 h9 v( j因此,在某些 VPS 商家,是需要你先自主更换系统内核,并事先将这三者安装好,才有可能不会出现编译或安装失败。
( x2 m; r3 D8 a3 V
. A5 i& f6 t/ G' R  b- y7 s我在测试的时候,就经历过各种内核的问题导致的安装失败。如果你也遇到了同样的问题,建议先更换内核。
) P1 A, {- m( e# q( O' `# V' K就我个人的体验而言,在 CentOS 7 下更换为 elrepo 的内核是最容易的。这里有个脚本,可以更换到最新版内核,且自动开启 BBR 网络传输算法。
: E8 I+ ~; b8 {一键安装最新内核并开启 BBR 脚本" d. e6 p! `8 A* R( {
此脚本运行后,最后会提示你重启系统,此时可以输入 n,暂不重启。手动安装 kernel-headers,运行如下命令:5 H' @' l- K( n: O; j1 n4 v  j

( q; a: f: y( B/ q! b' r5 d6 q7 t5 Ayum -y install kernel-ml-headers
( e, ~- g/ E  _/ X8 ~然后再重启之。运行如下命令:; j$ O4 ^& r" g

- O! N/ P2 e9 G' p. hreboot( f" ^6 ~/ w7 I
重启后进入系统,运行下面的从代码编译安装 WireGuard,基本上就不会出现安装失败的问题了。  U7 I: C- G. l$ b  N7 B
注意:自主更换内核后,我建议使用从代码编译安装 WireGuard。) c* c3 o4 y& K9 q8 \

" X: L! k/ a- X+ F: ?' `更新日志' K, D) B/ E5 D+ X9 T
2020 年 4 月 2 日:" c" r2 @- t9 h& G
Linux 内核 5.6 正式发布了,内置了 wireguard module。, k) A! n1 _  g
本次更新添加了检测系统内核版本,如果大于等于 5.6 则不安装 wireguard module,仅安装 wireguard tools,然后再生成默认配置。
/ J, H& s6 x) r# `, P+ h* n当系统内核小于 5.6 时,则依然安装 wireguard module 和 tools,并生成默认配置。
2 {$ ^+ o2 v+ ]7 o$ z, U) A9 B0 A: i  V6 d. g+ a! j) u: a
2020 年 1 月 6 日:% A# A5 y4 W  R6 s
一个好消息是 WireGuard 即将要合并到内核 5.6 里面了。
/ E, a/ ~+ Z! ^/ _+ g于是作者在近期把 repo 改名了,从而导致脚本无法获取到正确的版本号。5 T! e% r! f6 o6 X6 ~& S
并且还把原来的 repo 一分为二了,分别改为 wireguard-linux-compat 和 wireguard-tools。前者是内核模块,后者是命令行工具。
, x; E  O* s. `, k' s6 a' R此次更新就是修复了以上问题。  H; y9 f0 [" s: j- l$ b0 V
0 }" ]. W: P( d1 Z8 D4 H# ~
2019 年 11 月 16 日:
$ J1 k  a4 @8 \- x& h) b1、修正客户端配置文件创建时的各参数顺序,与 Windows 客户端的显示顺序一致。' v+ m/ b4 _* g; X! K( c& M
2、新增 Windows 客户端配置示例说明。+ j3 e- |4 B7 D- `3 C$ R9 k4 r& N
+ t0 k( o9 d7 X) [9 U+ a
2019 年 10 月 27 日:
% d" j  f2 N8 h8 p8 K. G1、新增卸载函数,使用方法请参考下面的卸载方法。$ `6 e" K; t/ A$ K9 B( @
2、支持在 CentOS8 下从 repository 安装,或者从代码编译安装。3 c! P: d9 A* _, c$ z3 ~6 R$ Z
& r! M" q) N, E- ^
从代码编译安装 WireGuard0 F0 P$ u: l5 f8 W0 ~( a
/opt/wireguard.sh -s/ q9 m4 F9 p4 l, t4 Q8 d
从 repository 直接安装 WireGuard* m( l5 t" I; Q
/opt/wireguard.sh -r. z1 L3 I/ L; c: X
安装完成后,脚本提示如下
/ V+ l; C, `. _0 i& {- RWireGuard VPN Server installation completed: m, `) ~$ L% {0 K' |0 X
WireGuard VPN default client file is below:
" d' U: x& R: o/etc/wireguard/wg0_client% G7 @& s6 m" @5 L8 g
WireGuard VPN default client QR Code is below:
& o! y3 H3 k7 O- k3 `5 n/etc/wireguard/wg0_client.png
/ e6 v9 T, }+ b% A- HDownload and scan this QR Code with your phone
4 B  X- R4 ~1 I3 ]- G, LWelcome to visit: https://teddysun.com/554.html# [0 V, l) [* P1 L
Enjoy it4 ~( W( u' c7 M
卸载方法) T6 w5 K$ ^$ W3 x6 @1 c6 m& P
/opt/wireguard.sh -n
2 i4 D& s; B" _$ L* d' z其他使用选项
- @. U; ]. e0 N0 I% p4 n查看已安装 WireGuard 版本号
* `, d9 M, d: i4 O7 a7 [, d8 @  B* ?, A6 x1 T
/opt/wireguard.sh -v" a( v! U2 U3 ]$ o: p+ s
编译升级 WireGuard 到当前最新版本5 V9 o. r' C% \3 V
# M0 E0 H- u* A: s
/opt/wireguard.sh -u& I; s% g5 r2 h; ]# d
新增 WireGuard 客户端配置
; U% d" ^( F! y3 f: P9 n, B
. ]: e/ \) f; N# c+ ^2 K/opt/wireguard.sh -a
2 o- a0 K% S9 f& i( W6 C) Q删除 WireGuard 客户端配置
# ^4 }3 K! r8 U5 i$ {' Q; @6 Z注意:默认客户端 wg0 不允许删除
& a( w! t) o$ `; `1 v9 p$ L2 F% n, P& Q8 w) g
/opt/wireguard.sh -d
7 p& {6 N+ |  N2 ?( j列出 WireGuard 客户端配置
5 C0 b& ~7 O9 h$ s5 ?6 H9 T$ Q- J# H1 b, T. v9 l# W9 Z
/opt/wireguard.sh -l
, X2 _9 I% d+ }9 \9 t5 Z高级用法8 X+ ?+ @0 t; a! Q% h
如果你在安装时,需要自定义自己想要的端口,那么可以 export 变量 VPN_SERVER_WG_PORT 的值,这样脚本就会读取这个变量值来定义监听端口,而不会自己随机生成。# E8 b, W: H; o5 t! `
比如你想自定义端口为 1234,那么具体做法就是,在执行从代码编译安装 WireGuard 或者从 repository 直接安装 WireGuard 之前,运行如下命令:' x# V" K/ y2 d

3 P/ O6 b. E1 F! Q' {6 l8 Rexport VPN_SERVER_WG_PORT=1234
4 s4 D/ o) L" R) d1 C; J/ W" `下面是一份脚本里用到的变量列表名(共计 11 个),以及它们具体代表什么含义的说明。0 Q, y) R: i( h% {& M$ d
VPN_SERVER_PUB_IPV4,定义服务器公网 IPv4,如果你的服务器端存在多个可用公网 IPv4,指定此变量的值。
& t& e: |- z0 A  ~% Y( D) EVPN_SERVER_PUB_IPV6,定义服务器公网 IPv6,如果你的服务器端存在多个可用公网 IPv6,指定此变量的值。- i! P& {9 J4 ?/ V
VPN_SERVER_PUB_NIC,定义服务器默认网卡名称,如果你的服务器有多个可用网卡,指定此变量的值。2 W( q* a# W, l
VPN_SERVER_WG_NIC,定义 WireGuard 网卡名,默认为 wg0,这里一般不推荐指定此变量的值。$ i; W! H4 h+ O$ J, u
VPN_SERVER_WG_IPV4,定义 WireGuard 服务端的内网 IPv4,默认为 10.88.88.1,这里一般不推荐指定此变量的值。% V; P# d6 U& P* n
VPN_SERVER_WG_IPV6,定义 WireGuard 服务端的内网 IPv6,默认为 fd88:88:88::1,这里一般不推荐指定此变量的值。
& N3 u+ C8 i- H2 I* cVPN_SERVER_WG_PORT,定义器 WireGuard 服务端的监听端口,默认为从 1024 到 20480 随机生成,如果你想自定义端口,指定此变量的值。+ B7 O' j; p' w) b
VPN_CLIENT_WG_IPV4,定义 WireGuard 默认客户端的内网 IPv4,默认为 10.88.88.2,这里一般不推荐指定此变量的值。
* V6 F: p# g( W, _3 W. ]$ E: X, h- @VPN_CLIENT_WG_IPV6,定义 WireGuard 默认客户端的内网 IPv6,默认为 fd88:88:88::2,这里一般不推荐指定此变量的值。- z! @+ |& W; N# _$ V. o5 \
VPN_CLIENT_DNS_1,定义 WireGuard 默认客户端的 DNS,默认为 1.1.1.1,如果你想自定义为别的 DNS,指定此变量的值。/ S/ k7 I' G6 t0 ^
VPN_CLIENT_DNS_2,定义 WireGuard 默认客户端的 DNS,默认为 8.8.8.8,如果你想自定义为别的 DNS,指定此变量的值。
6 W2 l  n5 O6 }8 p* s8 \) W; V5 Y2 u% X
" ]7 w5 J2 {! @3 ^8 ]Windows 客户端配置5 s) m  _& N8 F3 G  C7 ]
下载,安装,打开客户端软件,点击 Add Tunnel -> Add empty tunnel…
4 B4 t! _& w6 b$ S' SWireGuard 一键安装脚本
. i: S& s. a' C$ S. D7 y) k7 D) c" w3 F, O& @$ t; p
此时出现一个可以编辑的界面,将脚本生成的客户端配置 /etc/wireguard/wg0_client 里的内容复制出来,粘贴,保存。. f8 d, v1 D$ a) b+ l
WireGuard 一键安装脚本0 }! j9 ^% F. S, C* K& e- T( G
6 v' p* d$ s) [5 K5 R3 i2 S
WireGuard 一键安装脚本9 Z0 C% ?/ j8 r, H
0 K- A3 U9 _4 L/ h$ ^# p; |! p
点击 Activate,就可以 VPN 连接了。1 G% S% H+ @2 O. `) x1 H5 Q
WireGuard 一键安装脚本6 w3 W+ R9 D& {, I  W

+ t( c' [& h) Q. I! l0 t参考链接5 M3 Q6 y4 k: [+ Q7 a% J8 g
https://www.wireguard.com+ k  q! b* O6 s+ d4 E
https://github.com/WireGuard/WireGuard
# U* Z( R. E0 E0 `: \5 V0 uhttps://git.zx2c4.com/WireGuard" e) X& D% b: Q6 E0 g$ Z  c
https://golb.hplar.ch/2019/07/wireguard-windows.html
回复

使用道具 举报

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

本版积分规则

QQ|华强北 电脑城 龙岗电子世界 龙华电脑城 pc4g.com ( 粤ICP备16039863号 )

GMT+8, 2024-9-19 19:17 , Processed in 0.169237 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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