wg能跑起来不代表虚拟局域网能通,密钥、地址段、路由、防火墙缺一不可;ubuntu/debian只需安装wireguard-tools,它提供wg和wg-quick命令,不包含内核模块(5.6+已内置),避免安装旧版wireguard包。

wg 能跑起来,不代表虚拟局域网能通——安装只是第一步,密钥、地址段、路由、防火墙缺一不可。
Ubuntu/Debian 直接装 wireguard-tools 就够用
绝大多数情况下,apt install wireguard-tools 足够,它不包含内核模块(5.6+ 内核已内置),只提供 wg 和 wg-quick 命令。别装 wireguard 包(旧版会冲突)。
sudo apt update && sudo apt install wireguard-tools -y- 验证:
wg --version输出版本号即成功 - 检查内核支持:
lsmod | grep wireguard,无输出也不代表失败——现代发行版默认启用 - 如果系统是 Ubuntu 20.04 之前或内核 linux-modules-extra-$(uname -r)
wg0.conf 里 Address 段写错就全盘不通
客户端和服务器的 Address 必须在同一个子网,且不能重叠物理网段。常见错误是客户端也写 /24,结果和自己真实网卡 IP 冲突。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 服务器(中继节点):用
Address = 10.8.0.1/24—— 表示整个网段归属它 - 客户端(如笔记本):用
Address = 10.8.0.100/32—— 只给自己分配一个 IP,避免路由混乱 -
AllowedIPs是关键:客户端写AllowedIPs = 10.8.0.1/32表示“只把发往服务器虚拟 IP 的包送进隧道”,写成0.0.0.0/0就会劫持全部流量
PostUp/PostDown 不配,跨网段访问直接失败
WireGuard 本身不转发、不 NAT,纯靠用户配置补足。没配 iptables 规则,客户端即使连上,也 ping 不通服务器后端服务。
- 服务器必须开 IP 转发:
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf && sudo sysctl -p - 典型
PostUp:iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE -
eth0要换成你服务器实际的外网网卡名(用ip route | grep default确认) - 若用
nftables(如较新 Fedora),iptables规则无效,得换对应语法
启动后 wg 显示 peer,但 ping 不通?先查这三处
握手成功(wg 输出有 latest handshake)≠ 网络层连通。很多问题卡在链路中间。
- 客户端
AllowedIPs是否包含你要访问的目标 IP?比如想访问服务器内网192.168.1.100,就得写AllowedIPs = 192.168.1.100/32或对应网段 - 服务器防火墙是否放行 UDP
51820端口?sudo ufw allow 51820/udp(Ubuntu)或sudo firewall-cmd --add-port=51820/udp --permanent(RHEL系) - 客户端执行
sudo ip route show table 125(wg-quick 默认用 custom table 125),确认路由表是否真把目标 IP 指向了wg0
AllowedIPs 和 PostUp 规则的组合逻辑比看上去复杂得多,尤其多跳或双出口场景下,很容易漏掉某条隐式路径。别依赖“看起来连上了”,每个环节都得单独验证。










