标签:# wireguard

wireguard 原理与基本使用

WireGuard 的核心是一个名为 Cryptokey Routing 的概念,它的工作原理是将公钥与隧道中允许的隧道 IP 地址列表相关联。每个网络接口(interface)都有一个私钥和一个 peer list。每个 peer 都有一个公钥。公钥既短又简单,被 peer 用来互相验证。它们可以通过任何带外方法在配置文件中传递,类似于将其 SSH 公钥发送给朋友以访问 shell 服务器。

由于每个节点都有自己的公钥和私钥,实际上就建立了公钥和节点之间的一一映射。当 wg0 需要向外发送的包的时候,会查这个表来找到正确的公钥。当接收到一个外部的包的时候,会根据公钥来检查是否是合法的目标 IP。

当一个 Peer 发过来一个包,并且通过了验证之后,路由表就会记录下对方的外部地址,这样当需要给对方发包的时候,就可以直接通过这个地址发送了。同时,如果对方切换了网络,那么路由表就会跟着新的包更新,也就是 WireGuard 支持“漫游”。