我有一台 Ubuntu 服务器(172.10.200.11)和许多带有 SIM 卡的远程终端单元,每个 SIM 卡运营商都使用不同的 IP 池,例如 OP-A 的 IP 池为 10.57.0.0/16,OP-B 的 IP 池为 10.112.0.0/16,等等。
在服务器中,我实际上使用路由表来访问不同 IP 池上的远程终端单元。没有此路由表,我无法访问 IP 池。例如:10.57.0.0/16 使用网关 172.10.238.1 10.112.0.0/16 使用网关 172.10.238.2 10.155.0.0/16 使用网关 172.10.238.3
和...
实际上,我正在使用“Cisco VPN 客户端”从数据中心外部访问我的服务器 IP。为此,我使用“Cisco VPN 客户端”应用程序连接到 VPN 网关,然后尝试 ping 我的服务器的 IP 172.10.200.11
与 VPN 网关建立 VPN 连接后,我可以从笔记本电脑成功执行以下操作:
- 建立远程桌面连接服务器的IP:172.10.238.3
- 从我的笔记本电脑建立到服务器 IP 的 SSH 连接:172.10.238.3
- ICMP ping 服务器的 IP:172.10.238.3
- 跟踪路由到服务器的 IP:172.10.238.3
为了检查远程终端单元的连接(启动或关闭)状态,我通过 SSH 或远程桌面连接到服务器,然后尝试 ping 到远程终端单元的 IP 地址。
到目前为止一切都正常,但是这种方式会消耗太多带宽,特别是通过远程桌面连接时。
- 使用笔记本电脑上的“Cisco VPN 客户端”连接到 VPN 网关
- 与服务器 IP 建立远程桌面连接
- 在远程桌面连接上打开服务器中的浏览器。
- 在浏览器上输入远程终端单元(RTU)的IP(10.155.1.22)然后执行您想要的操作!
- 在远程桌面的终端屏幕或 SSH 连接会话中成功建立到 RTU 的 IP 地址 (10.155.1.22) 的 ICMP ping。
但我想做以下事情:
- 使用 Cisco VPN 客户端从笔记本电脑连接到 VPN 网关
- 在笔记本电脑上打开浏览器
- 在浏览器上输入远程终端单元的 IP(10.155.1.22)然后执行您想要的操作!
- 在我的笔记本电脑上的 shell/终端屏幕(不是远程桌面)中成功建立到 RTU 的 IP 地址(10.155.1.22)的 ICMP ping
限制:
- 其实我没有权利更改VPN网关的设置。但我只能更改服务器设置来实现这一点。
有什么办法吗?我知道有办法,但我脑子里很混乱。首先我安装了 Hamachi,但这样我就无需 VPN 连接就可以访问服务器。但我仍然无法从我的笔记本电脑直接 ping 到 RTU IP。这并没有解决我的问题。
从技术上讲,我想使用我的服务器充当“路由器”,将来自我的笔记本电脑的传入请求(ICMP 和 IP 数据包)路由/转发到 RTU 的 IP。
我研究过如何在 Ubuntu 16.04 上启用 IP MASQUERADE 或 IP FORWARDING。如果我没记错的话 - 从技术上讲 - 机器上需要 2 个 NIC 或 2 个不同的 IP。但我的服务器上只有一个 IP(绑定)。
我需要从我的笔记本电脑直接访问 RTU IP 地址,并且我的服务器应该充当路由器/网关等来实现这一点。
有谁可以一步一步地向我解释如何在 Ubuntu 上执行此操作?
答案1
您需要将10.57.0.0/16
网络等的路由添加到您的 VPN 客户端,以便通过服务器 IP 进行路由。您应该能够在 VPN 服务器设置中添加路由。我不知道如何在 Cisco VPN 服务器中添加它们的详细信息。
答案2
首先,回答您的问题:您需要向您的笔记本电脑添加一条路由,说明到您的 OP 网络的流量必须发送到 VPN 服务器,然后 VPN 服务器会将其路由到正确的网关。
当你的笔记本电脑建立VPN连接时,必须添加如下路由:
- route add 10.57.0.0 mask 255.255.0.0 gw <YOUR_VPN>
- route add 10.112.0.0 mask 255.255.0.0 gw <YOUR_VPN>
中间的任何其他网关也同样如此。
同样,中间的每个网关都必须有一个将 VPN IP 范围指向 VPN 服务器的路由。简而言之,网络中的每个网关和节点都需要有一个路由表,能够将内部数据包路由到适当的节点或网关。
除此之外,如果您只想监控节点正常运行时间,我建议您使用 Icinga2,这样您就可以让服务器向每个节点发送健康检查,并在任何人不负责任时收到通知。