CentOS有递归路由查找功能吗?

CentOS有递归路由查找功能吗?

我想知道 CentOS 中是否可以进行递归路由查找?这是场景:

我的机器上有 2 个网卡。 NIC1 有默认网关。 NIC2 仅需要通过 2 个 IP 子网(173.144.4.x 和 172.45.5.x)与外界通信。并且NIC2需要通过代理(192.168.1.1)。以下是我将此配置添加到第二个网卡以影响流量的配置:

Destination        Next-Hop      
173.144.4.0/24    172.20.25.1
172.45.5.0/24     172.20.25.1
172.20.25.1       192.168.1.1

在上面,前 2 个是它需要访问的外部子网。 172.20.25.1 --> 代理服务器IP。 192.168.1.1 --> NIC2 所在子网的默认网关地址。

[EDIT2] 这是高级拓扑: 在此输入图像描述

代理不是透明代理。只有 NIC1 配置了默认网关,因为在 CentOS 中我们不能有 2 个 NIC 具有 2 个不同的网关。 NIC2 应通过 Internet 与 2 个子网通信,为此添加了前 2 个路由。并为代理服务器添加另一条路由,表示如果您想使用此下一跳(该子网的网关)到达代理服务器。

理论上,当机器尝试访问外部子网时,它会检查路由表,将下一跳视为代理 IP,再次检查路由表,发现到达代理 IP 的下一跳是默认网关。

这在 Linux 中有效吗? Linux 是否像上面提到的那样进行递归路由查找?

提前致谢。

答案1

虽然您可以使用更复杂的设置进行策略路由,但默认变体(您似乎正在使用)是一级决策。

操作系统查看数据包的目标地址,查找匹配的路由,然后将数据包发送到该路由的下一跳。

就这样。

本地子网的路由会自动添加。

这样做的一个后果是全部路径上的节点需要足够的路由信息​​才能做出正确的下一跳决策。这意味着您需要在全部节点,而不仅仅是原始节点。这是初学者常犯的错误。

因此,无论您尝试做什么(我不完全理解),它可能都行不通。

此外,如果您的两个子网都连接到互联网(通过代理或其他方式),则您通常无法同时使用这两个子网来访问互联网。

答案2

有两种类型的代理可能适用于此:

  • 常规(显式)代理
  • 透明代理(强制代理)

问题是,一旦您的系统将数据包传递到网关,您将无法进一步决定数据包将如何路由:网关将仅根据目标 IP 地址(通常)做出自己的路由决策,使用自己的路由表。

曾经有一个机制叫做源路由,这将允许您指定您希望数据包应采取的路线;但使用它的正当理由很少,而且事实证明它对许多邪恶行为很有用,因此出于安全原因,实际上所有现代路由器和网关都会完全忽略任何数据包中存在的任何源路由选项。如果对路由器/网关进行安全审核,则启用源路由很可能会导致路由器无法通过审核。


使用常规代理

如果您需要使用代理连接到某个东西,那么就 TCP/IP 路由而言,您将连接代理。然后,在某个更高的协议层,您的客户端应用程序将询问代理人进行下一次连接到实际目的地。

如果您需要代理来访问 173.144.4.0/24 和 172.45.5.0/24 网络,第一步是告诉客户端应用程序需要代理来连接到这些网络。仅使用路由表无法做到这一点。没有统一的方法来配置所有应用程序以使用特定网络的代理:每个应用程序都可以有自己的配置方案。

如果客户端应用程序是 Web 服务器,则可以使用代理自动配置文件,通常称为wpad.datproxy.pac

有关更多信息,另请参阅:https://en.wikipedia.org/wiki/Web_Proxy_Auto-Discovery_Protocol


使用透明代理

与一个透明代理,那么情况就不同了:客户端“认为”它直接连接到目的地(如果需要的话,像往常一样使用网关),但途中的某些路由器、防火墙或其他网络设备会将连接重定向到代理。代理需要假装它是实际目的地……随着无处不在的 TLS 连接、证书固定和其他附加安全措施,这变得越来越困难。

如果您的代理是透明代理,则必须将最终主机上的路由表配置为将前往 173.144.4.0/24 和 172.45.5.0/24 网络的任何流量传递到默认网关,并且必须配置默认网关以强制该流量进入透明代理。如果透明代理与客户端位于同一网段,您可以使用一些 ARP 技巧强制流量进入透明代理,但由于在您的情况下代理位于网关后面,因此必须将网关配置为执行重定向。


在这两种情况下,第二步都是配置代理人仅当目标位于 173.144.4.0/24 和 172.45.5.0/24 网络中时才接受来自最终主机的请求,并拒绝来自最终主机的任何其他请求。

相关内容