你的位置:首页 > 互联网IT
WireGuard,WireGuard安装,WireGuard部署与使用,WireGuard搭建,基于Centos 8的wireguard安装,WireGuard一键安装脚本,WireGuard网页管
WireGuard,WireGuard安装,WireGuard部署与使用,WireGuard搭建,基于Centos 8的wireguard安装,WireGuard一键安装脚本,WireGuard网页管理
系统:Centos 8
软件:WireGuard,wg
功能:组网,局域网,网络,vpn,代理上网
Windows客户端下载0.5.3:https://zgdl.lanzouw.com/it4Xe2eig7qj
Windows客户端下载老版本0.1.1:https://zgdl.lanzouw.com/iKSA82dzzxgf
https://download.wireguard.com/windows-client/wireguard-amd64-0.1.1.msi
android客户端下载:https://zgdl.lanzouw.com/i3HIg2eig81a
安卓客户端下载:https://zgdl.lanzouw.com/i0exz2e00irc
其它系统客户端下载:https://www.wireguard.com/install/
必应搜索:《wireguard centos 8》
WireGuard项目下载地址:https://www.wireguard.com/install/
WireGuard项目地址:https://github.com/WireGuard
准备工具:
Centos 8服务器 一台(公网IP)系统版本:CentOS Linux release 8.2.2004 (Core)
CentOS 7/8关闭防火墙
查看防火墙状态:systemctl status firewalld.service
关闭运行的防火墙:systemctl stop firewalld.service
禁止防火墙自动启动服务器:systemctl disable firewalld.service
WireGuard 快速安装教程
参考文章:https://blog.csdn.net/wq1205750492/article/details/124758941
安装前说明:
WireGuard 的安装和使用条件非常苛刻,对内核版本要求极高,不仅如此,在不同的系统中,内核,内核源码包,内核头文件必须存在且这三者版本要一致。
所以一般不建议在生成环境中安装,除非你对自己的操作很有把握。Red Hat、CentOS、Fedora 等系统的内核,内核源码包,内核头文件包名分别为 kernel、kernel-devel、kernel-headers,Debian、Ubuntu 等系统的内核,内核源码包,内核头文件包名分别为 kernel、linux-headers。
如果这三者任一条件不满足的话,则不管是从代码编译安装还是从 repository 直接安装,也只是安装了 wireguard-tools 而已。
而 WireGuard 真正工作的部分,是 wireguard-dkms,也就是动态内核模块支持(DKMS),是它将 WireGuard 编译到系统内核中。
因此,在某些 VPS 商家,是需要你先自主更换系统内核,并事先将这三者安装好,才有可能不会出现编译或安装失败。
一、升级内核
对于 Ubuntu 等 apt 系的发行版来说,不需要升级内核即可安装 WireGuard,可以略过此步骤。
如果你使用的是 CentOS 等 rpm 系的发行版,必须要升级内核,步骤如下:
1.载入公钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
2.升级安装 elrepo
# centos7
yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
# centos8
yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
3.载入 elrepo-kernel 元数据
yum --disablerepo=\* --enablerepo=elrepo-kernel repolist
4.安装最新版本的内核
yum --disablerepo=\* --enablerepo=elrepo-kernel install kernel-ml -y
5.删除旧版本工具包
yum remove kernel-tools-libs kernel-tools kernel-devel kernel-headers -y
6.安装新版本工具包
yum --disablerepo=\* --enablerepo=elrepo-kernel install kernel-ml-tools kernel-ml-devel kernel-ml-headers -y
7.查看内核插入顺序
centos7命令
grep "^menuentry" /boot/grub2/grub.cfg | cut -d "'" -f2
CentOS Linux (5.17.7-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-1160.31.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-20210623111207095151419199170789) 7 (Core)
[root@duandian yum.repos.d]#
centos8命令
grubby --info=ALL |grep title
title="Red Hat Enterprise Linux (5.17.7-1.el8.elrepo.x86_64) 8.5 (Ootpa)"
title="Red Hat Enterprise Linux (0-rescue-4cb651785e634a439e0ba4d0a9408d82) 8.5 (Ootpa)"
title="Red Hat Enterprise Linux (4.18.0-348.12.2.el8_5.x86_64) 8.5 (Ootpa)"
title="Red Hat Enterprise Linux (0-rescue-ffffffffffffffffffffffffffffffff) 8.5 (Ootpa)"
默认新内核是从头插入,默认启动顺序也是从 0 开始。
8.查看当前实际启动顺序
centos7命令
grub2-editenv list
saved_entry=CentOS Linux (3.10.0-1160.31.1.el7.x86_64) 7 (Core)
centos8 命令
grubby --default-kernel
#grubby --default-title
/boot/vmlinuz-6.11.6-1.el8.elrepo.x86_64
9.设置默认启动
centos7 命令
grub2-set-default 'CentOS Linux (5.17.7-1.el7.elrepo.x86_64) 7 (Core)'
centos8 命令
这里特别说明:grubby --set-default 上面命令返回的文件地址,修改地址
grubby --set-default /boot/vmlinuz-6.11.6-1.el8.elrepo.x86_64
10.重启检查
reboot
uname -r
二、安装 WireGuard
官方文档: Installation - WireGuard
https://www.wireguard.com/install/#installation
1.yum安装
centos7 安装
sudo yum install epel-release elrepo-release
sudo yum install yum-plugin-elrepo
sudo yum install kmod-wireguard wireguard-tools
centos8 安装
sudo yum install elrepo-release epel-release
sudo yum install kmod-wireguard wireguard-tools
------------------------------------------------------------------
2.脚本一键安装
从源码编译安装 WireGuard,只需一条命令即可。
本地安装
wget --no-check-certificate -O /opt/wireguard.sh https://m.012.ooo/xiazai/linux/wireguard.sh
原本安装
wget --no-check-certificate -O /opt/wireguard.sh https://raw.githubusercontent.com/teddysun/across/master/wireguard.sh
chmod 755 /opt/wireguard.sh
从代码编译安装 WireGuard
/opt/wireguard.sh -s
从 repository 直接安装 WireGuard
/opt/wireguard.sh -r
关于该脚本需要说明几点:
支持两种安装方式:既支持从源代码编译安装,也支持从包管理器直接安装。
脚本会创建默认的 wg0 设备,以及 wg0 的客户端配置,并生成客户端配置对应的二维码 png 图片。
脚本会修改本机防火墙设置,如果未启用防火墙,则会出现警告提示,需要手动去设置。
脚本会从 1024 到 20480 随机生成监听端口。
脚本支持新增,删除,列出客户端功能。
脚本支持查看已安装的 WireGuard 的版本号。
脚本支持从代码编译安装的方式升级 WireGuard 到当前最新版本。
如果你想自己生成配置文件,请直接将配置文件目录清空:
rm -rf /etc/wireguard/*
-----------------------------------------------------------------
2.生成密钥对
cd /etc/wireguard # 如果目录不存在请手动创建:mkdir /etc/wireguard
# 开始生成 密匙对(公匙+私匙)。
wg genkey | tee privatekey-server | wg pubkey > publickey-server # 生成服务端密钥对
wg genkey | tee privatekey-client | wg pubkey > publickey-client # 生成客户端密钥对
3.配置服务端文件
vim /etc/wireguard/wg0.conf输入以下内容:
[Interface]
Address = 10.0.0.1/24
ListenPort = 7001
PrivateKey = 6Me5Fx68rerNuvZa4jkRME7WklKe1HCz37TC/sADCEs=
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
PublicKey = BaKJe/Y4kYoyRN43AjAclAPu18XLz156eqiCJckW7AU=
AllowedIPs = 10.0.0.2/32
PresharedKey = TUuIqGhdUZZEu/gPotK3LowldAHlxDNoFR3eMl4UP7k=
PersistentKeepalive = 25
[Peer]
PublicKey = 9JfJ1sCw96nI5eHQkwtWwT2nnqyqtoPSw9fZF6evf14=
AllowedIPs = 10.0.0.3/32
PresharedKey = TUuIqGhdUZZEu/gPotK3LowldAHlxDNoFR3eMl4UP7k=
PersistentKeepalive = 25
服务器端配置文件注释说明:
[Interface]
Address = 10.0.0.1/24 # 这里指的是使用 10.100.0.1,网段大小是 24 位
SaveConfig = true
ListenPort = 7001 # 监听的 UDP 端口
PrivateKey = 6Me5Fx68rerNuvZa4jkRME7WklKe1HCz37TC/sADCEs= # < 这里填写 Server 上 privatekey 的内容 >
# 下面这两行规则允许访问服务器的内网,注意替换`eth0`,这二条是可以服务器代理上网,客户端上走服务器流量
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
# 下面这两行规则允许访问服务器的内网,注意替换`eth0`
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
# Client,可以有很多客户端 Peer
[Peer]
PublicKey = BaKJe/Y4kYoyRN43AjAclAPu18XLz156eqiCJckW7AU= # < 这里填写 Client 上 publickey 的内容 >
AllowedIPs = 10.0.0.2/32 # 这个 Peer 只能是 10.0.0.2/32
PresharedKey = TUuIqGhdUZZEu/gPotK3LowldAHlxDNoFR3eMl4UP7k= # 预共享密钥
PersistentKeepalive = 25 # 检查连接成活时间25S
# 第二个客户端配置,可以有很多客户端 Peer
[Peer]
PublicKey = 9JfJ1sCw96nI5eHQkwtWwT2nnqyqtoPSw9fZF6evf14= # < 这里填写 Client 上 publickey 的内容 >
AllowedIPs = 10.0.0.3/32 # 这个 Peer 只能是 10.0.0.2/32
PresharedKey = TUuIqGhdUZZEu/gPotK3LowldAHlxDNoFR3eMl4UP7k= # 预共享密钥
PersistentKeepalive = 25 # 检查连接成活时间25S
配置完基础参数后,,先保存设置
wg0.conf
/etc/wireguard/wg0.conf
wg-quick down wg0 #停止服务端
上传文件到/etc/wireguard/wg0.conf
wg-quick save wg0 #先保存设置,更新服务器端配置文件
4.启停服务端
wg-quick up wg0 #启动服务端
wg-quick down wg0 #停止服务端
wg #查看节点列表
wg-quick save wg0 #重载配置文件,不影响已有连接.
查看信息
接口:
# 查看系统 VPN 接口信息
ip link show wg0
# 查看 VPN 接口详细信息
wg show all
wg show wg0
地址:
# 查看 VPN 接口地址
ip address show wg0
路由
# 查看系统路由表
ip route show table main
ip route show table local
# 获取到特定 IP 的路由
ip route get 192.0.2.3
----------------------------------------------------------------
5.配置客户端文件
新建文件:wg0_client.conf
[Interface]
PrivateKey = 2MKOWa4TH2DUFrCOnxX3qtti2v4TN7osurPxYkdykXk=
Address = 10.0.0.2/24
DNS = 1.1.1.1,8.8.8.8
MTU = 1420
[Peer]
PublicKey = T1NcYU4f8W4A8MiBcvtIuoZsE8H+4GE8r2acoOoXzAk=
PresharedKey = b3xyZaUIopH2MZw81gwZ8PV8IgnU9KQLhHtAZ4oWoCg=
AllowedIPs = 0.0.0.0/0
Endpoint = www.baidu.com:7001
PersistentKeepalive = 25
配置文件注释说明
[Interface]
PrivateKey = 2MKOWa4TH2DUFrCOnxX3qtti2v4TN7osurPxYkdykXk= # 服务器端Key< 这里填写 Client 上 publickey 的内容 >
Address = 10.0.0.2/24 # 客户端 IP,与服务器配置文件一致
DNS = 114.114.114.114,8.8.8.8 # 连接后使用的 DNS, 如果要防止 DNS 泄露,建议使用内网的 DNS 服务器
MTU = 1420
[Peer]
PublicKey = T1NcYU4f8W4A8MiBcvtIuoZsE8H+4GE8r2acoOoXzAk= # 与服务器端IP地址一致的key< 这里填写 Client 上 publickey 的内容 >
PresharedKey = b3xyZaUIopH2MZw81gwZ8PV8IgnU9KQLhHtAZ4oWoCg= # 预共享密钥
AllowedIPs = 0.0.0.0/0 # 指定要访问的服务端网段10.0.0.1/24,或者设置0.0.0.0/0来进行全局代理,可以代理上外网(公网IP)
Endpoint = www.baidu.com:7001 # 服务器IP或者域名:端口 (UDP)
PersistentKeepalive = 25 # 检查连接成活时间25S
FAQ
1.无法访问服务端内网
# 开启内核转发功能
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.src_valid_mark=1" >> /etc/sysctl.conf
sysctl -p
安卓客户端,生成二维码扫描设置
打开二维码生成网站
复制配置文件生成
[Interface]
PrivateKey = 2MKOWa4TH2DUFrCOnxX3qtti2v4TN7osurPxYkdykXk=
Address = 10.0.0.2/24
DNS = 1.1.1.1,8.8.8.8
MTU = 1420
[Peer]
PublicKey = T1NcYU4f8W4A8MiBcvtIuoZsE8H+4GE8r2acoOoXzAk=
PresharedKey = b3xyZaUIopH2MZw81gwZ8PV8IgnU9KQLhHtAZ4oWoCg=
AllowedIPs = 0.0.0.0/0
Endpoint = www.baidu.com:7001
PersistentKeepalive = 25
二维码安卓客户端就可以扫描添加了
---------------------------------------------------------------------
WireGuard一键安装脚本 命令介绍
本地安装
wget --no-check-certificate -O /opt/wireguard.sh https://m.012.ooo/xiazai/linux/wireguard.sh
原本安装
wget --no-check-certificate -O /opt/wireguard.sh https://raw.githubusercontent.com/teddysun/across/master/wireguard.sh
chmod 755 /opt/wireguard.sh
从代码编译安装 WireGuard
/opt/wireguard.sh -s
从 repository 直接安装 WireGuard
/opt/wireguard.sh -r
安装完成后,脚本提示如下
WireGuard VPN Server installation completed
WireGuard VPN default client file is below:
/etc/wireguard/wg0_client
WireGuard VPN default client QR Code is below:
/etc/wireguard/wg0_client.png
Download and scan this QR Code with your phone
Welcome to visit: https://teddysun.com/554.html
Enjoy it
卸载方法
/opt/wireguard.sh -n
其他使用选项
查看已安装 WireGuard 版本号
/opt/wireguard.sh -v
编译升级 WireGuard 到当前最新版本
/opt/wireguard.sh -u
新增 WireGuard 客户端配置
/opt/wireguard.sh -a
删除 WireGuard 客户端配置
注意:默认客户端 wg0 不允许删除
/opt/wireguard.sh -d
列出 WireGuard 客户端配置
/opt/wireguard.sh -l
高级用法
如果你在安装时,需要自定义自己想要的端口,那么可以 export 变量 VPN_SERVER_WG_PORT 的值,这样脚本就会读取这个变量值来定义监听端口,而不会自己随机生成。
比如你想自定义端口为 1234,那么具体做法就是,在执行从代码编译安装 WireGuard 或者从 repository 直接安装 WireGuard 之前,运行如下命令:
export VPN_SERVER_WG_PORT=1234
下面是一份脚本里用到的变量列表名(共计 11 个),以及它们具体代表什么含义的说明。
VPN_SERVER_PUB_IPV4,定义服务器公网 IPv4,如果你的服务器端存在多个可用公网 IPv4,指定此变量的值。
VPN_SERVER_PUB_IPV6,定义服务器公网 IPv6,如果你的服务器端存在多个可用公网 IPv6,指定此变量的值。
VPN_SERVER_PUB_NIC,定义服务器默认网卡名称,如果你的服务器有多个可用网卡,指定此变量的值。
VPN_SERVER_WG_NIC,定义 WireGuard 网卡名,默认为 wg0,这里一般不推荐指定此变量的值。
VPN_SERVER_WG_IPV4,定义 WireGuard 服务端的内网 IPv4,默认为 10.88.88.1,这里一般不推荐指定此变量的值。
VPN_SERVER_WG_IPV6,定义 WireGuard 服务端的内网 IPv6,默认为 fd88:88:88::1,这里一般不推荐指定此变量的值。
VPN_SERVER_WG_PORT,定义器 WireGuard 服务端的监听端口,默认为从 1024 到 20480 随机生成,如果你想自定义端口,指定此变量的值。
VPN_CLIENT_WG_IPV4,定义 WireGuard 默认客户端的内网 IPv4,默认为 10.88.88.2,这里一般不推荐指定此变量的值。
VPN_CLIENT_WG_IPV6,定义 WireGuard 默认客户端的内网 IPv6,默认为 fd88:88:88::2,这里一般不推荐指定此变量的值。
VPN_CLIENT_DNS_1,定义 WireGuard 默认客户端的 DNS,默认为 1.1.1.1,如果你想自定义为别的 DNS,指定此变量的值。
VPN_CLIENT_DNS_2,定义 WireGuard 默认客户端的 DNS,默认为 8.8.8.8,如果你想自定义为别的 DNS,指定此变量的值。
--------------------------------------------------------------------------------
客户端配置
Windows客户端,导入dn.conf
配置文件
[Interface]
PrivateKey = 2MKOWa4TH2DUFrCOnxX3qtti2v4TN7osurPxYkdykXk=
Address = 10.0.0.2/24
DNS = 1.1.1.1,8.8.8.8
MTU = 1420
[Peer]
PublicKey = T1NcYU4f8W4A8MiBcvtIuoZsE8H+4GE8r2acoOoXzAk=
PresharedKey = b3xyZaUIopH2MZw81gwZ8PV8IgnU9KQLhHtAZ4oWoCg=
AllowedIPs = 0.0.0.0/0
Endpoint = www.baidu.com:7001
PersistentKeepalive = 25
配置文件注释说明
[Interface]
PrivateKey = SDrf+1g2UQ1VBhWaYlM1cWx/QpxveqOOgmhuuriIGEA= (服务器key与客户端相同的key)
Address = 10.0.0.3/24 (局域网IP)
DNS = 223.5.5.5,1.1.1.1,8.8.8.8 (DNS)
MTU = 1420
[Peer]
PublicKey = aKBSh37Kr3Vx6OiZnQMnX+Nm689/hgNjt6ytbUdbiws= (服务器key与客户端相同的key)
PresharedKey = bXhDpmhVgKrU3UhZo+x17aY3Zt9HRdXWKoneqk2pdpc= (服务器key与客户端相同的key)
AllowedIPs = 0.0.0.0/0,::/0 (10.0.0.0/24,192.168.10.0/32 指定要访问的服务端网段,或者设置0.0.0.0/0来进行全局代理.)
PersistentKeepalive = 25 (存活检测时间25)
Endpoint = www.baidu.com:7001 (服务器或者IP:端口)
安卓客户端,扫我二维码
电脑与安卓就可以互相通信了
客户端配置文件设置成:0.0.0.0/0,::/0 VPN就可以代理上网了
AllowedIPs = 0.0.0.0/0,::/0 (10.0.0.0/24,192.168.10.0/32 指定要访问的服务端网段,或者设置0.0.0.0/0来进行全局代理.)
参考来源:https://github.com/WireGuard
https://www.wireguard.com/install/
https://www.itwordsweb.net/archives/wireguard
https://blog.csdn.net/wq1205750492/article/details/124758941
https://www.cnblogs.com/lemonup/p/17804757.html
https://www.cnblogs.com/jonnyan/p/14110061.html
https://www.cnblogs.com/milton/p/15339898.html
https://www.henrychang.ca/how-to-setup-wireguard-vpn-server-on-windows/
https://golb.hplar.ch/2019/07/wireguard-windows.html
https://www.skyone.host/2024/wireguard-configure
https://blog.csdn.net/qq_42761569/article/details/140101259
https://cloud.tsyidc.com/service/1109.html
https://github.com/Safe3/firefly?tab=readme-ov-file
https://github.com/Safe3/firefly/blob/main/README_CN.md
https://github.com/Safe3/firefly/releases
https://www.cnblogs.com/liuyajun2022/p/17926451.html
https://gitee.com/hawlly/wireguard?skip_mobile=true
https://www.cnblogs.com/boneking/p/17903650.html
https://www.runyf.cn/archives/438/
发表评论: