WireGuard_实践_2台机_3台机_连接测试

osnosn / 2023-07-30 / 原文

WireGuard_实践_2台机_3台机_连接测试

转载注明来源: 本文链接 来自osnosn的博客,写于 2023-07-29.

参考文档

  • 【彻底理解 WireGuard 的路由策略】
  • 【Wireguard 全互联模式(full mesh)配置指南】
  • 【Wireguard 全互联模式(full mesh)配置指南】
  • 【WireGuard 官网 installation】

OpenWRT

  • op-21.02, op-22.03, opkg install luci-app-wireguard 即可,相关依赖都会装齐。重启整个op系统,才生效。

    • 在 Network -> Interface -> "Add new interface" 创建一个新接口。 (2023-07测)
      Name: 写 "wg0",大小写都可以。小写就可以了。无需用大写。
      • "General Setting" 中,
        Protocol 选择 WireGuard.
        Bring up on boot 勾上。
        Private key 生成一个。
        IP Addresses 设置一个自定义IP (和LAN,WAN,不冲突的网段),如"192.168.23.3/24"。
        • 如果填写 "192.168.23.3/32",则两机连接后,可能会ping不通。
      • "Advanced Settings" 中,
        Use default gateway 不勾。
        Use DNS servers advertised 不勾。
      • "Firewall Settings" 中,创建一个叫 WG0 的 zone。
      • "DHCP Server" 中,不设置DHCP服务。
      • "Peers" 中,先不动。后面再添加。
    • 点击创建/保存。
    • 在 Network -> Firewall 中,检查新创建的zone "WG0" 的设置为,
      Input: accept;
      Output: accept;
      Forward: reject 或 drop;
      Masquerading:不勾。
  • 设置 peer,需要对方 服务端的pubkey,以及preshared key。
    如果gui的网页上有,则可以在网页上copy。如果没有,要用命令行生成。
    "echo '私钥' | wg pubkey" 获取私钥对应的 公钥
    "wg genpsk > psk_txt" 生成一个新的 预共享密钥
    "wg show" 可以看到当前系统的 服务端公钥,已经配置的peer公钥
    以下两个命令,用于更换 服务端密钥:
    "wg genkey > prikey" 生成一个新的 私钥
    "wg pubkey < prikey > pubkey" 获取私钥对应的 公钥

  • 两台机器用wireguard连接,需要双方 互相添加peer。
    A机,添加peer,公钥写 B机的服务端公钥。预共享密钥填写同一个。
    B机,添加peer,公钥写 A机的服务端公钥。预共享密钥填写同一个。
    peer 中 Private Key 是用来生成配置文件的,不用于连接。留空(op-22.03)。

  • op-21.02 添加 peer: (2023-07测)

    • 在 Network -> Interface 中,"Edit" 编辑刚才创建的 "WG0"接口。
      在 peer 选项卡中,"Add peer" 添加一个peer。
      Description: 自定义名称。
      Public Key: 对方的 服务器公钥,可以在对方机器中,用 "wg show"查看。
      Preshared Key: 预共享密钥,可以用 "wg genpsk" 生成一个。双方填同一个。
      Allowed IPs: 一定要填, 至少填对方wg的IP。如 "192.168.23.5/32"。不写的话,连接后ping不到对方。
      Route Allowed IPs: 一定要勾上。不勾的话,连接后ping不到对方。
      Endpoint Host: 对方的IP。如果对方在nat后面,连接不上,则留空。
      Endpoint Port: 对方的UDP监听口。如果对方的IP留空,则留空。
      Persistent Keep Alive: 要填一个非零值, 如 "40"。否则不会主动连接。(不知道要等多久,或者等什么触发条件)。如果对方的IP留空,则留空。
  • op-22.02 添加 peer: (2023-07测)

    • 在 Network -> Interface 中,"Edit" 编辑刚才创建的 "WG0"接口。
      在 peer 选项卡中,"Add peer" 添加一个peer。
      多了两个选项,其他的选项和 op-21.03 一样。
      Private Key: 是用来生成peer配置文件,不用于连接。可以留空。就是配置内容需要有个prikey,写这里,用于抄到配置文件"[interface]"中的。
      Configuration Export: 如果填了 "private key" 就可以点击它,生成peer的配置文件。
  • 注意,如果改动了 WG 的配置,或者是添加/修改了 peer的配置。
    保存/apply后,没效果。可以尝试 restart 这个 wg0 的接口。

  • 2台机测试 (2023-07测)

    A B
    IP 192.168.23.6/24 23.7/24
    公钥 A-pub B-pub
    peer1 B-pub A-pub
    allow IPs 23.7/32 23.6/32
    或 23.0/24 或 23.0/24

    allow IPs, 用 "/32" 或 "/24" 都可以。

  • 3台机测试,A机做网关。

    A B C
    IP 192.168.23.6/24 23.7/24 23.8/24
    公钥 A-pub B-pub C-pub
    peer1 B-pub A-pub
    allow IPs 23.7/32 23.6/32, 23.8/32
    或 23.0/24
    peer2 C-pub A-pub
    allow IPs 23.8/32 23.6/32, 23.7/32
    或 23.0/24
  • 3台机测试,全部互联。 (2023-07测)

    A B C
    IP 192.168.23.6/24 23.7/24 23.8/24
    公钥 A-pub B-pub C-pub
    peer1 B-pub A-pub A-pub
    allow IPs 23.7/32 23.6/32 23.6/32
    peer2 C-pub C-pub B-pub
    allow IPs 23.8/32 23.8/32 23.7/32

    如果某个连接断了,对应的IP就会访问失败。访问不会绕行。

----end----



.