wireguard如何在linux系统上安装

 火.. [复制链接]  102查看
易西 发表于 2025-9-12 18:12:38 | 显示全部楼层 |阅读模式
wireguard如何在linux系统上安装
 楼主| 易西 发表于 2025-9-12 18:13:47 | 显示全部楼层
https://cloud.tencent.com/developer/article/1985792
参考
$ sudo apt install wireguard
 楼主| 易西 发表于 2025-9-12 18:15:11 | 显示全部楼层
https://www.02405.com/archives/11850
参考

关闭防火墙
关闭 Linux 服务器的自带防火墙,使用iptables来管理端口转发。
注意如果你的服务器是类似阿里云、腾讯云等服务商提供,还需要登录控制台的防火墙,开放一个UDP端口,本文以45678为例。请再三确认该端口已正常开放,你可以使用nc命令或者其他在线检测工具来测试服务器已正常开放该UDP端口。

systemctl stop firewalld
systemctl disable firewalld
# CentOS 7 关闭防火墙命令
# Ubuntu, Debian 请自行搜索关闭命令
开启服务器转发
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
安装官方 WireGuard
访问 WireGuard 官网,本文以CentOS 7为例,由于CentOS 7内核太老,官方推荐了三种安装方式,其中第一种需要安装推荐的内核才能支持使用 WireGuard,如果安装内核会影响你其他的服务,可以选择其他两种方式。

yum install -y yum-utils epel-release
yum-config-manager --setopt=centosplus.includepkgs=kernel-plus --enablerepo=centosplus --save
sed -e 's/^DEFAULTKERNEL=kernel$/DEFAULTKERNEL=kernel-plus/' -i /etc/sysconfig/kernel
yum install -y kernel-plus wireguard-tools
# 安装 kernel-plus 内核和官方 wireguard-tools
reboot
# 安装完毕需重启
创建公钥私钥
WireGuard的服务端或客户端都必须用单独的公钥私钥来进行鉴权,所以参考以下命令格式,为各设备创建对应的公钥私钥。其中预共享密钥属于可选配置。

cd /etc/wireguard/
umask 077
# 设置目录默认权限
wg genpsk > sharekey
# 可选,生成预共享密钥
wg genkey > server.key
wg pubkey < server.key > server.key.pub
# 服务器的公钥私钥
wg genkey > iphone.key
wg pubkey < iphone.key > iphone.key.pub
# iPhone 的公钥私钥
wg genkey > ipad.key
wg pubkey < ipad.key > ipad.key.pub
# iPad 的公钥私钥
wg genkey > macos.key
wg pubkey < macos.key > macos.key.pub
# MacBook 的公钥私钥
其中.key为私钥,.key.pub为公钥,可以使用cat server.key命令获取。

配置服务端
执行以下命令获取当前服务器默认网卡的名称,用于配置iptabls的流量转发。一般情况下网卡名称有可能为eth0,ens192,ens3等等。本文示例为ens192。

ifconfig
# 获取网卡信息
创建wg0.conf服务器配置文件

# 依旧在 /etc/wireguard 目录下执行
vi wg0.conf
# 复制以下参考配置
以下参考配置可以自行修改

[Interface] 区域为服务器端。
[Interface] – PrivateKey 为上文创建的服务器端私钥,即server.key。
Address 为服务端的内网 IP,可以自行选择例如192.168.0.1或10.0.0.1,但是需注意请勿和服务器所在内网网段冲突,例如博主家内网网段为 192.168.1.X,这台 CentOS 7 服务器的内网 IP 为 192.168.1.15,则不能使用 192.168.1.X 该网段。
ListenPort 为服务端口,需在防火墙开放此端口的UDP访问,或进行路由器端口映射。
DNS 服务器自行选择。
PostUp 为启动命令的 iptabls 配置,注意需要修改 ens192 为你的服务器网卡名。
PostDown 为停止命令的 iptabls 配置,注意需要修改 ens192 为你的服务器网卡名。
[Peer] 为客户端配置,必须为每个客户端分别配置。
[Peer] – PublicKey 为上文创建的客户端公钥,即macos.key.pub。
AllowedIPs 为该客户端指定 IP,注意不要和其他客户端冲突。
PresharedKey 为预共享密钥,根据上文可选设置。
# 服务端配置
[Interface]
PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Address = 10.0.0.1
ListenPort = 45678
DNS = 114.114.114.114
MTU = 1420

PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens192 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens192 -j MASQUERADE


########### 以下为各个客户端信息 ###########
# macOS
[Peer]
PublicKey =  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AllowedIPs = 10.0.0.2/32
PresharedKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
PersistentKeepalive = 25

# iPhone
[Peer]
PublicKey =  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AllowedIPs = 10.0.0.3/32
PresharedKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
PersistentKeepalive = 25

# iPad
[Peer]
PublicKey =  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AllowedIPs = 10.0.0.4/32
PresharedKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
PersistentKeepalive = 25
启动服务
执行以下命令启动服务,并设置开机自动启动。

systemctl enable wg-quick@wg0
# 设置开机自动启动
wg-quick up wg0
# 启动
wg-quick down wg0
# 停止
客户端
客户端的配置文件其实相对简单,但是最重要是的AllowedIPs这一项路由信息需要根据你实际需求来设置,以下以iPhone客户端的配置为例:

由于此配置为客户端iPhone使用,[Interface]则为iPhone的相关配置,[Peer]则为服务端也就是CentOS 7的服务器相关信息。
Address 为该iPhone的内网 IP,对应上述服务端配置,此处iPhone的 IP 应为10.0.0.3。
[Interface] – PrivateKey 为上文创建的iPhone 的私钥,即iphone.key。
DNS 服务器自行选择。
[Peer] 为服务端的配置信息
[Peer] – PublicKey 为服务端公钥,即server.key.pub。
AllowedIPs – 为路由信息,本文0.0.0.0/0则代表全局代理转发。下文具体讲解。
PresharedKey 为预共享密钥,根据上文可选设置。
Endpoint = 为服务端的 IP 和端口,也可以使用域名加端口。
# 客户端配置 示例 iPhone
[Interface]
Address = 10.0.0.3/32
PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DNS = 114.114.114.114

# 服务端配置
[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AllowedIPs = 0.0.0.0/0
PresharedKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Endpoint = xxx.xxx.xxx.xxx:45678
PersistentKeepalive = 25
AllowedIPs
AllowedIPs 其实可以理解为路由,根据需求不同设置也不同。

全局代理 / iPhone / iPad
由于 iPhone / iPad 在使用 WireGuard 时是无法使用其他代理软件,如果家中的网络环境已经可以科学上网,或者 WireGuard 部署在境外公网服务器上,则可以设置AllowedIPs = 0.0.0.0/0进行全局代理网络,此时该 iPhone / iPad 可以访问包括家庭内网、WireGuard 的内网、以及其他任何国内和国外网站,并且都是以 WireGuard 这台服务器的 IP 访问。

内网代理 / macOS
如果在家中 CentOS 7 部署了 WireGuard,希望通过 WireGuard 回家访问内网设备,而其他互联网访问,科学访问可以使用 macOS 本身的网络和软件实现,那么 AllowedIPs 则只需要设置家庭内网 IP 网段。
例如博主家为192.168.1.X网段,WireGuard 的网段为上文设置的10.0.0.X,AllowedIPs 可以设置为 AllowedIPs = 192.168.1.0/24, 10.0.0.0/24,此时将可以访问家庭内网的NAS等设备,以及WireGuard自身的10.0.0.X网段,例如另外一台Windows电脑连入这个WireGuard也可以被访问。然而其他网段和互联网,科学上网都将由 macOS 当前所在的网络配合 Surge 等其他代理软件去访问。

推荐 / 两个配置文件
虽然AllowedIPs = 0.0.0.0/0全局代理更为方便,但是正常的互联网访问都要通过服务端代理,网络速度取决于服务器端的上行速率,而且服务器在境外,访问大陆网络体验更差,肯定是没有当前本地网络好,所以只有访问内网的需求,则只配置内网网段即可。当然最完美的方案是为一台设备创建多个配置文件用于不同需求和场景,例如macos.conf和macos.global.conf两个配置文件,其中 IP,公钥私钥等参数均可完全一样,仅仅只是AllowedIPs路由不同。使用时自行切换即可。

参考
 楼主| 易西 发表于 2025-9-12 18:40:14 | 显示全部楼层
在Linux系统上安装WireGuard主要包括内核版本检查、安装WireGuard工具、配置网络转发以及生成密钥对等步骤。以下是具体安装流程:

内核版本要求
WireGuard需要Linux内核版本5.6以上,若系统内核版本较低需先升级。可通过uname -r命令查看当前内核版本
1
2。

安装步骤
‌开启IPv4转发功能‌
编辑/etc/sysctl.conf文件,添加以下内容并生效:

bash
Copy Code
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.proxy_arp = 1" >> /etc/sysctl.conf
sysctl -p
此步骤确保数据包转发功能启用
1
2。

‌升级内核(仅限低版本内核)‌
对于CentOS 7等低内核版本系统,需手动升级内核。例如下载并安装ELRepo提供的最新内核:

bash
Copy Code
wget http://ftp.sjtu.edu.cn/sites/elr ... 7.elrepo.x86_64.rpm
rpm -ivh kernel-ml-6.5.7-1.el7.elrepo.x86_64.rpm
grub2-set-default 'CentOS Linux (6.5.7-1.el7.elrepo.x86_64) 7 (Core)'
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot
重启后验证内核版本是否升级成功
1
2。

‌安装WireGuard工具‌
根据不同发行版选择安装命令:

‌CentOS/RHEL‌:
bash
Copy Code
yum install epel-release https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
yum install kmod-wireguard wireguard-tools -y
‌Ubuntu/Debian‌:
bash
Copy Code
sudo apt-get install wireguard
安装完成后,WireGuard工具(如wg和wg-quick)将可用
1
2。

‌生成密钥对‌
创建配置文件目录并生成公私钥:

bash
Copy Code
mkdir -p /etc/wireguard && chmod 0777 /etc/wireguard
cd /etc/wireguard
umask 077
wg genkey | tee server_privatekey | wg pubkey > server_publickey
wg genkey | tee client_privatekey | wg pubkey > client_publickey
私钥需严格保密,公钥用于对端配置
3
8。

配置与启动
‌服务端配置‌:编辑/etc/wireguard/wg0.conf,包含接口IP、监听端口及对端公钥等信息
3
8。
‌客户端配置‌:类似服务端,需指定服务端公网IP和端口
3。
‌启动服务‌:使用wg-quick up wg0启动,systemctl enable wg-quick@wg0设置开机自启
3
8。
注意事项
若使用防火墙(如firewalld),需放行WireGuard的UDP端口
10。
组网时需确保各节点的AllowedIPs配置正确,以实现流量路由
1
3。


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

本版积分规则

邮箱|首页|小黑屋|吾侪 ( 蜀ICP备2020029307号-4 )

GMT+8, 2026-8-3 06:27 , Processed in 0.061751 second(s), 22 queries .

Powered by Discuz! X3.5

Copyright © , 吾侪网

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