how-wireguard-works

WireGuard 怎么工作:SSH 化的 VPN

老一代 VPN 协议长成了配置沼泽——IPsec 什么都能协商,OpenVPN 拖着庞大的 TLS 表面——绝大多数故障和漏洞都住在协商和选项里,而不是加密本身。WireGuard 的立项决定是做减法:一套固定的现代密码套件、不协商、代码量极小、跑在内核里。 一句话概括:把 VPN 按 SSH 的手感重做一遍。

身份就是密钥对,跟 SSH 一字不差。 每个对端有一对静态公私钥;信任一个对端,就是把它的公钥列出来,跟 authorized_keys 一样。没有账号、没有证书、没有用户名。而无法认证的对端,得到的回应是沉默:WireGuard 对未认证的包一个字节都不回,扫描器眼里这台机器根本不存在。

1-RTT 握手——以及它为什么能只用一个往返。 因为双方的静态公钥预先就知道,没有东西要协商、没有身份要出示:第一个包就已经可以携带加密载荷,密钥由静态密钥加上新鲜的临时密钥推导而来(Noise_IK 模式)。对照 SSH 或 TLS 更长的开场:它们要花往返去商量算法、出示凭据。WireGuard 把一切都在配置时预先谈妥,握手一个往返收工。

密码学路由:路由表和访问名单是同一张表。 每个对端条目把一把公钥和它的允许 IP 绑在一起。出站时,这张表决定某个目的地地址该用哪把钥匙加密;入站时,解密后包的源地址必须落在该对端的允许范围内,否则丢弃。路由决策和身份核验塌缩成一次查询。

漫游是密钥身份的免费推论。 对端的端点(它当前的 IP:端口)从它发来的最后一个已认证包里学到。从办公室 Wi-Fi 切到手机热点,隧道原样存活:身份是钥匙不是地址,地址便可以随便变。

SSH 类比的边界——那句一句话概括到此为止:WireGuard 是三层(虚拟网卡,在机器之间搬 IP 包),SSH 是七层(进到一台机器上某个用户的 shell 会话)。WireGuard 跑在 UDP 上、没有连接状态;SSH 跑在有状态的 TCP 连接上。两者的亲缘在身份与克制——用钥匙代替账号、用一套代替菜单——不在它们搬运的东西。

about this entry

One of sijie's wiki entries. The AI on this site is grounded in the same corpus and answers in sijie's voice, with citations back to entries like this one — answering costs sijie money, so it waits behind a code: enter an access code →

how-wireguard-works — Sijie Wang