多用户多网络拓扑下的VPN部署方案咨询
多用户多网络拓扑下的VPN部署方案咨询
网络拓扑说明
- Site A(主网络):我完全掌控所有设备,通过带有静态公网IP和绑定域名的Router A接入互联网。
- Site B(外部用户网络):用户外出时连接的任意网络(比如公共WiFi、家庭网络、移动热点等),除了用户自己的设备(例如Endpoint B)外,我无法控制该网络内的其他设备;Router B采用动态IP配置,开启NAT和防火墙,不允许非已建立的入站连接。
- Site C/D(第三方受控网络):包含我管理的无人值守设备(如Endpoint C1/C2、D1/D2),设备间通过交换机互联,需要24小时不间断可访问且无需本地操作。每个站点有一台设备(C1对应Site C,D1对应Site D)通过本地路由器连接互联网,该路由器为动态IP,开启NAT和防火墙,同样不允许非已建立的入站连接。另外,不同次级网络可能使用相同子网(比如Site C和Site D都用192.168.254.0/24),存在IP冲突风险,必须严格隔离。
终端设备类型:以Linux为主(尤其是次级网络里的设备),也有部分Windows客户端。
需求目标
- 授权的外部用户设备(如Endpoint B)能够连接到主网络(比如访问内网NAS)。
- 授权用户无论身处主网络内(如Endpoint A1)还是外部网络(如Endpoint B),都能连接到指定的次级网络(Site C或Site D)。
- 用户的访问授权基于身份/设备,而非连接位置:例如用户1可访问Site C和Site D,用户2仅能访问Site D;且用户2无论在Site A还是Site B都能正常访问Site D。
- 单个用户可被授权访问多个次级网络,但同一时间仅能连接其中一个。
- 支持多个用户同时连接同一个次级网络。
- 对用户进行某次级网络的授权/取消操作时,无需在该次级网络的设备上做任何配置修改。
现有思路与疑问
已明确的初步方案(对应需求1)
我认为第一个需求用任意支持点到站点连接的VPN就能解决,目前正在主网络的Host A上部署WireGuard,配合Router A的端口转发,按我的理解这应该足以实现第一个目标。
待确认的次级网络访问方案(对应需求2)
针对第二个需求我目前还没完全理清,正在探索的思路如下:
以Host A(通过Router A暴露到公网)或者单独的外部VPS作为中心节点,搭建星型(Hub-Spoke)拓扑:
- 所有终端都能连接到这个中心节点(因为它拥有公网IP)。
- 利用WireGuard的
PersistentKeepalive选项,让次级网络的终端穿透NAT,维持与中心节点的持久连接。 - 在Host A上为每个次级网络创建独立的WireGuard网卡,各自绑定不同端口,并配置从物理网卡到各个WireGuard网卡的IP转发规则。
- 为每个“用户-网络”的授权组合生成专属配置(次级网络的终端也需要对应配置)。
- 用户通过连接Host A的特定端口,即可访问对应的次级网络。
但我对这个方案的正确性和细节还有疑问:
- 这个方案是否可行?有没有更优的替代方案?
- 换成OpenVPN这类其他VPN软件会不会让实现更简单?
- 如果采用这个方案,有没有开源免费的自托管工具可以简化多网卡和用户凭证的管理工作?
非常感谢任何能提供建议的朋友,哪怕是很小的提示也会对我有很大帮助!
备注:内容来源于stack exchange,提问作者Bonvi
相关产品推荐
相关产品推荐

