我正在尝试从 tx.py 程序进行通信,以将数据包 (UDP) 向下发送到图中所示的设备 1 和设备 2。目前,我们的 2 个虚拟机上运行 OpenVPN 客户端,如果我在这些虚拟机上运行 tx.py,我可以与连接到该 vpn 隧道的每个设备进行良好通信(因此我可以从 vm2 访问设备 1,但不能访问设备 2) .
我希望能够从 vm1 进行路由,以便可以从该中心位置发送到设备 1 或设备 2。我尝试在 vm1 上添加一条路由到设备 1(通过 VM 2),route add -net 100.64.226.0 netmask 255.255.255.0 gw 10.2.6.20 dev eth0
但仍然无法在设备 1 上接收数据包。还尝试为 vm1 和 vm2 切换 ip 转发,但这并没有解决它。
这样做的方法是什么?
请注意,我不需要从设备与 vm1 进行备份通信。
注意:我不控制 openVPN 服务器,也不能在那里更改配置。
据我所知,如果不更改 Openvpn 服务器配置,这是不可能的。
我已经使用基于证书的身份验证实现了类似的场景,并且它正在工作。我假设这是一个道路-warriro 设置,而不是一个站点到站点的连接。这意味着,VPN 服务器只知道单个客户端,而不知道其他试图通过同一客户端连接的机器。从安全的角度来看,这对我来说也很有意义。
现在,如果更多机器需要通过客户端计算机连接,它将充当网关,这可以在 Openvpn 服务器上进行配置。可以在此处找到有关设置的详细说明:
扩展 VPN 的范围以包括客户端或服务器子网上的其他机器。
请参阅:使用路由 VPN 时在客户端包括多台机器(dev tun)
您需要使用连接到 10.2.6.0 子网的路由表来设置用户定义的路由,以便 Azure 知道通过 10.2.6.20 路由到 10.64.226.0 以及设备 2 的类似路由。您仍然需要确保路由(IP 转发) 功能在 Azure 网络适配器、操作系统网络适配器和操作系统路由表(双向)中启用。
https://docs.microsoft.com/en-us/azure/virtual-network/manage-route-table
https://petri.com/implementing-azure-user-defined-routing
网上有很多示例,主要与下一代防火墙(即强制 Azure 路由通过您的防火墙设备)和 Hyper-V(即设置 Azure 以通过虚拟 Hyper-V 主机路由到内部 Hyper-V 网络)有关。