Linux服务器安装配置WireGuard

2026-04-21 11:41:39 3083

Linux服务器安装配置WireGuard

欢迎来到蓝队云技术小课堂,每天分享一个技术小知识。


WireGuard 是一款轻量、快速、安全的现代 VPN 协议。以下是在主流 Linux 发行版(Ubuntu/Debian、CentOS/RHEL/Rocky)上安装、配置服务端与客户端的完整教程。

一、安装 WireGuard

内核要求:Linux 内核 ≥ 5.6 已内置 WireGuard 模块;旧内核需安装 wireguard-dkms。

1. Ubuntu / Debian

# 更新源并安装

sudo apt update

sudo apt install -y wireguard wireguard-tools

# 验证模块加载(可选)

sudo modprobe wireguard

lsmod | grep wireguard

2. CentOS 8+/RHEL 8+/Rocky Linux 9

# 启用 EPEL 源

sudo dnf install -y epel-release

# 安装

sudo dnf install -y wireguard-tools kmod-wireguard

# 验证

sudo modprobe wireguard

lsmod | grep wireguard

3. CentOS 7(旧内核)

# 安装 EPEL 和 ELRepo

sudo yum install -y epel-release

sudo yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm

# 安装 WireGuard

sudo yum install -y kmod-wireguard wireguard-tools

# 加载模块

sudo modprobe wireguard


二、服务端配置(VPS / 有公网 IP 机器)

1. 开启 IP 转发(必须)

# 临时生效

sudo sysctl -w net.ipv4.ip_forward=1

# 永久生效

echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf

sudo sysctl -p

2. 生成密钥对

# 创建配置目录

sudo mkdir -p /etc/wireguard

cd /etc/wireguard

# 生成私钥、公钥(权限 600)

umask 077

wg genkey | sudo tee privatekey | wg pubkey | sudo tee publickey

3. 编写服务端配置 /etc/wireguard/wg0.conf

[Interface]

# 服务端私钥(cat privatekey)

PrivateKey = 服务端私钥

# VPN 内网地址(自定义)

Address = 10.0.0.1/24

# 监听端口(默认 51820/UDP)

ListenPort = 51820

# NAT 转发(eth0 改为你的外网网卡名,用 ip a 查看)

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

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

4. 防火墙放行 UDP 51820

ufw (Ubuntu/Debian)

sudo ufw allow 51820/udp

sudo ufw reload

firewall-cmd (CentOS/RHEL)

sudo firewall-cmd --permanent --add-port=51820/udp

sudo firewall-cmd --reload

5. 启动并设置开机自启

# 启动

sudo wg-quick up wg0

# 开机自启

sudo systemctl enable wg-quick@wg0

# 查看状态

Wg


三、客户端配置(Linux/Windows/macOS/ 手机)

1. 客户端生成密钥

cd /etc/wireguard

umask 077

wg genkey | tee client_privatekey | wg pubkey | tee client_publickey

2. 客户端配置 /etc/wireguard/wg0.conf

[Interface]

PrivateKey = 客户端私钥

Address = 10.0.0.2/24  # 同网段唯一IP

[Peer]

# 服务端公钥(cat /etc/wireguard/publickey)

PublicKey = 服务端公钥

# 服务端公网IP:端口

Endpoint = 123.123.123.123:51820

# 全部流量走 VPN(0.0.0.0/0)或仅内网(10.0.0.0/24)

AllowedIPs = 0.0.0.0/0

# NAT 穿透保活(客户端必加)

PersistentKeepalive = 25

3. 服务端添加客户端 Peer

在服务端 wg0.conf 追加:

[Peer]

# 客户端公钥

PublicKey = 客户端公钥

# 客户端VPN IP

AllowedIPs = 10.0.0.2/32

重启服务端:

sudo wg-quick down wg0

sudo wg-quick up wg0

4. 客户端启动

sudo wg-quick up wg0

# 自启

sudo systemctl enable wg-quick@wg0


四、常用命令

# 查看连接状态

wg

# 启停接口

wg-quick up wg0

wg-quick down wg0

# 查看日志

journalctl -u wg-quick@wg0 -f


五、常见问题

连不上

检查防火墙 / 安全组是否放行 UDP 51820

核对公钥、Endpoit IP: 端口、AllowedIPs

连上但无法上网

服务端已开启 net.ipv4.ip_forward=1

检查 PostUp/PostDown 网卡名是否正确(eth0/ens3/eth1)

NAT 后客户端连不上

客户端加 PersistentKeepalive = 25


蓝队云官网上拥有完善的技术支持库可供参考,大家可自行查阅,更多技术问题,可以直接咨询。同时,蓝队云整理了运维必备的工具包免费分享给大家使用,需要的朋友可以直接咨询。

更多技术知识,蓝队云期待与你一起探索。


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: