找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2745|回复: 0

wireguard

[复制链接]
发表于 2013-5-15 22:37:16 | 显示全部楼层 |阅读模式
本脚本适用环境7 y1 Z) [" u5 O; Z7 U, X) W. R
系统支持:CentOS 7+,Debian 8+,Raspbian 10,Ubuntu 16+,Fedora 29+* w# X. {: A3 @; F- }
内存要求:≥256M# v' E* _3 T) i! y7 |, H
日期  :2020 年 4 月 2 日9 c* D& e% S: v. u

6 M& `3 j0 ]& l5 i7 Z关于本脚本
* B4 o2 b. q: y. V+ `" T) b* L2 i) C1. 支持两种安装方式:从代码编译安装,从 repository 直接安装;! G7 w; [, H2 b; K$ r9 T
2. 脚本会创建默认的 wg0 设备,以及 wg0 的客户端配置,并生成客户端配置对应的二维码 png 图片;4 u- Y: h- k2 a% D
3. 脚本会修改本机防火墙设置,如果未启用防火墙,则会出现警告提示,需要手动去设置;
& x- Z& s6 Q- Y' S" x0 d& {% x4. 脚本会从 1024 到 20480 随机生成监听端口;: `0 d7 }% w8 f
5. 脚本支持新增,删除,列出客户端功能;
* v5 T+ l. z# h2 \) i# W2 l6. 脚本支持查看已安装的 WireGuard 的版本号;$ z$ ?; u- ~# o4 ^! a/ W
7. 脚本支持从代码编译安装的方式升级 WireGuard 到当前最新版本;
7 b0 ~1 r6 r7 N0 f$ D+ @" R8 g" y/ u3 X; G" S+ H4 j9 A
客户端下载' N" H3 G- j7 s* f& L2 |2 k6 b
Windows, macOS, Android, iOS 客户端: ?! l1 M5 V9 B$ ~  G/ r
https://www.wireguard.com/install/
, `* M# a" _6 Z) h6 T& H  H4 g
! @+ l. K8 C: [& n脚本使用方法2 a8 b* H: U3 O( N7 @
使用 root 用户登录系统,运行以下命令下载脚本,赋予执行权限:
9 }! `( w. ?( j, o$ S% Q8 w7 T. t$ ~
- f& [3 t' R! ?! a: z  vwget --no-check-certificate -O /opt/wireguard.sh https://raw.githubusercontent.co ... master/wireguard.sh) K  o* c( W  q  S
chmod 755 /opt/wireguard.sh9 Y$ E6 T( G4 c- C) ]5 e4 _; i
写在前面7 }  P% |3 O/ a1 |9 ~: Q' Q
WireGuard 的安装和使用条件是比较苛刻的。因此我不建议在生产系统里安装和使用 WireGuard,除非你知道自己在做什么。
. O+ A8 z" J) \  x它依赖于内核,也就是 kernel,在不同的系统中,内核,内核源码包,内核头文件必须存在且这三者版本要一致。
& V: ^6 a; J$ qRedHat,CentOS,Fedora,Oracle Linux,Amazon Linux 等 rpm 系的名字是 kernel,kernel-devel,kernel-headers。
+ W, z/ }1 b6 P: q# rDebian,Ubuntu 等 deb 系的名字是 kernel,linux-headers。
! K5 [- }8 J* e, I  o& N如果这三者任一条件不满足的话,则不管是从代码编译安装还是从 repository 直接安装,也只是安装了 wireguard-tools 而已。
: e7 G) t' ~$ T而 WireGuard 真正工作的部分,是 wireguard-dkms,也就是动态内核模块支持(DKMS),是它将 WireGuard 编译到系统内核中。7 Q  l$ \" l" v
因此,在某些 VPS 商家,是需要你先自主更换系统内核,并事先将这三者安装好,才有可能不会出现编译或安装失败。, I6 C5 Z4 w+ x9 J; g) z

# l. Z. o/ h8 O9 {. I% D% w我在测试的时候,就经历过各种内核的问题导致的安装失败。如果你也遇到了同样的问题,建议先更换内核。
& y& j6 h' e' A& q  @. K就我个人的体验而言,在 CentOS 7 下更换为 elrepo 的内核是最容易的。这里有个脚本,可以更换到最新版内核,且自动开启 BBR 网络传输算法。, r( r* x: z( f( w4 ]/ S
一键安装最新内核并开启 BBR 脚本
& v* d, C% c* e+ h: i) c此脚本运行后,最后会提示你重启系统,此时可以输入 n,暂不重启。手动安装 kernel-headers,运行如下命令:
/ b) L; e( H& t# R2 A- z: N' m: H$ U9 c" m- j7 |5 }9 r0 l. e; X( V
yum -y install kernel-ml-headers
/ X, L4 I: R4 z' c然后再重启之。运行如下命令:
, [; D) t& O( X2 k4 X$ z  o6 x, K% J) D( S0 Z# T1 R
reboot4 O' z( u0 d: A) {* V
重启后进入系统,运行下面的从代码编译安装 WireGuard,基本上就不会出现安装失败的问题了。, l8 G/ g1 w. Y0 `$ L1 C; K2 C
注意:自主更换内核后,我建议使用从代码编译安装 WireGuard。
0 \! G5 ?$ q: {6 F& J5 w. T, [$ k$ ~
更新日志
+ \, p2 m1 `  m: e9 A1 G2020 年 4 月 2 日:" D0 f9 Q5 j$ ?
Linux 内核 5.6 正式发布了,内置了 wireguard module。, \2 M0 f' J! B# D/ o
本次更新添加了检测系统内核版本,如果大于等于 5.6 则不安装 wireguard module,仅安装 wireguard tools,然后再生成默认配置。
8 |0 I5 K' Z' Y2 ?6 M当系统内核小于 5.6 时,则依然安装 wireguard module 和 tools,并生成默认配置。
, C1 l" \0 W8 }! a8 H
: d3 I- q1 e* z( A+ a; y$ B2020 年 1 月 6 日:/ l/ u. q# }8 I* h4 ?
一个好消息是 WireGuard 即将要合并到内核 5.6 里面了。
+ V4 G8 e3 `" \, ?于是作者在近期把 repo 改名了,从而导致脚本无法获取到正确的版本号。
) ^" T2 K& R$ {并且还把原来的 repo 一分为二了,分别改为 wireguard-linux-compat 和 wireguard-tools。前者是内核模块,后者是命令行工具。
& j9 H; x/ Y+ H! h此次更新就是修复了以上问题。
9 _( k6 x" Y' K" K& z7 B  u8 ^
* n! f' k# }/ q. N2019 年 11 月 16 日:
# @2 R8 Q* T- R( M2 z( ]/ I1、修正客户端配置文件创建时的各参数顺序,与 Windows 客户端的显示顺序一致。9 y! x) [3 v1 }) J2 ]' ?8 `! n7 M
2、新增 Windows 客户端配置示例说明。
% F' _" I+ `# R0 Q. E1 s- m( V; ^4 X2 V/ |( _
2019 年 10 月 27 日:3 v8 D7 D: K+ w! ~2 Z9 }
1、新增卸载函数,使用方法请参考下面的卸载方法。
6 I& Y  \0 y; w& r. i" Q2、支持在 CentOS8 下从 repository 安装,或者从代码编译安装。
$ F2 N* Q$ z5 D* K( O
7 I3 r7 W# [- X3 X3 j从代码编译安装 WireGuard0 ?9 G+ @$ {* \" c! n: K- e* |
/opt/wireguard.sh -s
& @+ M) {- F, I* n从 repository 直接安装 WireGuard3 I+ T- l2 m: A3 t& T
/opt/wireguard.sh -r
" q& t5 S+ H6 N/ m8 s4 G1 g安装完成后,脚本提示如下3 t2 H3 C; x' U8 ]3 |
WireGuard VPN Server installation completed
+ [3 N% C! f4 X! I  P6 D* RWireGuard VPN default client file is below:0 t" z: Z6 M; m( [. _
/etc/wireguard/wg0_client( H! x5 H1 M, r# N6 n7 a& X
WireGuard VPN default client QR Code is below:$ S6 {7 v+ Q- G
/etc/wireguard/wg0_client.png' v  J4 {* a+ a! c/ h: H- M
Download and scan this QR Code with your phone- {# n" e* L8 `) l
Welcome to visit: https://teddysun.com/554.html( k8 e1 ~- n% U2 z0 P
Enjoy it( {" k2 R7 W4 t" F- z& s6 U
卸载方法
8 x) ]& F; r, |$ \5 n/opt/wireguard.sh -n
8 L- I2 T. @; w  c: d其他使用选项! n7 L5 o( k6 j) J' ~' f/ {! m
查看已安装 WireGuard 版本号
( l# i& R% V4 }$ v' e8 S; B1 o1 I# d- Z  e2 A8 H
/opt/wireguard.sh -v2 x: G/ d2 n) T  @& u
编译升级 WireGuard 到当前最新版本, ~, Y# \1 T9 J; p' b7 p1 h4 O

3 O" n+ G8 U4 T. a2 ?& H/opt/wireguard.sh -u
6 c+ R  t  x% S+ I6 e! a2 n* l新增 WireGuard 客户端配置
0 n) X) m9 v+ a. m; I0 p  }  a2 L- b9 M# {
/opt/wireguard.sh -a7 B7 W5 k$ Q, M( I3 [# g3 I; t
删除 WireGuard 客户端配置2 ?* v6 d# u% d1 `. n0 Q
注意:默认客户端 wg0 不允许删除! f  `' |  x& Y2 B3 a# U, w- K

: w! x# s# Z4 n, @( {( y7 t( U/opt/wireguard.sh -d
) m4 B* h* c8 Q% a列出 WireGuard 客户端配置
, v! j1 A; n9 r: ?+ t+ [
1 E  h) I, X: P7 k* P) q2 v/opt/wireguard.sh -l
5 p- O. [& V% G5 H高级用法
& L7 [- J  y! `如果你在安装时,需要自定义自己想要的端口,那么可以 export 变量 VPN_SERVER_WG_PORT 的值,这样脚本就会读取这个变量值来定义监听端口,而不会自己随机生成。
& B4 K5 r; a4 p8 y! R比如你想自定义端口为 1234,那么具体做法就是,在执行从代码编译安装 WireGuard 或者从 repository 直接安装 WireGuard 之前,运行如下命令:8 K3 K! R. l! D5 ~1 M/ C
6 q8 U6 t2 E$ F9 g
export VPN_SERVER_WG_PORT=1234
% ]" z/ B  V0 C. {( U下面是一份脚本里用到的变量列表名(共计 11 个),以及它们具体代表什么含义的说明。
& p3 t1 s- g) c  {: \+ `VPN_SERVER_PUB_IPV4,定义服务器公网 IPv4,如果你的服务器端存在多个可用公网 IPv4,指定此变量的值。
1 ]) W+ `5 ~4 g/ j- [/ E7 MVPN_SERVER_PUB_IPV6,定义服务器公网 IPv6,如果你的服务器端存在多个可用公网 IPv6,指定此变量的值。1 s$ g  a8 x6 W6 N. D7 p
VPN_SERVER_PUB_NIC,定义服务器默认网卡名称,如果你的服务器有多个可用网卡,指定此变量的值。9 w: Y$ Q; m7 q; [' f9 ~. ^0 y
VPN_SERVER_WG_NIC,定义 WireGuard 网卡名,默认为 wg0,这里一般不推荐指定此变量的值。: K" |+ [* d% p0 H! X3 f2 a
VPN_SERVER_WG_IPV4,定义 WireGuard 服务端的内网 IPv4,默认为 10.88.88.1,这里一般不推荐指定此变量的值。6 B3 R2 Y( t7 }6 g& ^
VPN_SERVER_WG_IPV6,定义 WireGuard 服务端的内网 IPv6,默认为 fd88:88:88::1,这里一般不推荐指定此变量的值。( i5 \+ z& P- v
VPN_SERVER_WG_PORT,定义器 WireGuard 服务端的监听端口,默认为从 1024 到 20480 随机生成,如果你想自定义端口,指定此变量的值。
3 d" p! [! M" ~' h) RVPN_CLIENT_WG_IPV4,定义 WireGuard 默认客户端的内网 IPv4,默认为 10.88.88.2,这里一般不推荐指定此变量的值。
/ `7 V+ p- Q  [- JVPN_CLIENT_WG_IPV6,定义 WireGuard 默认客户端的内网 IPv6,默认为 fd88:88:88::2,这里一般不推荐指定此变量的值。
' K7 d% C2 q) [1 l( U+ I# i! F7 iVPN_CLIENT_DNS_1,定义 WireGuard 默认客户端的 DNS,默认为 1.1.1.1,如果你想自定义为别的 DNS,指定此变量的值。
: H# I% A- z( L- {8 P- ~6 i# ?VPN_CLIENT_DNS_2,定义 WireGuard 默认客户端的 DNS,默认为 8.8.8.8,如果你想自定义为别的 DNS,指定此变量的值。7 T0 F& |5 m. p  ~; c0 B' {" A

/ B0 X: N9 r* o. gWindows 客户端配置
+ ^& _( S4 N3 s5 B下载,安装,打开客户端软件,点击 Add Tunnel -> Add empty tunnel…  V7 J# S2 x( g7 X; W
WireGuard 一键安装脚本
2 U5 @- \) `. B# x9 {. n! @
6 R" [+ F) \; R此时出现一个可以编辑的界面,将脚本生成的客户端配置 /etc/wireguard/wg0_client 里的内容复制出来,粘贴,保存。  f3 p5 n) J6 r0 j( ]7 a7 d
WireGuard 一键安装脚本  g6 e) @  |# ^* O: g# e" X

; V* U; E" e5 J) OWireGuard 一键安装脚本0 n$ M* _5 R$ [! o5 h9 d/ w
. {! m( z  G9 \" T) K4 O  F& i# ~
点击 Activate,就可以 VPN 连接了。" K0 W- i9 h: N: [- I
WireGuard 一键安装脚本
( m! s2 q. {, h" Q. J
+ t0 O8 a# c; R& S1 {; h6 ]7 O参考链接: d3 m5 ^3 r" x7 @5 `6 O
https://www.wireguard.com# X; q" I9 j- a- f, r. F* ?
https://github.com/WireGuard/WireGuard
2 n$ Q; e: X/ `5 ?2 ^7 _https://git.zx2c4.com/WireGuard
: C$ Z0 J+ Q6 k0 `6 Ihttps://golb.hplar.ch/2019/07/wireguard-windows.html
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-7 08:01 , Processed in 0.089466 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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