这是一个关于是否使用桥接或路由 OpenVPN 设置,以及如何设置连接的问题。
TLDR:
- 一个主站点,多个卫星站点。所有站点都在同一个子网上。
- 如果使用桥接模式,如何防止 VPN 上不需要的流量(带宽/数据使用受到限制)。
- 如果使用路由模式,如何将单个 IP 地址(不是子网)路由到特定的 VPN 端点?
背景:主题是一个污水处理厂,有几个(3+)个远程泵站。总部运行我们的 SCADA 系统,并拥有多个 PLC 和工作站。
每个远程泵站都有一个或多个 PLC/PanelView 单元,目前所有远程站点都利用 150MHz 无线电信号将遥测数据发送回主要位置。
由于无线电信号质量差和带宽限制,我们希望将所有站点切换为使用 4G 蜂窝数据调制解调器。
为了安全和简单,我认为最好的方法是在每个位置设置一个支持 OpenVPN 的路由器(当前使用运行 DD-WRT 最新版本的 Linksys E1200)并将它们配置为连接到总部的 OpenVPN 服务器。
但是,有一个问题:所有远程站点都使用与主站点相同的子网。这是由安装收音机的供应商设置的,显然是为了“让事情变得简单”,但这只是让我们头疼。我们无法更改 IP 地址映射,因为我们没有针对某些设备的编程软件,而且还需要在每个 PLC 中重新编程。所以我们被困在同一个子网上的所有站点。(192.168.100.x)
我的问题是:我应该为此设置使用路由还是桥接模式?
如果我使用桥接模式,我不希望 OpenVPN 桥接通过任何多余的流量(广播等),因为蜂窝调制解调器每月的数据传输限额有限。
如果我使用路由模式,如何强制 OpenVPN 仅路由适用于远程站点的特定 IP 地址?
例如:主站点:使用 192.168.100.1 - 30,也是 40+
远程站点 1:192.168.100.32-37 远程站点 2:192.168.1.31 远程站点 3:192.168.100.110-120、140
所以我们不能基于子网路由 - 但必须将单个 IP 路由到各个位置。
我将不胜感激有关此设置的任何建议。
我尝试了使用具有 255.255.255.255 子网掩码的指定路由的路由模式,但无法让流量在一个站点和主要位置之间通过。OpenVPN 连接已成功建立,但无法在它们之间 ping。
您需要使用桥接设置(除非您能够手动修改网络上所有主机/设备上的路由表)。
在正常设置中,指定在同一本地子网中的 IP 地址不会通过默认网关路由,因为该地址在接口上可直接访问。ARP 将用于获取目标主机的 MAC 地址,并且 IP 数据报将使用具有此 MAC 地址的以太网帧直接发送到网络第 2 层上的目标。
这意味着路由 OpenVPN 设置不适用于您的问题。VPN 网关甚至不会“看到”任何流量。只有满足以下所有条件,它才会发挥作用:
虽然阻止广播是可能的,但如果所有广播都被阻止,它将破坏桥接网络,因为桥接网络依赖于广播。在以太网网络上,ARP 用于广播网络中端点的 MAC 地址。
阻止某些广播,
iptables
带有模块physdev
并且可以pkttype
使用。