必须先加载wireguard模块、创建wg0网卡、分配ip并启用接口,再注入密钥;否则wg set会因接口未up而报“operation not supported”。

要在Linux上配置一个轻量级、即开即用的WireGuard虚拟网卡,必须绕过传统服务化部署的冗余步骤,直接用内核原生接口创建并注入配置——这样既不依赖systemd服务管理,也不生成持久化配置文件,适合临时测试、CI环境或嵌入式场景。
创建并配置wg0虚拟网卡
第一步:加载WireGuard内核模块(若未加载)
sudo modprobe wireguard
第二步:创建名为wg0的WireGuard类型网卡
sudo ip link add dev wg0 type wireguard
第三步:为wg0分配虚拟IP并启用接口
sudo ip address add dev wg0 10.200.200.1/24 && sudo ip link set up dev wg0
这一步必须在设置密钥前完成,否则wg set命令会报“Operation not supported”——因为wg仅接受已存在且UP状态的接口。若跳过ip link set up,后续所有配置都将静默失败。
注入密钥与Peer连接参数
方法一:单行注入(推荐用于脚本)
sudo wg set wg0 private-key
方法二:分步配置(便于调试)
sudo wg set wg0 private-key /dev/stdin
sudo wg set wg0 peer yZFuuK7u0/Yrtotgs/keq2tmogbCA0c+btolxo2tmDQ= allowed-ips 10.200.200.2/32 endpoint 192.168.1.100:51820 persistent-keepalive 25
【allowed-ips必须精确匹配目标客户端虚拟IP】写成10.200.200.0/24会导致路由表污染,写成0.0.0.0/0则劫持全部流量——此处仅需通信对端单IP。
验证隧道是否就绪
执行以下命令查看握手状态:
sudo wg show wg0
若输出中包含latest handshake时间戳(如“2 minutes ago”),且transfer值持续增长,说明加密隧道已双向打通;若仅有endpoint但无handshake,检查UDP 51820端口是否被防火墙拦截,或对方Peer未运行wg-quick。
最后测试连通性:
ping -c 3 10.200.200.2











