背景分析
有时在组网中,多台主机本身处于同一物理网络,也在同一局域网下,想访问一个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
为例配置
-
在
接口
中添加wg接口wire
,配置本机IP地址为192.168.7.129/24
(在局域网外,wg网内)。 -
将该接口加入新的防火墙区域,默认接受入站出站,拒绝转发。
-
添加允许
lan
转发到wire
,wire
转发到lan
。
-
配置欲访问
peer
,将允许IP设为peer的ip+wg大网段,并勾选路由允许的IP,具体如下图。由于最长掩码匹配原则,新增加的192.168.7.0/24
路由表项并不会将局域网IP路由到wire
,而是按正常路径(未配置wg网时的路径)转发,只有在访问超出小网范围的地址时才匹配wg网,保证了正常的网络通信不受影响。
-
编辑
peer
的wg.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
- 配置成功,可以
ping
检测一下了。