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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2421|回复: 0

wireguard

[复制链接]
发表于 2013-5-15 22:37:16 | 显示全部楼层 |阅读模式
本脚本适用环境
- w) v, ?8 t2 f! B+ ~8 U1 S3 G系统支持:CentOS 7+,Debian 8+,Raspbian 10,Ubuntu 16+,Fedora 29+
1 P/ B  ]9 [! J/ K( I( P内存要求:≥256M
& c6 z0 e7 r% I2 s: A日期  :2020 年 4 月 2 日- h$ N2 {1 E6 }2 @( |6 Y/ g

) i: u) F  ~, L* E. Y3 [5 y关于本脚本5 M& w* e  W1 k/ [0 `9 \* @- V
1. 支持两种安装方式:从代码编译安装,从 repository 直接安装;
( v5 M9 c1 t, i+ T2. 脚本会创建默认的 wg0 设备,以及 wg0 的客户端配置,并生成客户端配置对应的二维码 png 图片;
  k! |9 l' E/ Z/ z6 R% f* A3. 脚本会修改本机防火墙设置,如果未启用防火墙,则会出现警告提示,需要手动去设置;
8 ]: Q# v2 w. I* H/ g1 X, W4. 脚本会从 1024 到 20480 随机生成监听端口;
: R6 d( M0 O% w' O0 P' Y" c# D5. 脚本支持新增,删除,列出客户端功能;
2 U  u" w2 o/ \% B& {8 }: O7 V6. 脚本支持查看已安装的 WireGuard 的版本号;5 b1 O  S( E7 w8 ^1 c# `. d
7. 脚本支持从代码编译安装的方式升级 WireGuard 到当前最新版本;2 z2 ?1 x; u- J1 o, h
. z6 o3 U: X6 e6 r3 F* X2 G' C, @  f
客户端下载' [. V) `% f( d! v' b1 K
Windows, macOS, Android, iOS 客户端
& x7 [% T! r3 O, r) }) I# Shttps://www.wireguard.com/install/, G6 n% k) D1 O0 v

' U) I1 z: _- R1 h! \+ }脚本使用方法
4 O- N3 F9 _' ~使用 root 用户登录系统,运行以下命令下载脚本,赋予执行权限:
( l0 i; S+ K( \7 x$ [& I4 d- s2 f* ]7 C* R
wget --no-check-certificate -O /opt/wireguard.sh https://raw.githubusercontent.co ... master/wireguard.sh
2 i4 \: ^% `" K3 _2 X2 _chmod 755 /opt/wireguard.sh
1 V) Y7 ]0 Y: U, x# p: ]+ ^3 W: {+ X写在前面
; T6 n. Y+ ~# P% a  fWireGuard 的安装和使用条件是比较苛刻的。因此我不建议在生产系统里安装和使用 WireGuard,除非你知道自己在做什么。
/ V' T) s3 W$ Q  d# p+ {1 B它依赖于内核,也就是 kernel,在不同的系统中,内核,内核源码包,内核头文件必须存在且这三者版本要一致。
0 }# R1 I0 y1 {' @RedHat,CentOS,Fedora,Oracle Linux,Amazon Linux 等 rpm 系的名字是 kernel,kernel-devel,kernel-headers。+ U! d* J  k: ?5 u5 D
Debian,Ubuntu 等 deb 系的名字是 kernel,linux-headers。+ G% R5 o" C  h) k
如果这三者任一条件不满足的话,则不管是从代码编译安装还是从 repository 直接安装,也只是安装了 wireguard-tools 而已。6 D/ s( w; x7 J! K/ G% f& Z& W
而 WireGuard 真正工作的部分,是 wireguard-dkms,也就是动态内核模块支持(DKMS),是它将 WireGuard 编译到系统内核中。
* u7 w% T: l4 x9 Z" [因此,在某些 VPS 商家,是需要你先自主更换系统内核,并事先将这三者安装好,才有可能不会出现编译或安装失败。  ^, L0 t' B2 {- W& p

% h3 {5 Q& P& c1 F8 C6 Z9 G我在测试的时候,就经历过各种内核的问题导致的安装失败。如果你也遇到了同样的问题,建议先更换内核。0 H! B( Y9 o9 ^: b0 q- @7 E! b3 [8 u
就我个人的体验而言,在 CentOS 7 下更换为 elrepo 的内核是最容易的。这里有个脚本,可以更换到最新版内核,且自动开启 BBR 网络传输算法。
2 U5 Z' x* x: n( q* C/ u一键安装最新内核并开启 BBR 脚本
4 \2 Y; z! f* [此脚本运行后,最后会提示你重启系统,此时可以输入 n,暂不重启。手动安装 kernel-headers,运行如下命令:  o/ W. P% C  p' U8 c4 j3 x
$ C* Q- y$ j, ]: }. p
yum -y install kernel-ml-headers: [8 m& D0 P0 l+ `/ G& U
然后再重启之。运行如下命令:' x8 m* m/ k7 ]+ g) d# f1 ^$ ?

$ z2 W% a. V! w3 d& M( Nreboot
9 B, x: r8 J* F- w重启后进入系统,运行下面的从代码编译安装 WireGuard,基本上就不会出现安装失败的问题了。4 \$ c6 Z% j* @5 c' `% b
注意:自主更换内核后,我建议使用从代码编译安装 WireGuard。
# `# ]6 ]& o  n* N8 z2 B. d7 S+ H  y% x; |- z
更新日志& l9 p0 G, p* ~. ^( i' n- `
2020 年 4 月 2 日:5 V; ?& i$ ?1 K. M: o
Linux 内核 5.6 正式发布了,内置了 wireguard module。
5 K- Z5 E0 ?) H) p  c, _0 N本次更新添加了检测系统内核版本,如果大于等于 5.6 则不安装 wireguard module,仅安装 wireguard tools,然后再生成默认配置。: q3 r$ M" I/ v5 I: Q
当系统内核小于 5.6 时,则依然安装 wireguard module 和 tools,并生成默认配置。; B$ s% `1 s. _$ a! r6 m
( T# _+ _9 F) H- |. o, P  z
2020 年 1 月 6 日:0 D& D4 y' _" b8 U
一个好消息是 WireGuard 即将要合并到内核 5.6 里面了。0 H# Q% V& ~: b
于是作者在近期把 repo 改名了,从而导致脚本无法获取到正确的版本号。( h6 t* J# k* J. g
并且还把原来的 repo 一分为二了,分别改为 wireguard-linux-compat 和 wireguard-tools。前者是内核模块,后者是命令行工具。8 Q/ o' D) H  v  B( Q; j3 o
此次更新就是修复了以上问题。6 F0 y3 r7 R% e5 k" |
* z) S3 q- f7 ?7 F8 u6 L/ f4 y6 Y7 s
2019 年 11 月 16 日:8 b" z# o; U/ u0 Y0 ]
1、修正客户端配置文件创建时的各参数顺序,与 Windows 客户端的显示顺序一致。1 N  k1 b3 N: V7 Y
2、新增 Windows 客户端配置示例说明。
1 o: o0 g9 v" t' M
, C! h9 j5 ~# ~2019 年 10 月 27 日:
1 w/ u5 }6 w. n! f+ a( {, w9 E8 l/ o1、新增卸载函数,使用方法请参考下面的卸载方法。" V* _, J9 ^, Z& K9 m5 R) m( V) [
2、支持在 CentOS8 下从 repository 安装,或者从代码编译安装。
' X) r. H' ?% S  _% M: R0 L" ^) j
从代码编译安装 WireGuard
# R; Q4 F: w  a6 l* L/opt/wireguard.sh -s( j( H4 B$ W8 n
从 repository 直接安装 WireGuard# Q8 b1 \, \$ @- [, j7 Z3 A3 y7 g
/opt/wireguard.sh -r
7 n, C) F8 {& Z: V- I安装完成后,脚本提示如下
3 y+ k  ^9 A/ GWireGuard VPN Server installation completed/ I1 n/ v; E/ _) i3 Q  c
WireGuard VPN default client file is below:
$ T2 W7 d) l( E* L7 P/ n/etc/wireguard/wg0_client! L9 y; J" a2 ^6 M/ ]1 E: F8 f
WireGuard VPN default client QR Code is below:7 Z5 v  p4 I, y2 b* s8 x
/etc/wireguard/wg0_client.png
2 n2 v3 }2 F6 [. b- a+ \9 ]; uDownload and scan this QR Code with your phone; m+ j1 c) y/ `4 K, A
Welcome to visit: https://teddysun.com/554.html
+ R5 L, k# Q" NEnjoy it
0 h5 w9 I2 d% T. \: ]卸载方法. ?8 ^& g9 [+ i" s
/opt/wireguard.sh -n' ~0 d  S' v. P7 U
其他使用选项
/ \  s3 X9 Y8 \. f9 X查看已安装 WireGuard 版本号
5 V7 M$ B  q2 h8 A: R! \0 J
( d( R# G" m" Z; c; I7 c, X$ [/opt/wireguard.sh -v4 {% V9 ?. o" L/ w2 c. {: z  H
编译升级 WireGuard 到当前最新版本3 i$ ?3 U- V* _' _6 v% f; v1 K

4 A1 Y8 y7 R' P; \6 R/opt/wireguard.sh -u# ^1 s6 k9 E& G1 S* K0 k0 y- ~  Z
新增 WireGuard 客户端配置
9 x) b( I' Q8 v) A( B/ C9 v1 t. V# {; O' |$ N
/opt/wireguard.sh -a$ N7 n$ g8 Z2 }) w5 `- {' m
删除 WireGuard 客户端配置" S! }; y  I9 Y* G
注意:默认客户端 wg0 不允许删除2 C9 J9 d$ k" U+ Y! }$ X" f
) p* {* l: |" q
/opt/wireguard.sh -d
1 O% r  P* C/ ?- z# ?  i  t+ j列出 WireGuard 客户端配置0 J0 y' `8 s) {
: ~. N  m" ]; M2 }: r
/opt/wireguard.sh -l0 U' F  {* r3 W8 U# @
高级用法
: s" `" k% U, f, u如果你在安装时,需要自定义自己想要的端口,那么可以 export 变量 VPN_SERVER_WG_PORT 的值,这样脚本就会读取这个变量值来定义监听端口,而不会自己随机生成。
+ O( {4 V% t0 c, [" d& n1 ^; S1 p* r7 P9 g比如你想自定义端口为 1234,那么具体做法就是,在执行从代码编译安装 WireGuard 或者从 repository 直接安装 WireGuard 之前,运行如下命令:
) [, Q, F- r, v" ~" K8 a# G' m3 t) d/ F- r1 q) S8 z1 X, K. e- Y1 c
export VPN_SERVER_WG_PORT=1234
3 h& F2 T! H; M0 S7 [( n下面是一份脚本里用到的变量列表名(共计 11 个),以及它们具体代表什么含义的说明。* \6 |" ^8 I$ `2 ?3 ^$ S1 Q
VPN_SERVER_PUB_IPV4,定义服务器公网 IPv4,如果你的服务器端存在多个可用公网 IPv4,指定此变量的值。* I$ L" V! B5 o$ w. d# j
VPN_SERVER_PUB_IPV6,定义服务器公网 IPv6,如果你的服务器端存在多个可用公网 IPv6,指定此变量的值。
( c; Z( C+ ]( D0 X" R3 SVPN_SERVER_PUB_NIC,定义服务器默认网卡名称,如果你的服务器有多个可用网卡,指定此变量的值。
: ?: V# j5 o$ M1 I' {/ w3 B, bVPN_SERVER_WG_NIC,定义 WireGuard 网卡名,默认为 wg0,这里一般不推荐指定此变量的值。
* ]% t9 }0 c* L6 l2 AVPN_SERVER_WG_IPV4,定义 WireGuard 服务端的内网 IPv4,默认为 10.88.88.1,这里一般不推荐指定此变量的值。
2 [! Y$ p8 q! s& mVPN_SERVER_WG_IPV6,定义 WireGuard 服务端的内网 IPv6,默认为 fd88:88:88::1,这里一般不推荐指定此变量的值。
. P6 P) w1 {' U6 Z% }9 C+ K# \VPN_SERVER_WG_PORT,定义器 WireGuard 服务端的监听端口,默认为从 1024 到 20480 随机生成,如果你想自定义端口,指定此变量的值。
( I! n! L7 g1 WVPN_CLIENT_WG_IPV4,定义 WireGuard 默认客户端的内网 IPv4,默认为 10.88.88.2,这里一般不推荐指定此变量的值。
& h: {- r( ]9 F8 c, CVPN_CLIENT_WG_IPV6,定义 WireGuard 默认客户端的内网 IPv6,默认为 fd88:88:88::2,这里一般不推荐指定此变量的值。
9 {% D, N3 x% hVPN_CLIENT_DNS_1,定义 WireGuard 默认客户端的 DNS,默认为 1.1.1.1,如果你想自定义为别的 DNS,指定此变量的值。
5 o! B4 O5 f" E# t1 a1 o; oVPN_CLIENT_DNS_2,定义 WireGuard 默认客户端的 DNS,默认为 8.8.8.8,如果你想自定义为别的 DNS,指定此变量的值。& w, f5 [/ g6 E$ D8 W9 Q% \

3 ~: m# `  o' D4 }8 C3 MWindows 客户端配置
0 U# O: @9 G( r* Y- ~6 a$ q& N下载,安装,打开客户端软件,点击 Add Tunnel -> Add empty tunnel…
  G2 u9 P8 H1 O- r6 qWireGuard 一键安装脚本
' Y" K% o# U# U) `+ E$ G, y
4 ?. L3 W4 v7 j4 e) Q此时出现一个可以编辑的界面,将脚本生成的客户端配置 /etc/wireguard/wg0_client 里的内容复制出来,粘贴,保存。8 O1 l: J  O* q. z+ m: ^
WireGuard 一键安装脚本
* y( w: Y3 F1 ?
  l" l  K% I" {1 J0 [5 L* BWireGuard 一键安装脚本
; q% q. T/ F! a# ]/ X
& U0 g4 Q/ e! ]( d8 d6 q' A8 Y( O6 l0 e点击 Activate,就可以 VPN 连接了。
. S( T& c6 F5 W+ x9 |! B2 JWireGuard 一键安装脚本
7 G/ r  p3 y- [) e( u3 m, i
' v# ?4 ~4 [# u/ o* o参考链接
3 Y2 u- C9 ]& m1 @) y* ~https://www.wireguard.com
* c. D+ {. Y. u2 whttps://github.com/WireGuard/WireGuard% ]3 u6 Q1 F9 I( g1 h
https://git.zx2c4.com/WireGuard
2 z/ I# M7 n) q6 O3 F+ j: ^https://golb.hplar.ch/2019/07/wireguard-windows.html
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-27 07:18 , Processed in 0.162081 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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