我有一个 LAN,上面有三个路由器,一个连接到互联网,一个 VPN 路由器连接到几个远程站点,最后一条路由连接到私有网络(使用 BGP 获取前缀通告)。
在同一个 LAN 上,我有多个 Linux 服务器,它们需要访问每个路由器后面的网络。我通过在服务器上配置静态路由来实现这一点,将不同的网络前缀指向正确的路由器。
这种方法效果很好,但是每次我们连接到新的远程 VPN 时,我们都必须更改所有服务器,以确保现在可以通过 VPN 访问网络,而不是通过默认的 Internet 路由访问。
我想要的是一种当路由添加到路由器时自动更新所有服务器上的路由的方法。
现在,我可以在所有服务器上安装 Quagga 或类似的东西来接收路由器广告,但这似乎有点过头了。所以我的问题是,自动更新服务器上的路由表的最简单方法是什么,以及哪种协议最适合此目的。
谢谢
答案1
在所有路由器上配置动态路由协议,并将服务器(和任何其他主机)配置为使用“主”路由器作为其 DG。然后,DG 应根据动态路由表中的条目将流量重定向到适当的路由器。
这不是额外的跳跃,因为发往其他网络的流量不会通过默认网关转发到该网络。如果我没有记错的话,默认网关应该向主机发出 ICMP 重定向,将主机定向到相关网络的首选网关。默认网关转发流量的唯一情况是它没有相关网络(外部网络)的路由,在这种情况下它会将流量转发到其默认网关。
我的评论基于这样的假设:所有路由器都有一个连接到同一个 LAN 子网的接口(如您的问题所暗示的)。
答案2
交换机可以进行第 3 层路由吗?您可以在交换机上创建两个 VLAN,并将交换机作为服务器上的默认路由,然后交换机要么具有指向三个路由器的静态路由,要么甚至更好地在交换机上使用动态路由协议(如果是 Cisco,则为 OSPF 或 EIGRP)。但是,根据您如何进行 VPN 连接,将这些路由重新分配到路由协议可能不是很容易。静态隧道并不是那么好,使用 GRE/Ipsec 上的路由协议是一种更好的解决方案,但可能并不总是一种选择。