你的位置:首页 > 互联网IT
WireGuard,WireGuard安装,WireGuard部署与使用,docker部署wg-easy,WireGuard-UI管理平台,基于Centos 8的wireguard安装,WireGua
WireGuard,WireGuard安装,WireGuard部署与使用,docker部署wg-easy,WireGuard-UI管理平台,基于Centos 8的wireguard安装,WireGuard一键安装脚本,WireGuard网页管理
系统:Centos 8
软件:WireGuard,wg-easy,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》
wg-easy项目:https://github.com/WeeJeWel/wg-easy
https://github.com/wg-easy/wg-easy/pkgs/container/wg-easy
项目中文docker部署wg-easy:https://gitcode.com/gh_mirrors/wg/wg-easy/overview
https://gitee.com/hawlly/wireguard?skip_mobile=true
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/wg-easy
参考文章:https://gitcode.com/gh_mirrors/wg/wg-easy/overview
1. 安装Docker
如果您尚未安装Docker,请执行以下命令进行安装:
命令
curl -sSL https://get.docker.com | sh
sudo usermod -aG docker $(whoami)
解决报错: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
个错误表明 Docker 客户端无法与 Docker 守护程序通信。这可能有几种原因:
Docker 守护程序未运行: 您需要确保 Docker 守护程序正在后台运行。可以使用以下命令来启动 Docker 守护程序:
命令
sudo service docker start
或者 sudo systemctl start docker
检查Docker安装成功没有
命令
Docker
配置文件将保存在~/.wg-easy目录下。
命令
mkdir ~/.wg-easy
cd ~/.wg-easy
下载配置文件docker-compose.yml
命令
本地模板
wget https://m.012.ooo/xiazai/linux/docker-compose.yml
项目模板
wget https://raw.githubusercontent.com/WeeJeWel/wg-easy/master/docker-compose.yml
修改文件
命令
vim docker-compose.yml
安装命令
docker compose up --detach
参考文章:https://blog.csdn.net/step_chen/article/details/142596614
必须知道的事情
PASSWORD_HASH
PASSWORD_HASH=$$2a$$12$$31H.ZEl74tEF98shuIWWxe2PTsljr3vEMRfU7HL8dPvNJTImcUgRq
这是密码为123456的哈希值,参见 How_to_generate_an_bcrypt_hash.md 来了解如何获取这个哈希值,当你登录到wg-easy配置web界面时,123456将是你的密码。但现在的方法有一点问题,所以可以用以下命令代替:
sudo docker run -it ghcr.io/wg-easy/wg-easy /app/wgpw.sh 123456
1
如果上述命令的输出是:
PASSWORD_HASH='$2a$12$31H.ZEl74tEF98shuIWWxe2PTsljr3vEMRfU7HL8dPvNJTImcUgRq'
因为我们使用的是docker compose yaml文件,需要将每个$符号替换为两个$$符号。所以在yaml中的PASSWORD_HASH应为:
PASSWORD_HASH=$$2a$$12$$31H.ZEl74tEF98shuIWWxe2PTsljr3vEMRfU7HL8dPvNJTImcUgRq
记得用一个更强的密码替换简单的123456。
配置文件本地模板:https://m.012.ooo/xiazai/linux/docker-compose.yml
配置文件模板下载:https://zgdl.lanzouw.com/iYyND2e04zvc
用ssh的上传文件
建立:docker-compose.yml 文件
完整内容如下:
services:
wg-easy:
container_name: wg-easy
image: ghcr.io/wg-easy/wg-easy
network_mode: bridge
environment:
- # or en, de ...
- WG_HOST=www.baidu.com
- WG_DEFAULT_DNS=223.5.5.5,1.1.1.1,8.8.8.8
- PORT=7000
- WG_DEFAULT_ADDRESS=10.0.0.x
- WG_PORT=7001
- WG_PRE_UP = iptables -t nat -F; iptables -F; # Flush all rules
- WG_POST_UP=iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
- WG_POST_DOWN=iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
- WG_ALLOWED_IPS=0.0.0.0/0,::/0
- WG_PERSISTENT_KEEPALIVE=25
- PASSWORD_HASH=HASH=$$2a$$12$$31H.ZEl74tEF98shuIWWxe2PTsljr3vEMRfU7HL8dPvNJTImcUgRq
- UI_TRAFFIC_STATS=true
- UI_CHART_TYPE=3 # (0 Charts disabled, 1 # Line chart, 2 # Area chart, 3 # Bar chart)
# - WG_ENABLE_ONE_TIME_LINKS=true
- UI_ENABLE_SORT_CLIENTS=true
# - WG_ENABLE_EXPIRES_TIME=true
volumes:
- /mnt/appdata/wgeasy:/etc/wireguard
ports:
- 7000:7000/tcp
- 7001:7001/udp
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
- net.ipv4.ip_forward=1
restart: unless-stopped
docker-compose.yml 文件注释说明
services:
wg-easy:
container_name: wg-easy
image: ghcr.io/wg-easy/wg-easy
network_mode: bridge
environment:
- # or en, de ...
- WG_HOST=www.baidu.com (这里填写域名或者服务器公网IP)
- WG_DEFAULT_DNS=223.5.5.5,1.1.1.1,8.8.8.8 (客户端默认DNS,默认即可)
- PORT=7000 (Web UI,端口,默认即可)
- WG_DEFAULT_ADDRESS=10.0.0.x (组网局域网IP,默认即可)
- WG_PORT=7001 (WireGuard,服务器端口)
- WG_PRE_UP = iptables -t nat -F; iptables -F; # Flush all rules
- WG_POST_UP=iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE (开启VPN代理上网,这一行规则允许访问服务器的内网,注意替换`eth0`)
- WG_POST_DOWN=iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE (取消VPN代理上网,这一行规则允许访问服务器的内网,注意替换`eth0`)
- WG_ALLOWED_IPS=0.0.0.0/0,::/0 (10.0.0.0/24 指定要访问的服务端网段,或者设置0.0.0.0/0来进行全局代理.)
- WG_PERSISTENT_KEEPALIVE=25 (客户端检测活动,默认25即可)
- PASSWORD_HASH=HASH=$$2a$$12$$31H.ZEl74tEF98shuIWWxe2PTsljr3vEMRfU7HL8dPvNJTImcUgRq (默认密码:123456,密码为123456的哈希值,注意:需要将每个$符号替换为两个$$符号)
- UI_TRAFFIC_STATS=true
- UI_CHART_TYPE=3 # (0 Charts disabled, 1 # Line chart, 2 # Area chart, 3 # Bar chart)
# - WG_ENABLE_ONE_TIME_LINKS=true
- UI_ENABLE_SORT_CLIENTS=true
# - WG_ENABLE_EXPIRES_TIME=true
volumes:
- /mnt/appdata/wgeasy:/etc/wireguard
ports:
- 7000:7000/tcp (监听的 TCP 端口,与上面设置相同,Web UI,端口)
- 7001:7001/udp (监听的 UDP 端口,与上面设置相同,服务器端口)
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.conf.all.src_valid_mark=1 (开启内核转发功能,默认即可)
- net.ipv4.ip_forward=1 (开启内核转发功能,默认即可)
restart: unless-stopped
注意:.wg-easy 文件夹是隐藏文件夹,ssh打开显示隐藏文件夹
上传docker-compose.yml文件到 .wg-easy 文件夹
命令
cd
mkdir ~/.wg-easy
cd ~/.wg-easy
上传docker-compose.yml到.wg-easy 文件夹
安装命令
docker compose up --detach
如果安装失败,运行 docker compose up 可以看到是什么问题原因
docker compose up
查看在docker内安装成功命令
docker image
查看在docker内安装运行情况命令
docker ps -a
这里建议重启一下docker命令
systemctl restart docker
浏览器打开
此时,Web UI可通过http://0.0.0.0:7000访问,http://域名或者IP:7000
默认密码:123456
新建客户端
下载客户端文件,或者扫二维码
docker容器本身开机自动运行
因为守护程序通信问题,需要添加rc.local,才开机自动启动
个错误表明 Docker 客户端无法与 Docker 守护程序通信。这可能有几种原因:
Docker 守护程序未运行: 您需要确保 Docker 守护程序正在后台运行。可以使用以下命令来启动 Docker 守护程序:
命令
sudo service docker start 或者 sudo systemctl start docker
开机自动启动,然后打开文件/etc/rc.d/rc.local 添加:sudo service docker start
sudo service docker start
增加脚本执行权限
chmod +x /etc/rc.d/rc.local
重启就可以自动运行了
配置选项
这些选项可以通过在docker run命令中使用-e KEY="VALUE"来设置。
环境变量默认值示例描述
PORT518216789Web UI的TCP端口。
WEBUI_HOST0.0.0.0localhostWeb UI绑定的IP地址。
PASSWORD-yourpassword设置后,在登录Web UI时需输入该密码。
WG_HOST-example.vpn.com您的VPN服务器公共主机名。
WG_DEVICEeth0ens3WireGuard流量转发的以太网设备。
WG_PORT5182012345您的VPN服务UDP公开端口。
WG_MTUnull1420客户端使用的MTU大小。
WG_PERSISTENT_KEEPALIVE025保持“连接”开启的时间(秒),设为0则不维持连接。
WG_DEFAULT_ADDRESS10.8.0.x10.10.0.x客户端IP地址范围。
WG_DEFAULT_DNS1.1.1.18.8.8.8,8.8.4.4客户端将使用的DNS服务器。空白表示不设置。
WG_ALLOWED_IPS0.0.0.0/0,::/0192.168.1.0/24,10.0.0.0/24客户端允许的IP范围。
WG_PRE_UP见配置文件默认值-配置脚本,容器启动前执行。
WG_POST_UP见配置文件默认值iptables ...容器启动后执行的脚本。
WG_PRE_DOWN见配置文件默认值-容器停止前执行的脚本。
WG_POST_DOWN见配置文件默认值iptables ...容器停止后执行的脚本。
LANGenzh-CNWeb UI的语言选项。
UI_TRAFFIC_STATSfalsetrue在Web UI中启用详细收发流量统计。
UI_CHART_TYPE01图表类型:0-图表关闭,1-折线图,2-区域图,3-柱状图。
如果修改了WG_PORT,记得同样更改暴露的端口配置。
环境变量 | 默认值 | 示例 | 描述 |
---|---|---|---|
PORT | 51821 | 6789 | Web UI的TCP端口。 |
WEBUI_HOST | 0.0.0.0 | localhost | Web UI绑定的IP地址。 |
PASSWORD | - | yourpassword | 设置后,在登录Web UI时需输入该密码。 |
WG_HOST | - | example.vpn.com | 您的VPN服务器公共主机名。 |
WG_DEVICE | eth0 | ens3 | WireGuard流量转发的以太网设备。 |
WG_PORT | 51820 | 12345 | 您的VPN服务UDP公开端口。 |
WG_MTU | null | 1420 | 客户端使用的MTU大小。 |
WG_PERSISTENT_KEEPALIVE | 0 | 25 | 保持“连接”开启的时间(秒),设为0则不维持连接。 |
WG_DEFAULT_ADDRESS | 10.8.0.x | 10.10.0.x | 客户端IP地址范围。 |
WG_DEFAULT_DNS | 1.1.1.1 | 8.8.8.8,8.8.4.4 | 客户端将使用的DNS服务器。空白表示不设置。 |
WG_ALLOWED_IPS | 0.0.0.0/0,::/0 | 192.168.1.0/24,10.0.0.0/24 | 客户端允许的IP范围。 |
WG_PRE_UP | 见配置文件默认值 | - | 配置脚本,容器启动前执行。 |
WG_POST_UP | 见配置文件默认值 | iptables ... | 容器启动后执行的脚本。 |
WG_PRE_DOWN | 见配置文件默认值 | - | 容器停止前执行的脚本。 |
WG_POST_DOWN | 见配置文件默认值 | iptables ... | 容器停止后执行的脚本。 |
LANG | en | zh-CN | Web UI的语言选项。 |
UI_TRAFFIC_STATS | false | true | 在Web UI中启用详细收发流量统计。 |
UI_CHART_TYPE | 0 | 1 | 图表类型:0-图表关闭,1-折线图,2-区域图,3-柱状图。 |
更新操作
要升级到最新版本,只需执行以下命令:
docker stop wg-easy
docker rm wg-easy
docker pull ghcr.io/wg-easy/wg-easy
随后再次运行上述docker run -d ...命令。
若使用Docker Compose,仅需一行命令即可更新WireGuard Easy: docker compose up --detach --pull always (如果Compose文件中的镜像标签非latest,请确保将其更改为所需的版本;默认情况下省略,采用latest)。若拉取到了新镜像,容器将被自动重建以应用更新。
--------------------------------------------------------------------------------
客户端配置
Windows客户端,导入dn.conf
配置文件
[Interface]
PrivateKey = SDrf+1g2UQ1VBhWaYlM1cWx/QpxveqOOgmhuuriIGEA=
Address = 10.0.0.3/24
DNS = 223.5.5.5,1.1.1.1,8.8.8.8
[Peer]
PublicKey = aKBSh37Kr3Vx6OiZnQMnX+Nm689/hgNjt6ytbUdbiws=
PresharedKey = bXhDpmhVgKrU3UhZo+x17aY3Zt9HRdXWKoneqk2pdpc=
AllowedIPs = 0.0.0.0/0,::/0
PersistentKeepalive = 25
Endpoint = www.baidu.com:7001
配置文件注释说明
[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)
[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://www.wireguard.com/
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.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://www.cnblogs.com/milton/p/15339898.html
https://cloud.tencent.com/developer/article/1780897
https://blog.csdn.net/qq_42761569/article/details/140101259
https://gitcode.com/gh_mirrors/wg/wg-easy/overview
https://blog.csdn.net/step_chen/article/details/142596614
https://www.youtube.com/watch?v=rj1yxHQj8G0
https://www.youtube.com/watch?v=W9hA31FuQSY
https://github.com/WeeJeWel/wg-easy
https://github.com/wg-easy/wg-easy/pkgs/container/wg-easy
https://www.cnblogs.com/liuyajun2022/p/17926451.html
https://gitee.com/hawlly/wireguard?skip_mobile=true
https://www.runyf.cn/archives/438/
https://yangpin.link/archives/1601.html
https://github.com/ngoduykhanh/wireguard-ui
http://116.205.174.47/2024/09/08/openwrt/wireguard/213000/
https://www.cnblogs.com/boneking/p/17903650.html
发表评论: