WireGuard的设计哲学是用更少代码、固定密码学原语和接近普通网卡的管理面,替代IPsec和OpenVPN。其核心公理包括:公钥绑定IP的cryptokey routing、管理面无状态外观、密钥分发带外进行、密码学固定不协商。它明确不覆盖L2扩展、算法协商和PKI,目标是提供认证加密的L3管道,并保持可审计性。
本文介绍Linux 6.6内核中WireGuard的实现,聚焦发送路径(wg_xmit经AllowedIPs查找选peer)、加解密worker并行队列、协议常量(如REKEY_AFTER_TIME)、握手入口及Generic Netlink配置面。强调cryptokey routing用同一trie按目的/源地址选peer,并给出源码阅读顺序,对比用户态wireguard-go,突出内核热路径避免拷贝的优势。
本文介绍WireGuard配置与故障排查。通过双netns实验验证握手与传输,强调cryptokey routing与主机路由表需一致。常见错误包括AllowedIPs过窄或过宽、FIB脱节、NAT后Endpoint问题。建议用wg show、ip route get等工具排障,并注意MTU与静默丢弃特性。不适合L2延伸、X.509合规等场景。
WireGuard以约5000行内核代码实现VPN,对比IPSec的30万行,通过Cryptokey Routing将公钥与IP绑定、固定Noise IKpsk2握手及多核并行加密,简化设计并提升安全性。它拒绝证书、算法协商等复杂机制,但适用于L3隧道场景,不适合L2桥接或需证书合规的环境。
完成下面两步后,将自动完成登录并继续当前操作。