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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1873|回复: 0

wireguard

[复制链接]
发表于 2013-5-15 22:37:16 | 显示全部楼层 |阅读模式
本脚本适用环境
. e7 {/ Y4 ~, {: V* Z: D/ N2 [: `/ ]8 G系统支持:CentOS 7+,Debian 8+,Raspbian 10,Ubuntu 16+,Fedora 29+
; K1 Z$ R/ f" q7 n, ], T内存要求:≥256M) ^' J8 ~9 P  F
日期  :2020 年 4 月 2 日2 ?1 }, q9 J0 J) ]; D. n' s

+ t0 [1 a% k% I+ j% {+ ]/ E关于本脚本
- m5 D& C- S3 W" N# X, A1. 支持两种安装方式:从代码编译安装,从 repository 直接安装;6 L0 \( G- y2 T' ?; |, D
2. 脚本会创建默认的 wg0 设备,以及 wg0 的客户端配置,并生成客户端配置对应的二维码 png 图片;7 `7 F$ n1 Q) l) ~7 j
3. 脚本会修改本机防火墙设置,如果未启用防火墙,则会出现警告提示,需要手动去设置;
$ I: J- F- d) |: ]5 C2 h* ~4. 脚本会从 1024 到 20480 随机生成监听端口;0 u# m: F* z% f  E. e" E2 H5 I
5. 脚本支持新增,删除,列出客户端功能;
6 O) U8 m; Q/ P* m4 _+ U6. 脚本支持查看已安装的 WireGuard 的版本号;
8 N" z+ A0 S& ~: ~7. 脚本支持从代码编译安装的方式升级 WireGuard 到当前最新版本;
  Z* l2 ^+ s$ i  |2 l+ n0 f4 t. t, r9 t# e$ v- H
客户端下载! i/ t$ h( q  P" w, o4 R* l" I
Windows, macOS, Android, iOS 客户端
7 x3 z. O  b0 z% f% h6 J- h6 Nhttps://www.wireguard.com/install/
6 W# a2 R% F1 c( q! ?" o
4 Z6 U; f$ Q' D" k2 ~6 n: q+ X脚本使用方法
  v# X2 G1 a# T+ ]% l3 c使用 root 用户登录系统,运行以下命令下载脚本,赋予执行权限:
( c8 ?7 l3 y" e8 T6 w! K+ t+ [7 K' c7 j  N! y. z9 [* _3 D
wget --no-check-certificate -O /opt/wireguard.sh https://raw.githubusercontent.co ... master/wireguard.sh
& F4 }" }. ]8 b, X. Z& fchmod 755 /opt/wireguard.sh
) ]1 F' k7 C- N& Z写在前面& r  @6 F$ i  ^( k' L
WireGuard 的安装和使用条件是比较苛刻的。因此我不建议在生产系统里安装和使用 WireGuard,除非你知道自己在做什么。
- x5 V& `6 W% Y# D+ S( ]# M8 w它依赖于内核,也就是 kernel,在不同的系统中,内核,内核源码包,内核头文件必须存在且这三者版本要一致。
+ T) X6 E2 j* KRedHat,CentOS,Fedora,Oracle Linux,Amazon Linux 等 rpm 系的名字是 kernel,kernel-devel,kernel-headers。0 ]+ f( i1 Z/ ^( m' [& ~
Debian,Ubuntu 等 deb 系的名字是 kernel,linux-headers。
/ e4 T1 y7 M6 d& F如果这三者任一条件不满足的话,则不管是从代码编译安装还是从 repository 直接安装,也只是安装了 wireguard-tools 而已。8 C7 x" w  @: {5 s0 J4 @2 z$ E8 c
而 WireGuard 真正工作的部分,是 wireguard-dkms,也就是动态内核模块支持(DKMS),是它将 WireGuard 编译到系统内核中。
0 x5 P8 E$ U: B. Y! [8 R因此,在某些 VPS 商家,是需要你先自主更换系统内核,并事先将这三者安装好,才有可能不会出现编译或安装失败。
. C6 G# e: `, `" f* @4 z  l& m% F* t9 ~; g) ^
我在测试的时候,就经历过各种内核的问题导致的安装失败。如果你也遇到了同样的问题,建议先更换内核。
# `8 q8 F2 C& U% a  o就我个人的体验而言,在 CentOS 7 下更换为 elrepo 的内核是最容易的。这里有个脚本,可以更换到最新版内核,且自动开启 BBR 网络传输算法。$ ^/ _! j. Q* B* g" i* ?4 v' ^
一键安装最新内核并开启 BBR 脚本
( B/ @6 H+ A- |( k  R此脚本运行后,最后会提示你重启系统,此时可以输入 n,暂不重启。手动安装 kernel-headers,运行如下命令:
7 h( U' T1 z) M4 V  }( H" F. X4 ^; [8 Z0 ]$ Q$ Y
yum -y install kernel-ml-headers
, O& L* ]* G6 R5 X4 t; \然后再重启之。运行如下命令:/ A2 r# L* I: u0 b* Q) t) q# W
4 }7 \3 g. C' ]+ L# T0 m4 M. _
reboot& p3 l) ^- M( [$ Y, i2 J: Q
重启后进入系统,运行下面的从代码编译安装 WireGuard,基本上就不会出现安装失败的问题了。
& I6 n. n+ V2 K$ y. `+ e5 K' B注意:自主更换内核后,我建议使用从代码编译安装 WireGuard。
4 C) I& Z3 A, Y, ~" a- e: T# A" @/ Z4 @
更新日志
. i7 r6 O9 n/ P2020 年 4 月 2 日:+ H3 x0 l: W7 Y8 Q! ~: X
Linux 内核 5.6 正式发布了,内置了 wireguard module。+ y; x- W7 m3 Q3 c5 O+ H
本次更新添加了检测系统内核版本,如果大于等于 5.6 则不安装 wireguard module,仅安装 wireguard tools,然后再生成默认配置。* G! Z& V6 g& _) C1 I1 A: K8 q
当系统内核小于 5.6 时,则依然安装 wireguard module 和 tools,并生成默认配置。
/ Y) ~) z. _4 U2 h2 R$ a+ Z; o9 X! P: E3 T1 k' [# }: N( f! ~
2020 年 1 月 6 日:
" Z, C" r; Y8 |. B3 d0 Z一个好消息是 WireGuard 即将要合并到内核 5.6 里面了。' u& ~$ }. P# f% i9 Z
于是作者在近期把 repo 改名了,从而导致脚本无法获取到正确的版本号。, q- G: p& g% x$ v: n1 E
并且还把原来的 repo 一分为二了,分别改为 wireguard-linux-compat 和 wireguard-tools。前者是内核模块,后者是命令行工具。
$ ?- I( X; C5 `% [6 c/ U4 G+ m  ]# ]  R- b此次更新就是修复了以上问题。
$ |! c( Z! l8 S/ x7 Z$ B9 M) a1 n+ Z: ~% ~' i
2019 年 11 月 16 日:, b: }# Q" `! O5 }
1、修正客户端配置文件创建时的各参数顺序,与 Windows 客户端的显示顺序一致。7 v% U( I0 y$ G0 E: L4 ?" g# t' c  S
2、新增 Windows 客户端配置示例说明。
7 b) d6 G5 t. A7 m
8 o9 W3 _9 o/ z6 H2019 年 10 月 27 日:: _- T, ?; i4 @5 B! P
1、新增卸载函数,使用方法请参考下面的卸载方法。
+ V7 a/ n6 B' s  m* U2、支持在 CentOS8 下从 repository 安装,或者从代码编译安装。9 m- {/ n! e# Y. U# }& K
" U- Y0 [  o0 C  w- O  B/ x) \& r
从代码编译安装 WireGuard6 x5 a2 X, V/ S7 Q: Z
/opt/wireguard.sh -s4 n! ]& D" v, o, ^2 \
从 repository 直接安装 WireGuard! F* i4 [" a) g+ g4 r( @! W5 d
/opt/wireguard.sh -r
2 v7 {; z$ F; Z2 K: S% g安装完成后,脚本提示如下' F& @! k; T) N0 u
WireGuard VPN Server installation completed0 `" [4 u* u  \5 ~) h
WireGuard VPN default client file is below:, Z2 |3 o) c, K8 @8 g
/etc/wireguard/wg0_client
$ V2 Z  x+ Q8 ^9 r5 {" \- W. \! I8 `, xWireGuard VPN default client QR Code is below:
# k! j. t# e, m, ?; b$ h/etc/wireguard/wg0_client.png
5 L% n3 T7 N, b& @Download and scan this QR Code with your phone
& [- X0 U+ _: \5 x& ]( \+ }) lWelcome to visit: https://teddysun.com/554.html1 g4 x4 z, H- e! A; b* M
Enjoy it
! Y& u1 W+ @8 o7 v& j' j卸载方法
6 W0 ]3 B& f& J5 @: I9 v/opt/wireguard.sh -n+ f( u0 F. h9 v# E, {6 M
其他使用选项% O; Q6 f% L% U: k: [
查看已安装 WireGuard 版本号4 p1 [2 ~( `. w# m2 i2 ]

; _- O: N% ?2 S. `; z/opt/wireguard.sh -v9 _, E; p# \1 X: t! f' B- ]) z
编译升级 WireGuard 到当前最新版本
1 \3 H/ B% p6 V& k& |) O3 y. ?  D7 m4 k+ Y% E
/opt/wireguard.sh -u
% ?/ Z0 y% T8 T4 d6 c% H新增 WireGuard 客户端配置8 [- M, e+ I8 T! i2 c2 h7 G0 ~
) ^6 k0 H& |. L9 J/ T
/opt/wireguard.sh -a; j/ w+ o/ B; G3 M
删除 WireGuard 客户端配置6 F, T% o# a# W2 j# b! x! `
注意:默认客户端 wg0 不允许删除) D3 o1 U4 x  E
! S" X6 g6 X2 B5 R! Q8 f
/opt/wireguard.sh -d
4 C( H) L& [/ X0 G+ {列出 WireGuard 客户端配置8 G6 I( |& I2 ]1 D" Z& s. O
% d; _# P2 A& Y  u+ A7 R/ ~$ k
/opt/wireguard.sh -l& t% H5 z  j* H$ i+ U- y' U0 h
高级用法" Z2 |% `1 a0 H( m- @& {
如果你在安装时,需要自定义自己想要的端口,那么可以 export 变量 VPN_SERVER_WG_PORT 的值,这样脚本就会读取这个变量值来定义监听端口,而不会自己随机生成。) b+ W, G0 V* n$ R
比如你想自定义端口为 1234,那么具体做法就是,在执行从代码编译安装 WireGuard 或者从 repository 直接安装 WireGuard 之前,运行如下命令:7 `( C4 n5 ?" k9 S  F/ L4 I+ d! ~

& c, b+ L6 O6 J. y* @export VPN_SERVER_WG_PORT=1234
6 R/ B5 p7 O: ?1 ~0 `4 Z" u0 U& k下面是一份脚本里用到的变量列表名(共计 11 个),以及它们具体代表什么含义的说明。
' ?# K, A! F/ i; O. TVPN_SERVER_PUB_IPV4,定义服务器公网 IPv4,如果你的服务器端存在多个可用公网 IPv4,指定此变量的值。
6 P% \$ e2 n/ o' \1 b: E6 n7 }  cVPN_SERVER_PUB_IPV6,定义服务器公网 IPv6,如果你的服务器端存在多个可用公网 IPv6,指定此变量的值。
1 J) ^8 S, x7 iVPN_SERVER_PUB_NIC,定义服务器默认网卡名称,如果你的服务器有多个可用网卡,指定此变量的值。' j) U  ?% y7 L
VPN_SERVER_WG_NIC,定义 WireGuard 网卡名,默认为 wg0,这里一般不推荐指定此变量的值。9 h# s5 n" r! e% m
VPN_SERVER_WG_IPV4,定义 WireGuard 服务端的内网 IPv4,默认为 10.88.88.1,这里一般不推荐指定此变量的值。
9 H- o2 k1 D4 YVPN_SERVER_WG_IPV6,定义 WireGuard 服务端的内网 IPv6,默认为 fd88:88:88::1,这里一般不推荐指定此变量的值。2 o7 r; c# ~  ]
VPN_SERVER_WG_PORT,定义器 WireGuard 服务端的监听端口,默认为从 1024 到 20480 随机生成,如果你想自定义端口,指定此变量的值。
; H3 T4 L& D9 C4 T5 LVPN_CLIENT_WG_IPV4,定义 WireGuard 默认客户端的内网 IPv4,默认为 10.88.88.2,这里一般不推荐指定此变量的值。
7 f' [9 T# K+ ]. c5 u) CVPN_CLIENT_WG_IPV6,定义 WireGuard 默认客户端的内网 IPv6,默认为 fd88:88:88::2,这里一般不推荐指定此变量的值。2 p" r% S9 Y, p  S- ~" A& y2 X: q# I
VPN_CLIENT_DNS_1,定义 WireGuard 默认客户端的 DNS,默认为 1.1.1.1,如果你想自定义为别的 DNS,指定此变量的值。
9 N8 _  h$ `9 X" U3 GVPN_CLIENT_DNS_2,定义 WireGuard 默认客户端的 DNS,默认为 8.8.8.8,如果你想自定义为别的 DNS,指定此变量的值。2 H+ g; |. E$ V6 }

4 W5 c3 b% r! P+ `* j1 `Windows 客户端配置6 C2 ~4 h# A3 l8 `' F
下载,安装,打开客户端软件,点击 Add Tunnel -> Add empty tunnel…% {4 h8 x3 h7 ]
WireGuard 一键安装脚本
/ [* V/ S$ E+ ?* s8 m$ P5 R; ^& @; C4 w0 w, D, C7 r2 H
此时出现一个可以编辑的界面,将脚本生成的客户端配置 /etc/wireguard/wg0_client 里的内容复制出来,粘贴,保存。* w! p$ t- H$ Y4 @  T, A" v
WireGuard 一键安装脚本3 V3 N5 d  d0 r% l
, H% u2 n% T4 ~% O) h1 v1 _
WireGuard 一键安装脚本. R) T5 [6 ^  n9 K1 _; }+ _; u; ?( [
2 a, y+ B! f9 w
点击 Activate,就可以 VPN 连接了。6 c2 M0 u! u/ Z; b* j" l
WireGuard 一键安装脚本( }7 c& x% ^$ I8 P
9 c, l* ?3 Z- a. `- c5 x+ ?
参考链接; t# d: Q% @0 k" B7 i7 Z
https://www.wireguard.com% t! S6 s; g" C) A. o2 [* k
https://github.com/WireGuard/WireGuard
& j6 U7 b& l* _. D7 shttps://git.zx2c4.com/WireGuard
# x' g* \4 [, W/ H1 chttps://golb.hplar.ch/2019/07/wireguard-windows.html
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-19 19:23 , Processed in 0.177991 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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