WireGuard 现代开源 Layer3 VPN 隧道协议

laoluo
laoluo
laoluo
管理员
224
文章
0
粉丝
教程评论13阅读模式

WireGuard 简介

WireGuard 是现代开源 Layer3 VPN 隧道协议,由 Jason A. Donenfeld 开发,Linux 5.6 内核起原生内置,主打轻量、高速、低延迟,常用来异地组网、远程访问内网(NAS、服务器),替代 OpenVPN / IPsec。

法律提醒:在我国,私自搭建 VPN 用于跨境访问互联网属于违法行为,WireGuard 仅可用于企业 / 个人合法内网组网。

WireGuard 现代开源 Layer3 VPN 隧道协议

 

核心特点

  1. 代码极简:核心仅约 4000 行 C 代码,相比 OpenVPN(10 万 + 行)攻击面更小,方便安全审计
  2. 内核态运行(Linux):CPU 开销低,吞吐远高于用户态 OpenVPN,弱性能设备(软路由、ARM)优势明显
  3. UDP 无状态:默认端口51820/UDP;1-RTT 快速握手;手机 WiFi/4G 切换时隧道自动恢复(漫游友好)
  4. 固定现代加密套件(不可自选)
    • Curve25519:密钥交换
    • ChaCha20-Poly1305:数据加密 + 消息认证
    • BLAKE2s 哈希,SipHash24 哈希表密钥
  5. 密钥路由 Cryptokey Routing:类似 SSH 公钥认证,公钥绑定 IP 段(AllowedIPs),没有传统账号密码登录
  6. 跨平台:Linux、Windows、macOS、Android、iOS、OpenWrt、FreeBSD 都有官方客户端

关键概念(配置必懂)

  • Peer(对等节点):WireGuard 不分严格的 “服务端 / 客户端”,只是一端有公网 IP 作为中继,所有节点互为 peer
  • PrivateKey / PublicKey:每端生成一对公私钥,私钥自己保管,公钥分发给对端
  • AllowedIPs:最重要配置,双重作用
    1. 出站路由:匹配该 IP 段的数据包,加密发给这个 peer
    2. 入站 ACL:解密后的数据包,源 IP 必须在 AllowedIPs 内才放行
  • Endpoint:对端公网地址 + 端口(IP:51820),内网客户端不需要填写 Endpoint
  • PersistentKeepalive:NAT 环境保活,一般客户端设 25 秒

WireGuard vs OpenVPN

项目 WireGuard OpenVPN
传输 UDP,内核态 UDP/TCP,用户态
握手 1-RTT 毫秒级 多轮 TLS 握手
性能 高,CPU 占用低 较低,CPU 开销大
认证 公私钥 证书 / 账号密码
代码量 ~4k 行 ~100k 行

常见使用场景

  1. 异地内网组网:在外手机 / 电脑访问家里 NAS、监控、服务器(合法内网访问
  2. 服务器之间站点到站点 VPN(机房互联)
  3. 远程办公接入企业内网

常见排错(结合你服务器运维场景)

  1. 连不上:检查防火墙 / 安全组放行 UDP 51820,不是 TCP;检查 Endpoint 公网 IP;AllowedIPs 配置错误是最高频坑
  2. 能连接但无法 ping / 访问内网:内核 IP 转发没开启net.ipv4.ip_forward=1,缺少 iptables/nat 转发规则
  3. NAT 后不稳定:客户端加上PersistentKeepalive = 25
  4. Docker 部署 WireGuard:需要开启--cap-add=NET_ADMIN,主机内核必须支持 WireGuard 模块

快速安装(Debian/Ubuntu)

apt update && apt install wireguard wireguard-tools
# 生成密钥对
wg genkey | tee privatekey | wg pubkey > publickey

配置文件默认路径 /etc/wireguard/wg0.conf,启动命令:

wg-quick up wg0
wg-quick down wg0
wg #查看实时peer状态

 

 
laoluo
  • 本文由 laoluo 发表于2026年9月14日 08:26:12
  • 转载请务必保留本文链接:https://www.mydata-api.com/tutorials/534.html
匿名

发表评论

匿名网友
确定

拖动滑块以完成验证