OpenWrt WireGuard 不分配密钥 将局域网主机纳入组网 并使用路由聚合 使其能访问真正的peer

背景分析

有时在组网中,多台主机本身处于同一物理网络,也在同一局域网下,想访问一个wg网上peer的服务。如果将每台主机视为一个peer,都分别分配一个key加入wg网,则稍显繁琐。因此,考虑是否可以将局域网网关作为一个peer,转发其他局域网主机的连接请求。

最终效果

配置完成后,整体像位于同一个子网内,但实际上局域网到wg peer的通信无形之中加了一层“防火墙”,局域网主机可以用自己的IP直接与虚拟内网上的服务器通信,反之则无法实现。同时,还可以选择哪些主机能够与peer通信,哪些不能。

实现原理

  • 按照路由聚合的思想,将wg组成的网络看作一个大网,如192.168.7.0/24,将本局域网看成大网中的一个小网,如192.168.7.0/25,当然也可按需求进行更多的划分。这些小网的主机都不会在wg.conf中注册,仅通过转发与wg网通信。
  • wg网虽然看作一个大网,但实际上其地址空间不能占用任何一个小网的地址。使用大网仅是为了转发方便。
  • 如果有多个小网,则小网之间的通信理论上不受之前说的防火墙效果限制。
  • 合理配置路由聚合,即可在不配置任何额外网关节点的情况下实现通信。

实现步骤

以实现原理中的wg网192.168.7.0/24,局域网192.168.7.0/25为例配置

  1. 接口中添加wg接口wire,配置本机IP地址为192.168.7.129/24(在局域网外,wg网内)。

  2. 将该接口加入新的防火墙区域,默认接受入站出站,拒绝转发。

  3. 添加允许lan转发到wirewire转发到lan
    OpenWrt WireGuard 不分配密钥 将局域网主机纳入组网 并使用路由聚合 使其能访问真正的peer_第1张图片

  4. 配置欲访问peer,将允许IP设为peer的ip+wg大网段,并勾选路由允许的IP,具体如下图。由于最长掩码匹配原则,新增加的192.168.7.0/24路由表项并不会将局域网IP路由到wire,而是按正常路径(未配置wg网时的路径)转发,只有在访问超出小网范围的地址时才匹配wg网,保证了正常的网络通信不受影响。
    OpenWrt WireGuard 不分配密钥 将局域网主机纳入组网 并使用路由聚合 使其能访问真正的peer_第2张图片

  5. 编辑peerwg.conf,将自己的地址设为192.168.7.254/32,并添加路由器为peer,允许的IP如下。

[Peer]
PublicKey = xxx
AllowedIPs = 192.168.7.129/32
AllowedIPs = 192.168.7.0/24
; 下面填写欲允许访问的小内网IP
AllowedIPs = 192.168.7.16/32
AllowedIPs = 192.168.7.17/32
AllowedIPs = 192.168.7.xx/32
  1. 配置成功,可以ping检测一下了。

OpenWrt WireGuard 不分配密钥 将局域网主机纳入组网 并使用路由聚合 使其能访问真正的peer_第3张图片

你可能感兴趣的:(lede,net,路由器,网络规划设计,openwrt,网络协议,子网掩码)