在托管环境中,我们无法控制路由器,我们只有一个内部网络和一个 DMZ 网络,每个网络内都有一个主机。DMZ 中有一个运行 Openswan 的 RHEL 服务器,它终止了通往另一个站点的 IPsec VPN 隧道。
内部网络中的系统需要访问隧道另一端的系统。其思路是在内部主机上创建一条路由,指向 DMZ 主机作为网关,以到达隧道另一端的主机。
根据研究,似乎我无法在与我没有直接连接的另一个子网中设置网关。情况确实如此吗?有什么方法可以解决这个问题吗?
这是我在内部主机上运行的命令:
route add -host $hostOnOtherSideOfVPN gw $hostInDMZ dev eth0
我可以毫无问题地访问 DMZ 中的主机(ICMP、telnet 等)。有人能给我指明正确的方向吗?
答案1
终端设备(非路由器)的路由基于 3 条信息,即您的 IP 地址、子网掩码和默认网关。主机对 IP 地址和子网掩码进行计算,以确定哪些 IP 是“本地”的,哪些 IP 应发送到默认网关进行进一步处理。因此,您的默认网关必须与您位于同一子网,否则配置根本不起作用。
答案2
通过在默认网关中添加到该网络的路由,您可以通过默认网关获得到其他网络的路由。因此,流量将通过特定路由而不是默认路由(此时默认路由将是路由器的默认网关)。
所以你需要的是这个:
本地 LAN--->DG--->DMZ 主机--->本地 VPN 端点--->远程 VPN 端点--->远程 LAN
这可以通过在 DG 中添加一条路由到本地 DMZ VPN 端点的远程 LAN 路由来实现。然后,本地 DMZ VPN 端点应该在其路由表中有一个到远程 LAN 的路由(它可能已经通过 VPN 连接存在)。
答案3
您可以在 $DMZHost 和 $RemoteHost(s) 之间设置 SSH 反向代理,但根据您需要在另一端访问的远程主机和远程主机端口的数量,这可能有点笨拙。
如果可行,您将连接到隧道中指定的转发端口上的 $DMZHost。