保留OpenVPN客户端子网的源IP地址

我configuration了一个在Azure中运行的OpenVPNnetworking10.8.0.0/24(networkingA)。 Linux虚拟机的IP为10.1.0.4,位于Azure的10.1.0.0/24networking中(networkingB)。 我也configuration了一个路由器作为一个OpenVPN客户端与自己的子网192.168.1.0/24(networkingC)。

在Azure中,有一个IP地址为10.1.0.5的Windows Server虚拟机。 在远程路由器上有一个ip 192.168.1.223的设备。

所以总结我有这些networking:

  • 10.8.0.0/24(OpenVPNnetworking)
  • 10.1.0.0/24(Azure虚拟networking)
  • 192.168.1.0/24(远程路由器的局域网)

而这些设备:

  • 10.1.0.5(Azure中的Windows Server VM)
  • 10.1.0.4(Azure中的Linux VM / OpenVPN服务器)
  • 10.8.0.3(路由器作为OpenVPNnetworking上的客户端)
  • 192.168.1.223(路由器局域网上的设备)

我已经设置了路由表,以便IP 192.168.1.223上的设备和IP 10.1.0.5上的Windows Server VM可以相互通信。 这是完美的工作。

当我想将SNMP陷阱(UDP 162)从设备发送到Windows Server VM时,会发生此问题。 数据包通过源IP 10.8.0.3(OpenVPNnetworking上的路由器IP)接收。 我想让SNMP数据包到达192.168.1.223设备的源IP,这是它们的实际来源。

在远程路由器的client.conf文件中可以使用一些POSTROUTING规则或configuration吗?

我能够通过查看路由器configuration来解决这个问题。 我使用的路由器是Teltonika RT950,它是基于Linux的,具有内置的stream量规则,允许源NATconfiguration以及良好的OpenVPN支持。

通过在从局域网到VPN的端口162(OpenVPN客户端configuration在路由器中显示为一个单独的区域)中添加将SNAT IP 192.168.1.223分配给UDP数据包的规则,Windows Server接收到的数据包现在将源IP设置为192.168.1.223。