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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2498|回复: 0

wireguard

[复制链接]
发表于 2013-5-15 22:37:16 | 显示全部楼层 |阅读模式
本脚本适用环境5 [7 l+ D! T' o; H/ l* y0 [) q( L
系统支持:CentOS 7+,Debian 8+,Raspbian 10,Ubuntu 16+,Fedora 29+
% v2 R0 e; k4 i8 E: C  _内存要求:≥256M' |. S) u4 Q! [" {; X* s
日期  :2020 年 4 月 2 日. e+ {9 {2 c8 G* c: V
/ d- {" h/ S+ P5 ]: k) Q
关于本脚本
; @- h% S. {1 X# f2 u1. 支持两种安装方式:从代码编译安装,从 repository 直接安装;6 N% ^# h7 w; r  Z& B# X# ]
2. 脚本会创建默认的 wg0 设备,以及 wg0 的客户端配置,并生成客户端配置对应的二维码 png 图片;' @  \+ T/ n/ ?+ Q% ]! W; W, A
3. 脚本会修改本机防火墙设置,如果未启用防火墙,则会出现警告提示,需要手动去设置;
  v  V7 Q% ^0 S2 _" O/ D4. 脚本会从 1024 到 20480 随机生成监听端口;! I. _* Q( W) l  G* ^
5. 脚本支持新增,删除,列出客户端功能;0 o0 A/ t. n9 I. x- o$ f
6. 脚本支持查看已安装的 WireGuard 的版本号;
2 C2 A: c. ^: g- i/ U0 p- G5 q" z7. 脚本支持从代码编译安装的方式升级 WireGuard 到当前最新版本;
% N4 N3 d' X% B$ c, |% \  u! d- n) y" J
客户端下载5 ~% q% m- r  c4 _9 q' W
Windows, macOS, Android, iOS 客户端9 g4 p& g5 H8 Z( J. z
https://www.wireguard.com/install/6 {& I  c& A5 q/ X0 X1 N
7 j7 j  q! l9 g4 y' m
脚本使用方法
# a& |/ Q/ R4 n/ h' @% [  A3 U使用 root 用户登录系统,运行以下命令下载脚本,赋予执行权限:' ?0 \7 R" \3 y, o. u& i6 X: p6 \
- w! j9 o/ C0 N  {6 h+ N
wget --no-check-certificate -O /opt/wireguard.sh https://raw.githubusercontent.co ... master/wireguard.sh
7 w5 {) y) L# k9 W0 Lchmod 755 /opt/wireguard.sh
8 Z4 t  [2 F: ]" ?4 P写在前面7 O. L; B7 g1 _) m! J1 k9 S4 G: y( u, e
WireGuard 的安装和使用条件是比较苛刻的。因此我不建议在生产系统里安装和使用 WireGuard,除非你知道自己在做什么。
) b, B9 S, y4 {9 ^! S9 i  q" P9 p它依赖于内核,也就是 kernel,在不同的系统中,内核,内核源码包,内核头文件必须存在且这三者版本要一致。0 G# z: ]) Q9 n1 ]' w" u
RedHat,CentOS,Fedora,Oracle Linux,Amazon Linux 等 rpm 系的名字是 kernel,kernel-devel,kernel-headers。% G2 D8 e: `' g# O( q
Debian,Ubuntu 等 deb 系的名字是 kernel,linux-headers。: n; W. c: l6 V  Y1 D+ \
如果这三者任一条件不满足的话,则不管是从代码编译安装还是从 repository 直接安装,也只是安装了 wireguard-tools 而已。7 b1 X, g/ E' _4 I. g
而 WireGuard 真正工作的部分,是 wireguard-dkms,也就是动态内核模块支持(DKMS),是它将 WireGuard 编译到系统内核中。
; {/ w" J" _/ K! e6 n: h4 S3 H7 h因此,在某些 VPS 商家,是需要你先自主更换系统内核,并事先将这三者安装好,才有可能不会出现编译或安装失败。+ Q9 }$ @5 q# Y. k6 ^

# e: O9 U& s0 Q! G) T, V我在测试的时候,就经历过各种内核的问题导致的安装失败。如果你也遇到了同样的问题,建议先更换内核。
6 @+ K! U7 |9 `就我个人的体验而言,在 CentOS 7 下更换为 elrepo 的内核是最容易的。这里有个脚本,可以更换到最新版内核,且自动开启 BBR 网络传输算法。
6 |) ^# Y( c8 S# o  e& y一键安装最新内核并开启 BBR 脚本) U1 @) ^2 u9 C% J& a+ T
此脚本运行后,最后会提示你重启系统,此时可以输入 n,暂不重启。手动安装 kernel-headers,运行如下命令:# w* T0 E1 m" G" E0 X- i  p

& _7 f9 a' [/ E- N9 x+ [# ?; hyum -y install kernel-ml-headers
' Q8 t0 r0 x) ^; ?5 \然后再重启之。运行如下命令:
  B+ w8 f8 w7 X8 T. W7 ]0 u0 Y7 D
reboot" J8 B+ j, C( ~2 l) m5 h( ?
重启后进入系统,运行下面的从代码编译安装 WireGuard,基本上就不会出现安装失败的问题了。9 B7 M  M# v3 Z  e" K4 `, P
注意:自主更换内核后,我建议使用从代码编译安装 WireGuard。+ B/ d) w  S7 S2 y: d3 s; `, a

& f3 R* j1 D  p) S8 N更新日志
( a5 }8 o% h' ~4 o; F2020 年 4 月 2 日:
- c! Y# {5 I5 l; J4 ]7 NLinux 内核 5.6 正式发布了,内置了 wireguard module。
* B. W$ t5 j. q本次更新添加了检测系统内核版本,如果大于等于 5.6 则不安装 wireguard module,仅安装 wireguard tools,然后再生成默认配置。
+ P" O3 S, O+ a4 f6 {1 ^当系统内核小于 5.6 时,则依然安装 wireguard module 和 tools,并生成默认配置。4 a/ A, K% x- u, E$ w

3 a6 e/ `3 y* B8 z2020 年 1 月 6 日:" a/ x* I/ g1 u  }1 ^/ O
一个好消息是 WireGuard 即将要合并到内核 5.6 里面了。( O3 o- o( ]2 Q' D0 T1 W8 ?
于是作者在近期把 repo 改名了,从而导致脚本无法获取到正确的版本号。
0 V5 l5 i2 f" n2 a并且还把原来的 repo 一分为二了,分别改为 wireguard-linux-compat 和 wireguard-tools。前者是内核模块,后者是命令行工具。
, h" m. \' s- y此次更新就是修复了以上问题。: D. Q& Y; q& F8 U: w  o: h
' U3 T' f6 S6 l6 i0 T. k
2019 年 11 月 16 日:
4 I9 ]) \$ c( _- v# Q3 [% B' \) O) Y1、修正客户端配置文件创建时的各参数顺序,与 Windows 客户端的显示顺序一致。
& M& @9 q9 h2 I2 T$ ~5 d' X( |2、新增 Windows 客户端配置示例说明。- @4 I& Y& i% d4 @$ {

3 L* ]! u# w: g; j; f2 B; N+ D2019 年 10 月 27 日:
$ j4 z, e; V& U3 c) j: j1、新增卸载函数,使用方法请参考下面的卸载方法。5 {3 X# P1 d. [" a  `& d
2、支持在 CentOS8 下从 repository 安装,或者从代码编译安装。
$ m# v* Q$ l6 K" F& r, {. F
. o  K/ g0 m# g+ v. e从代码编译安装 WireGuard
, H" u' D8 t2 i2 X0 i# a/opt/wireguard.sh -s5 ^* J& c7 B% C4 S6 |+ B  \% y
从 repository 直接安装 WireGuard
0 `" S# D! l+ h/ i( C6 i  j! n/opt/wireguard.sh -r
$ a/ l% X# I3 s) ^安装完成后,脚本提示如下" w  }& Y; |3 \6 |! g
WireGuard VPN Server installation completed$ f& f) G/ n+ Y# ]$ F7 U3 w( k
WireGuard VPN default client file is below:
; P1 A: k* q/ b9 n; ?/etc/wireguard/wg0_client1 L" p" G) E8 v" B. z
WireGuard VPN default client QR Code is below:
1 N% I& Q' @+ n; \/etc/wireguard/wg0_client.png
' H* S6 o* G9 c- [Download and scan this QR Code with your phone: O/ y. ~, z& U
Welcome to visit: https://teddysun.com/554.html$ M0 z; o' _7 r/ M2 G# I9 r
Enjoy it
6 u' v" x( H: c卸载方法
, t! ~' k4 K2 k/opt/wireguard.sh -n
# ]0 ?( x4 P% ^, c$ X9 @其他使用选项* a% a1 q" Q5 c6 e2 h
查看已安装 WireGuard 版本号* J5 ^  o; u: m2 X$ D. {' b2 V
8 H) {+ s4 k: Z' b
/opt/wireguard.sh -v
0 Z- `  m  V/ I3 M2 f$ d: j编译升级 WireGuard 到当前最新版本& Z( Z) d; f8 T% X8 s, i' }

" \+ D/ s+ L2 ~/opt/wireguard.sh -u
$ W* t" o5 R9 _1 U新增 WireGuard 客户端配置% b' k) {% N. U: \
% k2 X9 q! N* P5 g# |2 N
/opt/wireguard.sh -a
" X4 v) X" h4 z1 v7 ]% X( G  A4 n删除 WireGuard 客户端配置' m) [& p) ]# R1 ~4 {
注意:默认客户端 wg0 不允许删除7 f7 q9 n* C, F% j) K

( g$ \, `6 ~5 U/opt/wireguard.sh -d( z# X! Q, C! i( b3 |% ?( @- o
列出 WireGuard 客户端配置" _/ q  v. x& t: V) A* y
( o2 v  K$ y' D' e( w. z
/opt/wireguard.sh -l  E8 |/ w: D& T% v8 K6 w) k
高级用法6 }# F, a! O! ~1 K* N) M4 J
如果你在安装时,需要自定义自己想要的端口,那么可以 export 变量 VPN_SERVER_WG_PORT 的值,这样脚本就会读取这个变量值来定义监听端口,而不会自己随机生成。7 \# z) g; J( b! g; G
比如你想自定义端口为 1234,那么具体做法就是,在执行从代码编译安装 WireGuard 或者从 repository 直接安装 WireGuard 之前,运行如下命令:
/ ~: V$ T& @2 j- j! s- C2 J" D) l
9 W$ z% o2 x1 D' gexport VPN_SERVER_WG_PORT=1234
2 R4 E2 b2 \$ s' H8 m' m2 J( p2 C下面是一份脚本里用到的变量列表名(共计 11 个),以及它们具体代表什么含义的说明。$ n: {# w- S% ~' V9 X% g6 v
VPN_SERVER_PUB_IPV4,定义服务器公网 IPv4,如果你的服务器端存在多个可用公网 IPv4,指定此变量的值。+ a! \3 M7 }5 K6 d( |: K* ?1 b
VPN_SERVER_PUB_IPV6,定义服务器公网 IPv6,如果你的服务器端存在多个可用公网 IPv6,指定此变量的值。
, V+ H+ }; A; D0 d1 _; bVPN_SERVER_PUB_NIC,定义服务器默认网卡名称,如果你的服务器有多个可用网卡,指定此变量的值。* r* N/ t! u" z  ?& e) [
VPN_SERVER_WG_NIC,定义 WireGuard 网卡名,默认为 wg0,这里一般不推荐指定此变量的值。+ d/ m$ w6 h& c
VPN_SERVER_WG_IPV4,定义 WireGuard 服务端的内网 IPv4,默认为 10.88.88.1,这里一般不推荐指定此变量的值。
6 Q5 D1 O( S' ^' bVPN_SERVER_WG_IPV6,定义 WireGuard 服务端的内网 IPv6,默认为 fd88:88:88::1,这里一般不推荐指定此变量的值。
7 n2 z! J9 @7 T  W. B8 f% vVPN_SERVER_WG_PORT,定义器 WireGuard 服务端的监听端口,默认为从 1024 到 20480 随机生成,如果你想自定义端口,指定此变量的值。  f0 c- b4 q2 F! Z' V
VPN_CLIENT_WG_IPV4,定义 WireGuard 默认客户端的内网 IPv4,默认为 10.88.88.2,这里一般不推荐指定此变量的值。
' j" K; f# U& S4 ^$ W# BVPN_CLIENT_WG_IPV6,定义 WireGuard 默认客户端的内网 IPv6,默认为 fd88:88:88::2,这里一般不推荐指定此变量的值。8 b3 H  G2 E: j  |8 T$ F+ d! @
VPN_CLIENT_DNS_1,定义 WireGuard 默认客户端的 DNS,默认为 1.1.1.1,如果你想自定义为别的 DNS,指定此变量的值。0 {8 {  D! q: |) v
VPN_CLIENT_DNS_2,定义 WireGuard 默认客户端的 DNS,默认为 8.8.8.8,如果你想自定义为别的 DNS,指定此变量的值。- v0 M& |4 v: {2 d0 g: t

5 U4 d. }5 g! ZWindows 客户端配置6 d/ b& U. a( w# Z! T5 T  S
下载,安装,打开客户端软件,点击 Add Tunnel -> Add empty tunnel…7 Q1 v. f" R% H& Z, C5 K5 c/ F! p
WireGuard 一键安装脚本) ~4 R6 p; H; Z4 {5 f" |" K* d. j
$ ]) U  d* q+ _( x$ L2 o
此时出现一个可以编辑的界面,将脚本生成的客户端配置 /etc/wireguard/wg0_client 里的内容复制出来,粘贴,保存。0 i8 d1 A. U) D3 k, h9 F
WireGuard 一键安装脚本
% T3 w: b& f6 Z& g: {4 a9 {, c9 a; f# a5 Z! b
WireGuard 一键安装脚本; X) w2 z2 U: j- x  |2 f
3 \7 c8 R* ^& I2 v% @$ P" s
点击 Activate,就可以 VPN 连接了。+ P$ g2 }6 F. K/ M0 Q$ a
WireGuard 一键安装脚本
% ~) V4 u, a8 J) V
8 s" I4 X3 G+ ~' J- L参考链接9 A, d. r: v; S; c& {
https://www.wireguard.com! f. x- b8 R* I- @, K
https://github.com/WireGuard/WireGuard! ^. q& g/ h6 \1 R( R) M
https://git.zx2c4.com/WireGuard9 w* `1 Y( W0 ~; T5 o7 P( s
https://golb.hplar.ch/2019/07/wireguard-windows.html
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-20 03:02 , Processed in 0.106335 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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