服务器
安装
Bash
# Ubuntu/Debian
sudo apt update && sudo apt install -y wireguard
# CentOS/RHEL 8+
sudo dnf install -y wireguard-tools
# Fedora
sudo dnf install -y wireguard-tools
# Arch Linux
sudo pacman -S wireguard-tools生成密钥对(服务端 + 客户端通用)
Bash
# 生成服务端密钥对(会在当前目录生成 privatekey 和 publickey 文件)
wg genkey | tee privatekey | wg pubkey > publickey
# 生成客户端密钥对(示例,客户端也可自行生成)
wg genkey | tee client_privatekey | wg pubkey > client_publickey创建服务端配置文件
在 /etc/wireguard/ 目录下新建配置文件 wg0.conf(wg0 为网卡名,可自定义),内容如下:
conf
[Interface]
PrivateKey = 服务端privatekey文件内容 # 粘贴步骤2生成的服务端私钥
Address = 10.0.0.1/24 # 服务端在VPN内的IP(自定义网段,如10.0.0.0/24)
ListenPort = 51820 # WireGuard监听端口(需在服务器防火墙/安全组开放)
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
# 说明:PostUp/PostDown用于配置路由转发,eth0需替换为服务器的公网网卡名(用ip addr查看)
[peer]
PublicKey = 客户端公钥
AllowedIPs = 10.0.0.2/32, 10.0.0.0/24
# [peer] 第二个
开启 IP 转发并启动服务
Bash
# 临时开启IP转发(重启后失效)
sudo sysctl -w net.ipv4.ip_forward=1
# 永久开启IP转发(编辑sysctl配置)
sudo echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sudo sysctl -p
# 开放端口
sudo ufw allow 51820/udp # Ubuntu用ufw
# 若用firewalld(CentOS):sudo firewall-cmd --add-port=51820/udp --permanent && sudo firewall-cmd --reload
# 启动WireGuard服务并设置开机自启
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0客户端
安装(同上)
生成密钥对
Bash
# 生成客户端私钥和公钥(会在当前目录生成文件)
wg genkey | tee client_privatekey | wg pubkey > client_publickey
# 查看私钥(配置客户端用)
cat client_privatekey
# 查看公钥(提供给服务端,添加到服务端的[Peer]配置中)
cat client_publickey创建客户端配置文件
在 /etc/wireguard/ 目录下新建配置文件(如 wg0.conf),内容如下
conf
[Interface]
PrivateKey = 客户端私钥 # 步骤1生成的 client_privatekey 内容
Address = 10.0.0.2/24 # 客户端在VPN内的IP(与服务端同网段,如10.0.0.0/24)
DNS = 8.8.8.8 # 可选,指定VPN内的DNS服务器(避免解析问题)
[Peer]
PublicKey = 服务端公钥 # 服务端的 publickey 内容
Endpoint = 1.2.3.4:51820 # 服务端公网IP:端口(如阿里云ECS的公网IP和51820端口)
AllowedIPs = 10.0.0.0/24 # 客户端通过VPN访问的网段:0.0.0.0/0表示所有流量走VPN;若只访问服务端内网,填192.168.1.0/24等
PersistentKeepalive = 25 # NAT环境下保持连接(防止超时断开,单位:秒)启动与关闭客户端
Bash
# 启动WireGuard客户端(指定配置文件)
sudo wg-quick up /etc/wireguard/wg0.conf
# 若配置文件在/etc/wireguard/目录下,可简化为:
sudo wg-quick up wg0 # 自动识别 /etc/wireguard/wg0.conf
# 启用自启(基于systemd的系统,如Ubuntu 16.04+/CentOS 7+)
sudo systemctl enable wg-quick@wg0
# 关闭
sudo wg-quick down wg0
# 日志查看
sudo journalctl -u wg-quick@wg-client -f
这是一份礼物