找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2658|回复: 0

wireguard

[复制链接]
发表于 2013-5-15 22:37:16 | 显示全部楼层 |阅读模式
本脚本适用环境2 }/ c2 M$ k% g4 u0 D
系统支持:CentOS 7+,Debian 8+,Raspbian 10,Ubuntu 16+,Fedora 29+- g/ F' z5 M% c6 o! J8 w" E
内存要求:≥256M: K! j# b2 i+ P1 c  ~: ~6 b
日期  :2020 年 4 月 2 日
6 H7 a& Z# M- L1 p. M5 Q# o' o5 O' H/ g! `$ G
关于本脚本2 j! ?8 y$ i8 }. k
1. 支持两种安装方式:从代码编译安装,从 repository 直接安装;/ K% d" M, E$ g& G0 F. w
2. 脚本会创建默认的 wg0 设备,以及 wg0 的客户端配置,并生成客户端配置对应的二维码 png 图片;
( p( i0 Y9 }" D$ K3. 脚本会修改本机防火墙设置,如果未启用防火墙,则会出现警告提示,需要手动去设置;
1 `- v# n# J! i) K2 E/ E. N4. 脚本会从 1024 到 20480 随机生成监听端口;; }7 q$ \) \0 H! ~* x; k
5. 脚本支持新增,删除,列出客户端功能;( g9 X; P8 `  L6 S8 P
6. 脚本支持查看已安装的 WireGuard 的版本号;
) n4 I% c8 v8 j6 Q, Z  y) L6 j; j7. 脚本支持从代码编译安装的方式升级 WireGuard 到当前最新版本;$ C  X* m/ C: U  Q

6 K8 p% T# }' o5 x. H客户端下载2 X: A7 h/ m0 ~+ @1 L: }: Q
Windows, macOS, Android, iOS 客户端: C- \' e. \% Z; p4 [0 Z$ f
https://www.wireguard.com/install/( ]7 ~2 a  j& o  H5 U$ U

, Y! u! P. z' e4 N7 C$ G脚本使用方法
8 J. A9 s9 K5 {  S, T! T: U$ \使用 root 用户登录系统,运行以下命令下载脚本,赋予执行权限:
$ u! u) q# B% F
3 m0 Q) A, d: e8 K7 Bwget --no-check-certificate -O /opt/wireguard.sh https://raw.githubusercontent.co ... master/wireguard.sh3 p. [+ O  M1 k' q
chmod 755 /opt/wireguard.sh6 T: v4 e* o# L$ \
写在前面
# r/ X5 k. {" _2 ?8 NWireGuard 的安装和使用条件是比较苛刻的。因此我不建议在生产系统里安装和使用 WireGuard,除非你知道自己在做什么。' j$ Y4 ^4 ?- B  V7 ~
它依赖于内核,也就是 kernel,在不同的系统中,内核,内核源码包,内核头文件必须存在且这三者版本要一致。5 E/ n( u7 s  a  E
RedHat,CentOS,Fedora,Oracle Linux,Amazon Linux 等 rpm 系的名字是 kernel,kernel-devel,kernel-headers。
* f( W: d5 Z+ d4 d$ [3 JDebian,Ubuntu 等 deb 系的名字是 kernel,linux-headers。6 Q% I% {( m! F3 P0 L8 W
如果这三者任一条件不满足的话,则不管是从代码编译安装还是从 repository 直接安装,也只是安装了 wireguard-tools 而已。9 [. ]0 U( {$ G: |
而 WireGuard 真正工作的部分,是 wireguard-dkms,也就是动态内核模块支持(DKMS),是它将 WireGuard 编译到系统内核中。4 }% D6 I. H7 p: O* r" d* @
因此,在某些 VPS 商家,是需要你先自主更换系统内核,并事先将这三者安装好,才有可能不会出现编译或安装失败。( e8 M8 D9 p+ }, W  q

( }+ L3 N% ~& m我在测试的时候,就经历过各种内核的问题导致的安装失败。如果你也遇到了同样的问题,建议先更换内核。
2 ^. {+ D0 `. D就我个人的体验而言,在 CentOS 7 下更换为 elrepo 的内核是最容易的。这里有个脚本,可以更换到最新版内核,且自动开启 BBR 网络传输算法。5 @/ e5 O5 I% U& P
一键安装最新内核并开启 BBR 脚本
/ l3 C1 k0 j* ?. j3 t0 G1 ~& z此脚本运行后,最后会提示你重启系统,此时可以输入 n,暂不重启。手动安装 kernel-headers,运行如下命令:
5 S. x8 m- B0 Z4 S! T# s
; i- t" S8 A3 ?) s+ x1 A8 i3 o" Oyum -y install kernel-ml-headers1 ?- V# D8 ^3 g: z9 P, d; ^3 l' F
然后再重启之。运行如下命令:
4 @5 ]3 \( l0 `2 k9 q7 m- y: T; S* E; d; k; f
reboot$ [3 `0 @6 m0 l- \, r
重启后进入系统,运行下面的从代码编译安装 WireGuard,基本上就不会出现安装失败的问题了。: T/ y5 q9 ]1 q- T
注意:自主更换内核后,我建议使用从代码编译安装 WireGuard。9 L6 P5 o3 V% a0 G! `

! @4 f; W! C" g) F更新日志* O! N' d6 Z% N/ V( ^( _
2020 年 4 月 2 日:4 ?& J! B& G+ a  P8 `. s
Linux 内核 5.6 正式发布了,内置了 wireguard module。3 v5 \6 w2 ?2 m" z+ R
本次更新添加了检测系统内核版本,如果大于等于 5.6 则不安装 wireguard module,仅安装 wireguard tools,然后再生成默认配置。) @1 w  X2 z1 \2 V& s
当系统内核小于 5.6 时,则依然安装 wireguard module 和 tools,并生成默认配置。7 X: H* }% Q2 i
- g0 M8 p: n$ c0 t0 A* d1 N
2020 年 1 月 6 日:
6 I8 K) g2 q0 y% e+ r; n一个好消息是 WireGuard 即将要合并到内核 5.6 里面了。  M0 M; A6 l1 h
于是作者在近期把 repo 改名了,从而导致脚本无法获取到正确的版本号。( u, R. V5 ]8 v' |; u" ?
并且还把原来的 repo 一分为二了,分别改为 wireguard-linux-compat 和 wireguard-tools。前者是内核模块,后者是命令行工具。9 l- T6 ^$ D/ h7 c5 M9 J: j" Y
此次更新就是修复了以上问题。
  U* V7 q  G& Y( m( B/ h5 L
3 y3 N: Z9 S8 ^/ T2 `4 |$ d2019 年 11 月 16 日:" O. |- \# r; V4 F
1、修正客户端配置文件创建时的各参数顺序,与 Windows 客户端的显示顺序一致。! b! `, Z6 ?% |9 s
2、新增 Windows 客户端配置示例说明。0 p5 A2 _3 E: r" M+ D
2 r2 }% |0 I3 b; P: U
2019 年 10 月 27 日:
: w& G8 A* U* \8 o% X4 O1、新增卸载函数,使用方法请参考下面的卸载方法。& u% h$ k+ R9 Z: E8 W& m
2、支持在 CentOS8 下从 repository 安装,或者从代码编译安装。  R/ g7 Y+ H% j0 w
( M' \" ~9 Y& Y5 e8 y
从代码编译安装 WireGuard
! ~6 v  }6 U! b+ ^: \( N6 g# x/opt/wireguard.sh -s
1 o/ u9 o9 P; ?) _  x从 repository 直接安装 WireGuard
/ T9 P* r! F. p1 }/opt/wireguard.sh -r
. e2 o* W, x: ?5 Y3 x9 I安装完成后,脚本提示如下2 F, s( K4 E$ I. m5 S
WireGuard VPN Server installation completed
6 ?; j# V' ~; e. {WireGuard VPN default client file is below:" S+ `0 k# A; C0 b+ Y& b: t
/etc/wireguard/wg0_client
7 ?4 u! x) h% O5 f* Z, f- x! C) iWireGuard VPN default client QR Code is below:; G' l. k  t9 L3 u! ?' Y$ |$ q
/etc/wireguard/wg0_client.png
3 O2 K, @. Y9 e/ \4 J" {Download and scan this QR Code with your phone
' [4 e! t0 e3 V. i$ G8 V! O9 ]Welcome to visit: https://teddysun.com/554.html
* U3 S0 m/ g5 _* w8 u$ V! dEnjoy it
. S  q: N; Z# L4 ?+ q卸载方法
) K4 m- M  c# R/opt/wireguard.sh -n
2 \" W/ B0 J+ ~% C其他使用选项
2 c) W  ~1 y2 k查看已安装 WireGuard 版本号! ^; e7 {+ }4 }5 j+ ~, K3 F( [' K8 f
3 [  i0 J% B2 a' _  i
/opt/wireguard.sh -v- l  b9 p0 s$ B& l2 W; v7 U
编译升级 WireGuard 到当前最新版本: O  o6 {. N2 _8 z# `

9 K- `; y$ G# l/opt/wireguard.sh -u9 \( w: q, S" J0 F/ J
新增 WireGuard 客户端配置8 L5 w2 @( S+ U4 @( t% e
* J7 X/ h/ R2 V5 a3 ~( [- Q
/opt/wireguard.sh -a  |! ^5 j/ o0 B% U
删除 WireGuard 客户端配置2 w  B0 X/ h' S& u8 c1 A1 @% K
注意:默认客户端 wg0 不允许删除
8 n7 @! q: z) E8 `; n7 o  ~8 I8 w% O8 z" e/ k' o
/opt/wireguard.sh -d
& C6 h; R* \* Y* o. A列出 WireGuard 客户端配置
( [0 Q( v: x5 T5 h) z. ~7 D  V8 P! N1 f6 l8 N+ y2 g" ]# Z
/opt/wireguard.sh -l
9 @/ @$ g8 w" `. M高级用法$ B7 \' n$ b% i5 W( A+ T
如果你在安装时,需要自定义自己想要的端口,那么可以 export 变量 VPN_SERVER_WG_PORT 的值,这样脚本就会读取这个变量值来定义监听端口,而不会自己随机生成。
9 w- ^0 k, t# y比如你想自定义端口为 1234,那么具体做法就是,在执行从代码编译安装 WireGuard 或者从 repository 直接安装 WireGuard 之前,运行如下命令:% E4 C7 P3 D$ ]3 P: ^3 R, H1 ~+ J

" f) z0 ^0 Z! n! eexport VPN_SERVER_WG_PORT=1234& Q, v/ w5 O& Z% p
下面是一份脚本里用到的变量列表名(共计 11 个),以及它们具体代表什么含义的说明。
3 W$ Q- R% v3 V8 NVPN_SERVER_PUB_IPV4,定义服务器公网 IPv4,如果你的服务器端存在多个可用公网 IPv4,指定此变量的值。
7 v2 i3 h% x3 X6 |VPN_SERVER_PUB_IPV6,定义服务器公网 IPv6,如果你的服务器端存在多个可用公网 IPv6,指定此变量的值。
$ Q2 j+ g0 `  w; L( f8 [7 S3 a9 ]VPN_SERVER_PUB_NIC,定义服务器默认网卡名称,如果你的服务器有多个可用网卡,指定此变量的值。
4 v5 y) L  t% I9 L' j9 R* VVPN_SERVER_WG_NIC,定义 WireGuard 网卡名,默认为 wg0,这里一般不推荐指定此变量的值。
2 p9 r+ ~2 G( SVPN_SERVER_WG_IPV4,定义 WireGuard 服务端的内网 IPv4,默认为 10.88.88.1,这里一般不推荐指定此变量的值。
/ }4 W- U7 q8 A# {  s& E  bVPN_SERVER_WG_IPV6,定义 WireGuard 服务端的内网 IPv6,默认为 fd88:88:88::1,这里一般不推荐指定此变量的值。
5 t9 z$ ~1 N2 V# r9 [' g$ wVPN_SERVER_WG_PORT,定义器 WireGuard 服务端的监听端口,默认为从 1024 到 20480 随机生成,如果你想自定义端口,指定此变量的值。, f- L/ V# e& H" N
VPN_CLIENT_WG_IPV4,定义 WireGuard 默认客户端的内网 IPv4,默认为 10.88.88.2,这里一般不推荐指定此变量的值。2 m6 z! a: J* |- o# N! h5 q" z
VPN_CLIENT_WG_IPV6,定义 WireGuard 默认客户端的内网 IPv6,默认为 fd88:88:88::2,这里一般不推荐指定此变量的值。% q6 C' F8 N- P
VPN_CLIENT_DNS_1,定义 WireGuard 默认客户端的 DNS,默认为 1.1.1.1,如果你想自定义为别的 DNS,指定此变量的值。: x3 m) Y: t& f( c! H* a# S# t, ]; P
VPN_CLIENT_DNS_2,定义 WireGuard 默认客户端的 DNS,默认为 8.8.8.8,如果你想自定义为别的 DNS,指定此变量的值。! t0 b+ ^( w; m: c( H- \
% m2 \* _1 s6 ~3 @" t6 ^
Windows 客户端配置0 C9 y4 d3 a  z) G  z
下载,安装,打开客户端软件,点击 Add Tunnel -> Add empty tunnel…
9 u( T7 ~( C* ^4 xWireGuard 一键安装脚本& }# x( i( `* T. X# f$ v# k

+ f5 w, v5 f0 u  a1 f- d此时出现一个可以编辑的界面,将脚本生成的客户端配置 /etc/wireguard/wg0_client 里的内容复制出来,粘贴,保存。
) L( K: F6 T3 t; y5 o0 e- EWireGuard 一键安装脚本
) m+ ^/ S& ]( B9 J* n: o5 \
8 v" _. N4 B9 ]4 [) n* ?" IWireGuard 一键安装脚本
! h; r1 s* N5 N( n
* I5 u8 j8 u4 B- \5 y8 J/ m) n点击 Activate,就可以 VPN 连接了。
. K/ H  B  t, v, F& f' KWireGuard 一键安装脚本& y3 _1 U7 v- d2 @% m4 V

# g9 h5 B7 G3 n* n. t参考链接! Y0 P; n% d4 u0 w7 }* Z  v
https://www.wireguard.com$ J. H. x8 ]8 |% u3 `! i. ^
https://github.com/WireGuard/WireGuard- `9 l; j+ I4 G/ b$ U& ^
https://git.zx2c4.com/WireGuard7 u& u1 J: o: A% k1 K
https://golb.hplar.ch/2019/07/wireguard-windows.html
回复

使用道具 举报

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

本版积分规则

QQ|手机版|赛格电脑 华强北 电脑城 南山赛格 龙岗电子世界 龙华电脑城 沙井电脑城 松岗电脑城 pc4g.com ( 粤ICP备16039863号 )

GMT+8, 2025-9-2 09:16 , Processed in 0.083417 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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