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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2491|回复: 0

wireguard

[复制链接]
发表于 2013-5-15 22:37:16 | 显示全部楼层 |阅读模式
本脚本适用环境
6 [" f# {; {6 Q! v2 `( b系统支持:CentOS 7+,Debian 8+,Raspbian 10,Ubuntu 16+,Fedora 29+
3 `  }1 d7 @# N内存要求:≥256M
$ X3 d6 [1 c( Q9 i: z+ a! V7 {日期  :2020 年 4 月 2 日
7 H2 C5 U- u* G: E9 v6 h
0 B; `5 o( X3 l- e0 W4 Y! h$ B关于本脚本& s- j0 e; z' Z1 r- c; p7 O7 r  I* K
1. 支持两种安装方式:从代码编译安装,从 repository 直接安装;
/ P0 ^+ }, Z- }6 M4 r5 k2 y# P6 U- @2. 脚本会创建默认的 wg0 设备,以及 wg0 的客户端配置,并生成客户端配置对应的二维码 png 图片;
0 p. h' w7 I. @* I4 i' P9 S3. 脚本会修改本机防火墙设置,如果未启用防火墙,则会出现警告提示,需要手动去设置;
: u2 U, h. w! W5 x! ]& l& Y/ S" G4. 脚本会从 1024 到 20480 随机生成监听端口;
* }- E4 f  N# Z& J5 R5. 脚本支持新增,删除,列出客户端功能;
: H* f, h; r  _" Z- S9 P1 T8 L* c. s6. 脚本支持查看已安装的 WireGuard 的版本号;5 }9 @/ a0 H3 }- m- x, S: U7 A
7. 脚本支持从代码编译安装的方式升级 WireGuard 到当前最新版本;
) E! a. S: Z9 w: b# {
) d/ Z1 W0 v1 d5 F/ a客户端下载
: ?" W; g3 e1 d4 y: ^  kWindows, macOS, Android, iOS 客户端
- x/ u# V  l% a  bhttps://www.wireguard.com/install/
9 o( F1 K5 m1 W- ~
/ W3 l9 {2 w8 M$ q9 `4 R脚本使用方法
& m" {% p# O6 M使用 root 用户登录系统,运行以下命令下载脚本,赋予执行权限:
' p+ ?& `% }  N! ]: D) T
, k0 Z+ Z$ D6 A1 k+ y. wwget --no-check-certificate -O /opt/wireguard.sh https://raw.githubusercontent.co ... master/wireguard.sh+ ]1 |, g" l  l6 [& c
chmod 755 /opt/wireguard.sh
. X' i! `" ^# y7 Q5 Z+ a" ~% F9 N写在前面
" |; B& [/ T6 h2 J: P/ PWireGuard 的安装和使用条件是比较苛刻的。因此我不建议在生产系统里安装和使用 WireGuard,除非你知道自己在做什么。  s5 S( ~+ [6 y: f. e2 G* y8 l9 z
它依赖于内核,也就是 kernel,在不同的系统中,内核,内核源码包,内核头文件必须存在且这三者版本要一致。# H- h% Q: T  T* A  ]. P$ B5 y
RedHat,CentOS,Fedora,Oracle Linux,Amazon Linux 等 rpm 系的名字是 kernel,kernel-devel,kernel-headers。
3 `  Q3 l6 r$ G/ M" q" g1 l4 W) v  \Debian,Ubuntu 等 deb 系的名字是 kernel,linux-headers。8 [; c- N. o5 j9 Y
如果这三者任一条件不满足的话,则不管是从代码编译安装还是从 repository 直接安装,也只是安装了 wireguard-tools 而已。
5 \7 x* q) a# L6 C6 v/ ?+ b/ ^而 WireGuard 真正工作的部分,是 wireguard-dkms,也就是动态内核模块支持(DKMS),是它将 WireGuard 编译到系统内核中。
, x# J' @" n+ _; _6 P, p因此,在某些 VPS 商家,是需要你先自主更换系统内核,并事先将这三者安装好,才有可能不会出现编译或安装失败。
4 i& G" R- H! p6 x* j: \3 q+ D
5 |  @: m2 F7 x. P3 S5 V  P7 K我在测试的时候,就经历过各种内核的问题导致的安装失败。如果你也遇到了同样的问题,建议先更换内核。( v  B1 K- Y% {4 R5 \0 l
就我个人的体验而言,在 CentOS 7 下更换为 elrepo 的内核是最容易的。这里有个脚本,可以更换到最新版内核,且自动开启 BBR 网络传输算法。
- \& }2 s3 H+ }  D) R6 t一键安装最新内核并开启 BBR 脚本
* D# u" Z  J2 Q* z% m# e此脚本运行后,最后会提示你重启系统,此时可以输入 n,暂不重启。手动安装 kernel-headers,运行如下命令:
3 Y/ I; a7 Q0 |
& n) I" Q. C' T0 V1 }yum -y install kernel-ml-headers5 O/ D$ U5 z# o
然后再重启之。运行如下命令:
5 y8 M+ F2 R, N+ V0 I
$ a4 m2 P4 L' u+ W% zreboot
# X" n2 W2 b+ @6 f* E- |重启后进入系统,运行下面的从代码编译安装 WireGuard,基本上就不会出现安装失败的问题了。& A0 T4 @: L( U$ v/ @
注意:自主更换内核后,我建议使用从代码编译安装 WireGuard。- l" y1 {4 M+ ]6 t4 j
0 o- t0 Y5 p0 i, V! `# e
更新日志# f0 x# n& `  [8 i
2020 年 4 月 2 日:
8 Z! G# F: U& j+ SLinux 内核 5.6 正式发布了,内置了 wireguard module。7 ~8 \5 ^6 H! C6 c' [* y! @1 f
本次更新添加了检测系统内核版本,如果大于等于 5.6 则不安装 wireguard module,仅安装 wireguard tools,然后再生成默认配置。) \3 N5 A5 I9 ?* `5 R. W
当系统内核小于 5.6 时,则依然安装 wireguard module 和 tools,并生成默认配置。8 E0 d9 E7 I' a0 f% N9 v4 a
- [4 D) t4 ]: R  i; l3 |
2020 年 1 月 6 日:
3 j) p; |( N- P/ G/ W" n6 D一个好消息是 WireGuard 即将要合并到内核 5.6 里面了。
: k* F8 p* r7 g1 d  }% }2 ?于是作者在近期把 repo 改名了,从而导致脚本无法获取到正确的版本号。
) Y* C  J  C. O( O, W$ F0 D并且还把原来的 repo 一分为二了,分别改为 wireguard-linux-compat 和 wireguard-tools。前者是内核模块,后者是命令行工具。
& {0 Q$ ~4 x+ t8 P7 o! Z# X" S. ^+ k此次更新就是修复了以上问题。
# W6 n0 l% N7 H$ N; [8 g- L! D! P( X' C2 m
2019 年 11 月 16 日:2 r" V# J, R7 I4 `
1、修正客户端配置文件创建时的各参数顺序,与 Windows 客户端的显示顺序一致。
, }8 U! T: F: {2、新增 Windows 客户端配置示例说明。* A' \* j8 ~( y5 ^1 T5 U
) W9 o3 T' o9 T7 i6 {
2019 年 10 月 27 日:; Q/ R: l' [# M! L
1、新增卸载函数,使用方法请参考下面的卸载方法。# \, D- E+ n" t
2、支持在 CentOS8 下从 repository 安装,或者从代码编译安装。3 T+ A% X9 K& {# R6 q

5 Z" s+ w& h- U7 G从代码编译安装 WireGuard. \1 X1 v$ U, K$ R/ D' D
/opt/wireguard.sh -s1 ?* c* F$ ?, V7 q: Q8 ?2 [, ~
从 repository 直接安装 WireGuard
' n6 }  I1 ^# g+ f, @) p1 N8 ]8 Q/opt/wireguard.sh -r
. @; Q: ~! [; Y- {4 I安装完成后,脚本提示如下
; X5 S! u  C6 c; Q/ {WireGuard VPN Server installation completed
! R2 w' b8 n3 B7 v8 e" vWireGuard VPN default client file is below:
/ [) @! Y/ P! o5 U8 @4 i/etc/wireguard/wg0_client# ^' o4 Z! Y  l3 F9 W1 U' f
WireGuard VPN default client QR Code is below:
) f( t6 I. H' ~% d/etc/wireguard/wg0_client.png
6 D0 _: v. h6 C7 {$ S- qDownload and scan this QR Code with your phone
0 a  J% I& Q. _# w/ G+ rWelcome to visit: https://teddysun.com/554.html
6 k2 m* Y8 K  m: M0 SEnjoy it0 J: s5 ?& D) A& X+ ~
卸载方法4 A# ?* E+ f& R. g9 s7 g- B
/opt/wireguard.sh -n
1 M; `6 J5 {  B* E6 e$ d4 Z其他使用选项
% `3 g, J  X6 r, N+ |. o# o查看已安装 WireGuard 版本号6 e  ?# l% ?8 J3 f8 ~  _$ |9 L& F
% r) _$ t# }( I8 L+ x6 i
/opt/wireguard.sh -v8 Z/ V! d; A  {( E
编译升级 WireGuard 到当前最新版本
- ?9 p/ |5 U; P) d0 P# y8 ?& }# q  ~! G; l, _
/opt/wireguard.sh -u
* o2 e& D8 H8 E6 c% A新增 WireGuard 客户端配置* z- ~1 e7 Y0 f  |

5 p% F' n& E4 c0 F) g9 g8 r/opt/wireguard.sh -a: ^' u: Z: v3 ]
删除 WireGuard 客户端配置
2 r# }+ O6 Y2 P0 O( j  j+ M注意:默认客户端 wg0 不允许删除
* g+ g9 C1 c7 [  r) V4 X* {6 F& U7 g5 c
/opt/wireguard.sh -d) d3 H7 V; b0 t- I7 k1 N
列出 WireGuard 客户端配置
# `' W, f0 c% A, S' P6 n
0 d; U1 N7 O0 C# A/opt/wireguard.sh -l" q* S+ \: N: T9 r
高级用法
+ q5 Z2 @; B) M1 j如果你在安装时,需要自定义自己想要的端口,那么可以 export 变量 VPN_SERVER_WG_PORT 的值,这样脚本就会读取这个变量值来定义监听端口,而不会自己随机生成。
2 W  f$ n# ~8 x! V$ A2 t比如你想自定义端口为 1234,那么具体做法就是,在执行从代码编译安装 WireGuard 或者从 repository 直接安装 WireGuard 之前,运行如下命令:
. l( x) G  I! _/ l+ {+ ]* }* k6 e( g
export VPN_SERVER_WG_PORT=1234/ |7 [3 }7 L) U- F$ _, _9 U3 w
下面是一份脚本里用到的变量列表名(共计 11 个),以及它们具体代表什么含义的说明。7 O; a6 v9 O- i% |
VPN_SERVER_PUB_IPV4,定义服务器公网 IPv4,如果你的服务器端存在多个可用公网 IPv4,指定此变量的值。
7 ?' r3 P# l% }) A0 G- UVPN_SERVER_PUB_IPV6,定义服务器公网 IPv6,如果你的服务器端存在多个可用公网 IPv6,指定此变量的值。
, Z7 w7 `$ o) b) N4 pVPN_SERVER_PUB_NIC,定义服务器默认网卡名称,如果你的服务器有多个可用网卡,指定此变量的值。4 Z- j$ T$ |3 n) R( ~
VPN_SERVER_WG_NIC,定义 WireGuard 网卡名,默认为 wg0,这里一般不推荐指定此变量的值。! o: K1 q8 U# r8 b$ w  q7 w
VPN_SERVER_WG_IPV4,定义 WireGuard 服务端的内网 IPv4,默认为 10.88.88.1,这里一般不推荐指定此变量的值。
. J- {+ _+ Q- N& V; D$ C5 `% eVPN_SERVER_WG_IPV6,定义 WireGuard 服务端的内网 IPv6,默认为 fd88:88:88::1,这里一般不推荐指定此变量的值。8 Y* C$ c" ^: x
VPN_SERVER_WG_PORT,定义器 WireGuard 服务端的监听端口,默认为从 1024 到 20480 随机生成,如果你想自定义端口,指定此变量的值。
& y4 ]% A1 w" L4 nVPN_CLIENT_WG_IPV4,定义 WireGuard 默认客户端的内网 IPv4,默认为 10.88.88.2,这里一般不推荐指定此变量的值。
, \7 c+ W; L+ MVPN_CLIENT_WG_IPV6,定义 WireGuard 默认客户端的内网 IPv6,默认为 fd88:88:88::2,这里一般不推荐指定此变量的值。
; V/ }/ r! z( a6 d* r$ yVPN_CLIENT_DNS_1,定义 WireGuard 默认客户端的 DNS,默认为 1.1.1.1,如果你想自定义为别的 DNS,指定此变量的值。
" X; E: d0 }! W# f/ v8 Q7 L7 pVPN_CLIENT_DNS_2,定义 WireGuard 默认客户端的 DNS,默认为 8.8.8.8,如果你想自定义为别的 DNS,指定此变量的值。
4 d4 d# d% O" z( m1 q) N1 B% m
Windows 客户端配置
: j6 ~+ O) [5 c" N- w8 q下载,安装,打开客户端软件,点击 Add Tunnel -> Add empty tunnel…
: R8 v8 S) I1 t- t' AWireGuard 一键安装脚本
1 F0 f) N7 B3 }
) k4 k- S& `0 @0 i0 \此时出现一个可以编辑的界面,将脚本生成的客户端配置 /etc/wireguard/wg0_client 里的内容复制出来,粘贴,保存。7 e* i' x3 o" X3 ^
WireGuard 一键安装脚本
* ^; Y( K; f/ F. T- \+ V. A
2 B5 Q+ u+ S& H* i# W+ e  s% ?WireGuard 一键安装脚本
" M% g. Z- G6 ?' b* L8 L: I, W% C/ |6 Z
点击 Activate,就可以 VPN 连接了。
6 y/ M4 X! B+ R% Y5 p4 ^. ~WireGuard 一键安装脚本+ g# ?! [; {7 n1 {
; q5 w/ {$ I7 `! X8 l
参考链接
7 O. p6 g5 I7 f- [( k: ~  nhttps://www.wireguard.com, I1 O( @! z, u+ w: q% W: n% I
https://github.com/WireGuard/WireGuard
: p+ _$ `# a# ^: Nhttps://git.zx2c4.com/WireGuard
/ F# p; b$ \: Z* n4 v* m- ~$ v8 Nhttps://golb.hplar.ch/2019/07/wireguard-windows.html
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-17 17:05 , Processed in 0.088384 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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