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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2496|回复: 0

wireguard

[复制链接]
发表于 2013-5-15 22:37:16 | 显示全部楼层 |阅读模式
本脚本适用环境
3 ~2 @; y3 o$ \. S系统支持:CentOS 7+,Debian 8+,Raspbian 10,Ubuntu 16+,Fedora 29+
: f* }: M# H' x  l9 D1 _内存要求:≥256M
6 B/ c, Y- W& U& t# P日期  :2020 年 4 月 2 日
# r8 x- h7 y3 w5 j; z. L6 U. v4 {1 i) c7 M" X% w
关于本脚本
8 m4 e* d+ R# K+ V' X/ K1. 支持两种安装方式:从代码编译安装,从 repository 直接安装;8 ^7 P. O/ p" z' B4 K4 x
2. 脚本会创建默认的 wg0 设备,以及 wg0 的客户端配置,并生成客户端配置对应的二维码 png 图片;
0 s& D  q* b+ z) L& f" u3. 脚本会修改本机防火墙设置,如果未启用防火墙,则会出现警告提示,需要手动去设置;
8 ]( r& Y6 W; I4. 脚本会从 1024 到 20480 随机生成监听端口;: x; e9 @; G) J( T- h" S+ v1 E
5. 脚本支持新增,删除,列出客户端功能;
  D: e2 b7 c) h% W, ^: }" E6. 脚本支持查看已安装的 WireGuard 的版本号;
; \4 D: Z3 m& @. ?3 o% m7. 脚本支持从代码编译安装的方式升级 WireGuard 到当前最新版本;
7 S8 a  C' E4 r' E3 j
! C% ]7 k! P% v) D客户端下载- c/ V; r( g+ W' Z/ g0 Y
Windows, macOS, Android, iOS 客户端
0 c5 W) R- x% ~& chttps://www.wireguard.com/install/+ i: A4 O1 o( b( x; O) W- W
# ?) X! M3 @9 L+ D' \/ S
脚本使用方法) B7 _& S/ P$ X9 z
使用 root 用户登录系统,运行以下命令下载脚本,赋予执行权限:$ P/ _2 b! V) H1 ]  M4 ~) S: h: v
' ]* f7 U( a4 V$ W  G) y
wget --no-check-certificate -O /opt/wireguard.sh https://raw.githubusercontent.co ... master/wireguard.sh
& }# z9 R, w6 _1 T! I$ q& a  echmod 755 /opt/wireguard.sh& K" J% Z/ {) @* b) U8 z$ o, n
写在前面
' g9 X" ~: Z, Y( A% dWireGuard 的安装和使用条件是比较苛刻的。因此我不建议在生产系统里安装和使用 WireGuard,除非你知道自己在做什么。
% q# i  ~! F4 X5 M( M1 @) S$ s7 {8 P它依赖于内核,也就是 kernel,在不同的系统中,内核,内核源码包,内核头文件必须存在且这三者版本要一致。
3 v5 Y  e, q! q' JRedHat,CentOS,Fedora,Oracle Linux,Amazon Linux 等 rpm 系的名字是 kernel,kernel-devel,kernel-headers。+ Y- N& Z3 ?+ M3 [- q+ |
Debian,Ubuntu 等 deb 系的名字是 kernel,linux-headers。
3 e9 w! O9 n8 P8 a( k如果这三者任一条件不满足的话,则不管是从代码编译安装还是从 repository 直接安装,也只是安装了 wireguard-tools 而已。# _4 H. W4 g$ P8 w) Z2 U! n7 e8 d5 e
而 WireGuard 真正工作的部分,是 wireguard-dkms,也就是动态内核模块支持(DKMS),是它将 WireGuard 编译到系统内核中。
# t9 W7 u' J" J3 b- f因此,在某些 VPS 商家,是需要你先自主更换系统内核,并事先将这三者安装好,才有可能不会出现编译或安装失败。! V& }) G% x: {5 {* }3 w
! H9 J; i; n  I
我在测试的时候,就经历过各种内核的问题导致的安装失败。如果你也遇到了同样的问题,建议先更换内核。) w# ~2 X" g6 A9 o" k
就我个人的体验而言,在 CentOS 7 下更换为 elrepo 的内核是最容易的。这里有个脚本,可以更换到最新版内核,且自动开启 BBR 网络传输算法。5 @  I  o  _( m8 E8 D
一键安装最新内核并开启 BBR 脚本
1 L: T" b2 k, _( W此脚本运行后,最后会提示你重启系统,此时可以输入 n,暂不重启。手动安装 kernel-headers,运行如下命令:
! c$ {! b& J; }" V/ _% t: Y
# o+ {% h8 C5 b) Yyum -y install kernel-ml-headers
( f% d3 P" N: G1 e% U; q* u/ F然后再重启之。运行如下命令:
4 O/ Y5 R4 q1 A: ^' f  s& Z" Y7 G' b6 H7 _
reboot" b2 {& t2 c9 \+ m, U
重启后进入系统,运行下面的从代码编译安装 WireGuard,基本上就不会出现安装失败的问题了。: m$ E1 S0 ~+ T: C8 Y0 w+ v0 |
注意:自主更换内核后,我建议使用从代码编译安装 WireGuard。
" l5 R3 h+ p% Q( C8 i3 u2 E; z# _! w5 F; p, L0 x
更新日志
3 n1 B' L" S+ d0 H$ @! \2020 年 4 月 2 日:
( Z5 S" r$ N2 j/ ?/ |( fLinux 内核 5.6 正式发布了,内置了 wireguard module。9 Q; [+ A) W! E2 m6 r, J
本次更新添加了检测系统内核版本,如果大于等于 5.6 则不安装 wireguard module,仅安装 wireguard tools,然后再生成默认配置。. c) F, @& ~. j' U) ^; F. T
当系统内核小于 5.6 时,则依然安装 wireguard module 和 tools,并生成默认配置。7 l! x$ @1 _& x) j- L
. K0 g; T& s. Y, ]; ~6 J
2020 年 1 月 6 日:$ I1 f, M  _3 `+ Y
一个好消息是 WireGuard 即将要合并到内核 5.6 里面了。
% o3 B. l0 g6 N8 R) S* O. P于是作者在近期把 repo 改名了,从而导致脚本无法获取到正确的版本号。: a9 ^% c" g0 }, G
并且还把原来的 repo 一分为二了,分别改为 wireguard-linux-compat 和 wireguard-tools。前者是内核模块,后者是命令行工具。
% v& R7 Z. q' a" N' d, D8 q此次更新就是修复了以上问题。. }# {7 j: S8 R7 n
6 z0 ~2 T! F/ P! J
2019 年 11 月 16 日:
1 ^' d, c- D* {2 `2 ?6 v( T* i1、修正客户端配置文件创建时的各参数顺序,与 Windows 客户端的显示顺序一致。
/ U* Z8 q9 o* ]7 L2、新增 Windows 客户端配置示例说明。: f1 |2 H  L4 K5 ]* r- [
! u, v, R, _6 b2 @& e
2019 年 10 月 27 日:
8 L" L' |7 M5 v0 g8 H  L1、新增卸载函数,使用方法请参考下面的卸载方法。5 k/ e/ ^  f3 I0 L. n* u: [
2、支持在 CentOS8 下从 repository 安装,或者从代码编译安装。9 B/ i. x8 q6 V

% M6 W8 `- w! J; f$ N( ~从代码编译安装 WireGuard
/ J# ?5 e; t% A7 k! K/opt/wireguard.sh -s# e1 o1 X$ l+ W4 J3 A" B" T
从 repository 直接安装 WireGuard
% {* X5 G2 j" H$ o; I" g% i/opt/wireguard.sh -r
# E5 R7 \6 R$ y; G; M8 `安装完成后,脚本提示如下
( \+ ^4 `2 _* h/ h! b. ?6 ~7 [WireGuard VPN Server installation completed6 V0 t, P' L' S4 H
WireGuard VPN default client file is below:1 x2 Q4 M& d  K* ~0 w
/etc/wireguard/wg0_client
! \& J; k# L3 k& SWireGuard VPN default client QR Code is below:
  z# o0 x' w- y/etc/wireguard/wg0_client.png- O5 k$ d+ ]( Y: m8 a' C
Download and scan this QR Code with your phone
( z/ a7 L6 i1 g9 W, i: N. {Welcome to visit: https://teddysun.com/554.html
) U; n5 |9 c% _# }' mEnjoy it
- Y1 i1 Y! M* e4 Z3 U卸载方法
  U9 W9 Q2 ]* V( s* I% X  i/opt/wireguard.sh -n
/ V2 n$ G. V* G* c* G% T$ L其他使用选项
9 C6 G9 O9 m; k8 j3 q& X. o! `查看已安装 WireGuard 版本号
4 R# d4 \+ o" X$ U8 ^
; o. \  h1 n- I/ L6 H) P  {. c4 m/opt/wireguard.sh -v
6 ?. }, ?/ ]6 U, g4 w1 X, u+ g5 M* N& S编译升级 WireGuard 到当前最新版本
1 e6 Q* d1 r7 u% V5 D$ @
" i& a9 i! v4 I+ D) Y2 p/opt/wireguard.sh -u5 p' @; O7 j$ S/ n& H5 R$ g
新增 WireGuard 客户端配置( L& v+ n: X" y4 j
; V& {" p5 P: x+ a* X- L. {1 n
/opt/wireguard.sh -a8 b. k" z( U6 c# W, @' r9 k
删除 WireGuard 客户端配置
6 l. N, Q# }5 W, N6 K' g注意:默认客户端 wg0 不允许删除
5 p/ w4 u# S' ~4 x+ c6 a1 v. [4 G6 f6 a. e
/opt/wireguard.sh -d
& y3 t8 i. ^" v. l列出 WireGuard 客户端配置3 c7 Q# _* s* e1 ^" a8 b9 M
0 k! U3 b( j9 [
/opt/wireguard.sh -l
7 e7 X$ o% ?4 Y5 |1 [# W9 Q高级用法; O' q+ {3 y2 d& w! q; y! M; z
如果你在安装时,需要自定义自己想要的端口,那么可以 export 变量 VPN_SERVER_WG_PORT 的值,这样脚本就会读取这个变量值来定义监听端口,而不会自己随机生成。  B: ]5 C8 ~8 v! G
比如你想自定义端口为 1234,那么具体做法就是,在执行从代码编译安装 WireGuard 或者从 repository 直接安装 WireGuard 之前,运行如下命令:
6 Z9 g8 {4 l! }% s" R6 `6 {
9 W# U* A7 s9 G' @  J" }export VPN_SERVER_WG_PORT=1234) m$ x0 i9 i5 L. {: ]- R: D
下面是一份脚本里用到的变量列表名(共计 11 个),以及它们具体代表什么含义的说明。
( s/ d* A0 Z7 i' y, H) NVPN_SERVER_PUB_IPV4,定义服务器公网 IPv4,如果你的服务器端存在多个可用公网 IPv4,指定此变量的值。
' X" `  |( K9 HVPN_SERVER_PUB_IPV6,定义服务器公网 IPv6,如果你的服务器端存在多个可用公网 IPv6,指定此变量的值。
5 _. n( B/ _& A* M1 {5 {6 `VPN_SERVER_PUB_NIC,定义服务器默认网卡名称,如果你的服务器有多个可用网卡,指定此变量的值。
! i+ b/ \. e+ A+ S4 CVPN_SERVER_WG_NIC,定义 WireGuard 网卡名,默认为 wg0,这里一般不推荐指定此变量的值。) Z7 ?1 }9 H2 z& m$ S3 _+ H
VPN_SERVER_WG_IPV4,定义 WireGuard 服务端的内网 IPv4,默认为 10.88.88.1,这里一般不推荐指定此变量的值。6 i$ T$ l( E' x; e" g; ~, L
VPN_SERVER_WG_IPV6,定义 WireGuard 服务端的内网 IPv6,默认为 fd88:88:88::1,这里一般不推荐指定此变量的值。& W! o, h( E* ~- t! V
VPN_SERVER_WG_PORT,定义器 WireGuard 服务端的监听端口,默认为从 1024 到 20480 随机生成,如果你想自定义端口,指定此变量的值。$ b/ x9 H2 I1 R: [; C5 J
VPN_CLIENT_WG_IPV4,定义 WireGuard 默认客户端的内网 IPv4,默认为 10.88.88.2,这里一般不推荐指定此变量的值。
3 t5 I0 V$ W  bVPN_CLIENT_WG_IPV6,定义 WireGuard 默认客户端的内网 IPv6,默认为 fd88:88:88::2,这里一般不推荐指定此变量的值。
5 O" m3 x0 e. _6 k' MVPN_CLIENT_DNS_1,定义 WireGuard 默认客户端的 DNS,默认为 1.1.1.1,如果你想自定义为别的 DNS,指定此变量的值。; ]/ y- q. V0 u* E. e
VPN_CLIENT_DNS_2,定义 WireGuard 默认客户端的 DNS,默认为 8.8.8.8,如果你想自定义为别的 DNS,指定此变量的值。
' Y  k) y/ }3 l* I( o( G1 i6 d. @5 X9 @) @; Q0 |
Windows 客户端配置  K  x' X# T: ]& O( d
下载,安装,打开客户端软件,点击 Add Tunnel -> Add empty tunnel…
5 q" S8 u- i! E4 dWireGuard 一键安装脚本! S; R5 ^' a, D. A+ E7 O  ?

, D. [# F. |3 E0 C; E/ X此时出现一个可以编辑的界面,将脚本生成的客户端配置 /etc/wireguard/wg0_client 里的内容复制出来,粘贴,保存。
  B- c6 A3 S9 L1 G/ W* r1 wWireGuard 一键安装脚本
0 J6 X  u; o' C% ]  k" [  {, W, o; R  r/ ^; a9 D* S/ m
WireGuard 一键安装脚本5 A+ j- [8 i  H/ s9 u, }
- Y9 d  c% D" ~  |/ U) b4 x
点击 Activate,就可以 VPN 连接了。
9 ?6 L; ?, n1 t( P, D! e9 ?WireGuard 一键安装脚本) h: Z; V* t. a( W: ]6 Q& d

2 ?1 f# g6 b: t0 `  }参考链接
2 p. x$ L% g4 u, k) e# phttps://www.wireguard.com" ^% T8 X+ a3 y. v. p& d& ^
https://github.com/WireGuard/WireGuard
$ A' W: k5 e; v: b: h3 g7 F& Thttps://git.zx2c4.com/WireGuard
+ k  h2 E. T& X% @# Thttps://golb.hplar.ch/2019/07/wireguard-windows.html
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-19 22:28 , Processed in 0.107665 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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