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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2420|回复: 0

wireguard

[复制链接]
发表于 2013-5-15 22:37:16 | 显示全部楼层 |阅读模式
本脚本适用环境3 T) G( Q4 u% X" I: _" V2 ~1 B
系统支持:CentOS 7+,Debian 8+,Raspbian 10,Ubuntu 16+,Fedora 29+
4 O7 \7 n6 [9 ~& ]1 _, k内存要求:≥256M( {& Q9 g  p& C. W. T
日期  :2020 年 4 月 2 日1 Y  P6 }9 F4 g) r# U* g! }* @
: ^. R$ E1 L" F
关于本脚本2 ~* k: S, @  U& z0 [0 @
1. 支持两种安装方式:从代码编译安装,从 repository 直接安装;( ]3 p" M: ?: \7 N& b. V
2. 脚本会创建默认的 wg0 设备,以及 wg0 的客户端配置,并生成客户端配置对应的二维码 png 图片;
7 E1 n; ^- ?/ G1 Z( I3. 脚本会修改本机防火墙设置,如果未启用防火墙,则会出现警告提示,需要手动去设置;6 D" M" C8 a$ S
4. 脚本会从 1024 到 20480 随机生成监听端口;
2 p5 v, \+ X$ y. S4 s" p5. 脚本支持新增,删除,列出客户端功能;
+ H$ }0 f+ h* F% y* a) U6. 脚本支持查看已安装的 WireGuard 的版本号;
8 L% ^' _. F% o8 d& x9 P7. 脚本支持从代码编译安装的方式升级 WireGuard 到当前最新版本;
8 W; {- X/ V* v; _' ]
/ ~4 A  c- b" P, k9 i9 C/ P  u客户端下载! N7 G6 ]! u/ U. c1 I: c
Windows, macOS, Android, iOS 客户端
, q7 G8 D# d; J1 e" h* Mhttps://www.wireguard.com/install/
$ G. W  c( z: _% F! [5 v. ?" U" W8 l! U
脚本使用方法+ B0 V  b9 T* Z3 Y  i
使用 root 用户登录系统,运行以下命令下载脚本,赋予执行权限:4 H4 a% {" |" y  ?# y) {  y3 |: a5 ^

4 [* i! q" F$ e! `9 Lwget --no-check-certificate -O /opt/wireguard.sh https://raw.githubusercontent.co ... master/wireguard.sh
2 C9 x2 F6 L6 [1 ~$ {& R- jchmod 755 /opt/wireguard.sh
- m/ L/ I6 A/ k* J% }2 P+ c写在前面
) N1 f' K- ~, b; K3 v- aWireGuard 的安装和使用条件是比较苛刻的。因此我不建议在生产系统里安装和使用 WireGuard,除非你知道自己在做什么。, m2 l8 X! M1 m/ Z" r
它依赖于内核,也就是 kernel,在不同的系统中,内核,内核源码包,内核头文件必须存在且这三者版本要一致。
0 {; @2 ]) \- y/ Y, E. {- k( f8 n/ C" iRedHat,CentOS,Fedora,Oracle Linux,Amazon Linux 等 rpm 系的名字是 kernel,kernel-devel,kernel-headers。: j& \& e8 |9 ]! ~
Debian,Ubuntu 等 deb 系的名字是 kernel,linux-headers。& K1 ]! V. |0 t1 n
如果这三者任一条件不满足的话,则不管是从代码编译安装还是从 repository 直接安装,也只是安装了 wireguard-tools 而已。2 u; r2 t" b) b0 C+ K6 Q2 n
而 WireGuard 真正工作的部分,是 wireguard-dkms,也就是动态内核模块支持(DKMS),是它将 WireGuard 编译到系统内核中。4 O2 r8 J$ ?: i4 _
因此,在某些 VPS 商家,是需要你先自主更换系统内核,并事先将这三者安装好,才有可能不会出现编译或安装失败。
& S1 n0 Z+ }" ?1 B) J
2 t4 T& e  C" D/ y' F我在测试的时候,就经历过各种内核的问题导致的安装失败。如果你也遇到了同样的问题,建议先更换内核。
& Y+ q% M) U- E/ u% @- C: y! _: W就我个人的体验而言,在 CentOS 7 下更换为 elrepo 的内核是最容易的。这里有个脚本,可以更换到最新版内核,且自动开启 BBR 网络传输算法。9 K) `4 r/ w; f1 O& t, o: ]) y
一键安装最新内核并开启 BBR 脚本* x  r8 j, A" W* D- S. w2 r* |
此脚本运行后,最后会提示你重启系统,此时可以输入 n,暂不重启。手动安装 kernel-headers,运行如下命令:8 P; K' k( F9 v' E5 W1 P- {4 t4 q

- C3 c5 G0 a% F0 A& A* u- m3 Zyum -y install kernel-ml-headers
, R' w  q, V7 ~- P  ]8 O* w然后再重启之。运行如下命令:, p3 @* e6 {  J# l& U) P* \) X

; N5 S$ E4 `: w2 A# b/ n  oreboot
2 k  @( f+ A7 f! F重启后进入系统,运行下面的从代码编译安装 WireGuard,基本上就不会出现安装失败的问题了。
* E* p' S& `6 J) c; T0 @/ Y注意:自主更换内核后,我建议使用从代码编译安装 WireGuard。
3 i8 ]. C9 w8 E( u2 \
3 R$ [; S! [; J$ f( O$ y- _# M更新日志
# g; |* m2 u, \2020 年 4 月 2 日:
7 o3 ~$ i6 X3 k( y7 M/ f# lLinux 内核 5.6 正式发布了,内置了 wireguard module。1 u2 N( ^( y8 K8 V9 }
本次更新添加了检测系统内核版本,如果大于等于 5.6 则不安装 wireguard module,仅安装 wireguard tools,然后再生成默认配置。. R4 p1 H( X/ d5 R/ G' n; T5 H
当系统内核小于 5.6 时,则依然安装 wireguard module 和 tools,并生成默认配置。
$ }# u- s. g1 P6 i
! U+ n" p0 j& a, R" I2 [# b4 V2020 年 1 月 6 日:
8 ]) J$ W' K+ }一个好消息是 WireGuard 即将要合并到内核 5.6 里面了。
6 B3 N  A# P- V+ r- T1 Y于是作者在近期把 repo 改名了,从而导致脚本无法获取到正确的版本号。' ?" Q9 \' N  L0 @
并且还把原来的 repo 一分为二了,分别改为 wireguard-linux-compat 和 wireguard-tools。前者是内核模块,后者是命令行工具。
" K. C! R6 [- O5 e" @: @此次更新就是修复了以上问题。
, r3 `7 l3 B7 U. C2 G8 U7 |1 _) w& ~( ^7 ?. o& z% q6 G4 n8 `/ \
2019 年 11 月 16 日:
5 Z/ i7 i, ?, v3 k& n4 `9 U' ]* Z1、修正客户端配置文件创建时的各参数顺序,与 Windows 客户端的显示顺序一致。
- F2 P: ?+ \' e$ x8 ~4 q2、新增 Windows 客户端配置示例说明。7 B6 A/ A9 ~" T8 |4 M% H8 k
) ]1 J1 P2 d9 p
2019 年 10 月 27 日:
+ S8 r! L5 h3 n: ~' a  g1、新增卸载函数,使用方法请参考下面的卸载方法。
- t! Z: z5 q& r5 B6 A' a  g: x5 }  V' [5 L2、支持在 CentOS8 下从 repository 安装,或者从代码编译安装。
+ m' }7 Z; r3 s. z9 C/ D, J4 n6 }
; h* i4 E- B3 t从代码编译安装 WireGuard
1 p( s6 N8 O! h- Y! M/opt/wireguard.sh -s. T" q/ ^1 X' X6 j
从 repository 直接安装 WireGuard
+ |/ r; P) M/ O, x/opt/wireguard.sh -r8 W0 k3 \' E7 r* U* j
安装完成后,脚本提示如下
6 f) @" s: W6 \  XWireGuard VPN Server installation completed
, D' \0 P7 u: ]0 W+ RWireGuard VPN default client file is below:
6 \  M/ [1 C7 q! Y3 D; N$ o6 a4 J# {/etc/wireguard/wg0_client6 X% Z4 ?, S. K( n
WireGuard VPN default client QR Code is below:8 Y" P* D/ L- o' Z9 r: q4 K
/etc/wireguard/wg0_client.png. U+ Q  i, D. \/ Y
Download and scan this QR Code with your phone  b. M, n: I1 Z* G+ s$ k+ d6 m+ G
Welcome to visit: https://teddysun.com/554.html
( ?# {7 N6 \3 K. F2 oEnjoy it
* {: B: L  g4 t, @4 k% I卸载方法, y+ H" K# p/ H5 j' V
/opt/wireguard.sh -n8 I# ?4 J. ]! v
其他使用选项7 N2 w1 |1 B5 ^7 C
查看已安装 WireGuard 版本号
5 e# @" |/ C, \/ q% |$ R* o- g; r7 l$ [; _9 a
/opt/wireguard.sh -v
- J, ^3 c1 H$ M; b0 y* _* p编译升级 WireGuard 到当前最新版本6 J. P# j, k( i5 b

/ |: Z2 W$ K8 }& ?8 \/opt/wireguard.sh -u1 _/ E/ V0 C6 U$ S/ ?$ j- N' e, \
新增 WireGuard 客户端配置( f+ F; `) H; ~+ F4 W
% z, m8 j& {$ i: A& b
/opt/wireguard.sh -a
4 e; w0 T! B" c6 b  M" [* Y+ l删除 WireGuard 客户端配置
: c  f0 V: |5 v7 W5 M" j注意:默认客户端 wg0 不允许删除
% d* |9 p" O7 N! n! t" }
' ?  y, a; A9 \4 F- H+ z- I/opt/wireguard.sh -d
3 Q, Q, b" f4 U' _; s+ W+ `8 `) n列出 WireGuard 客户端配置; l" B7 p0 s4 Q, n1 }
2 S/ e5 N2 z2 p+ a% x, M
/opt/wireguard.sh -l
' W) H0 c+ Q- d3 L高级用法3 ~" d8 m- G) q; w
如果你在安装时,需要自定义自己想要的端口,那么可以 export 变量 VPN_SERVER_WG_PORT 的值,这样脚本就会读取这个变量值来定义监听端口,而不会自己随机生成。
& r! v6 u$ @, D3 P/ m8 h2 {5 z比如你想自定义端口为 1234,那么具体做法就是,在执行从代码编译安装 WireGuard 或者从 repository 直接安装 WireGuard 之前,运行如下命令:
" z5 V/ Q) r. f! x* Y. T* Q# r2 _. N2 a; K
export VPN_SERVER_WG_PORT=1234: s+ g% w8 T. r& Q7 m
下面是一份脚本里用到的变量列表名(共计 11 个),以及它们具体代表什么含义的说明。. M: g' d0 s  g7 D* N1 N' [, Z& e
VPN_SERVER_PUB_IPV4,定义服务器公网 IPv4,如果你的服务器端存在多个可用公网 IPv4,指定此变量的值。" G, P! S( L% X9 z0 W
VPN_SERVER_PUB_IPV6,定义服务器公网 IPv6,如果你的服务器端存在多个可用公网 IPv6,指定此变量的值。
# E* b. y6 [6 Q! d& D1 S4 s" CVPN_SERVER_PUB_NIC,定义服务器默认网卡名称,如果你的服务器有多个可用网卡,指定此变量的值。2 B& \& H4 `$ p
VPN_SERVER_WG_NIC,定义 WireGuard 网卡名,默认为 wg0,这里一般不推荐指定此变量的值。9 p7 |2 Q% ~- I
VPN_SERVER_WG_IPV4,定义 WireGuard 服务端的内网 IPv4,默认为 10.88.88.1,这里一般不推荐指定此变量的值。
, ~, ^4 u7 G  t# E$ t1 }: T! E+ e/ |VPN_SERVER_WG_IPV6,定义 WireGuard 服务端的内网 IPv6,默认为 fd88:88:88::1,这里一般不推荐指定此变量的值。7 C7 w, M3 E9 d7 I& @# w% C0 ?# ]7 m
VPN_SERVER_WG_PORT,定义器 WireGuard 服务端的监听端口,默认为从 1024 到 20480 随机生成,如果你想自定义端口,指定此变量的值。
- {3 d- s( \: Z& ?VPN_CLIENT_WG_IPV4,定义 WireGuard 默认客户端的内网 IPv4,默认为 10.88.88.2,这里一般不推荐指定此变量的值。
' R' s9 x; h3 o0 w' b1 v+ OVPN_CLIENT_WG_IPV6,定义 WireGuard 默认客户端的内网 IPv6,默认为 fd88:88:88::2,这里一般不推荐指定此变量的值。
  M  Z/ Y5 ~9 p  D# j3 r1 g  @8 UVPN_CLIENT_DNS_1,定义 WireGuard 默认客户端的 DNS,默认为 1.1.1.1,如果你想自定义为别的 DNS,指定此变量的值。
" T# F- U0 E; x8 X4 P2 UVPN_CLIENT_DNS_2,定义 WireGuard 默认客户端的 DNS,默认为 8.8.8.8,如果你想自定义为别的 DNS,指定此变量的值。
4 m# \9 \8 [; n
5 E9 P9 I" o# _' S% DWindows 客户端配置1 r  Z4 _/ w- d2 ^+ }$ k! N
下载,安装,打开客户端软件,点击 Add Tunnel -> Add empty tunnel…
: ~0 Z1 J8 Z/ f0 e& hWireGuard 一键安装脚本) o# ?: C/ P/ y6 ]3 L6 X9 j  y
1 g6 j, |1 d  ]3 a2 Z9 f' v
此时出现一个可以编辑的界面,将脚本生成的客户端配置 /etc/wireguard/wg0_client 里的内容复制出来,粘贴,保存。
5 q1 E# x7 K1 S; K* kWireGuard 一键安装脚本
' ^/ i. W% }0 ~
8 [" E( P4 P: {; r( H" c! JWireGuard 一键安装脚本
8 w9 h- o8 C1 U6 D/ I$ g9 [# `7 q* }; ~( a
点击 Activate,就可以 VPN 连接了。
5 j# q' q( D& v: z6 _) u2 cWireGuard 一键安装脚本
( R+ s/ H- Y, r6 K% B2 k2 @
# S7 ?+ U$ J# ?; V5 Z0 `参考链接
& V0 Y9 v$ b1 r4 `  V+ C$ Dhttps://www.wireguard.com5 x. w/ b( X* m) \( _. C
https://github.com/WireGuard/WireGuard+ e2 ]8 r1 W- ~" t8 U% m6 b
https://git.zx2c4.com/WireGuard4 z/ f8 C' x5 O3 r# L, f6 ?
https://golb.hplar.ch/2019/07/wireguard-windows.html
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-27 00:29 , Processed in 0.158089 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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