ICMP 重定向揭示路由问题

网络工程 思科 路由 路由器 国际会议
2021-07-05 18:12:57

所以我们新配置的服务器发现了一些交换机配置问题。

在 /etc/sysctl.conf 中,我们有以下内容:

net.ipv4.conf.all.send_redirects = 0                    # CIS 4.1.2
net.ipv4.conf.default.send_redirects = 0                # CIS 4.1.2
net.ipv4.conf.all.accept_source_route = 0               # CIS 4.2.1
net.ipv4.conf.default.accept_source_route = 0           # CIS 4.2.1
net.ipv4.conf.all.accept_redirects = 0                  # CIS 4.2.2
net.ipv4.conf.default.accept_redirects = 0              # CIS 4.2.2
net.ipv4.conf.all.secure_redirects = 0                  # CIS 4.2.3
net.ipv4.conf.default.secure_redirects = 0              # CIS 4.2.3

这很好,因为它关闭了 ICMP 重定向并发现了配置不正确的交换机。

相关的交换机配置如下:

configure
vlan database
vlan 10,99,102
vlan routing 102 1
vlan routing 99 2
vlan routing 10 3
exit
hostname "CloudSwitch3"
stack
member 1 1
member 2 1
exit
ip address 10.10.10.12 255.255.255.0
ip routing
ip route 0.0.0.0 0.0.0.0 10.168.102.2
interface vlan 10
routing
ip address 10.10.102.1 255.255.255.0
exit
interface vlan 99
routing
ip address 10.168.99.1 255.255.255.0
exit
interface vlan 102
routing
ip address 10.168.102.1 255.255.255.0
ip rip
ip rip receive version both
exit

我的路由表显示如下:

Network Address Subnet Mask Protocol    Next Hop Interface  Next Hop IP Address
0.0.0.0         0.0.0.0         Default vlan102 10.168.102.2
10.10.102.0     255.255.255.0   Local   vlan10  10.10.102.1
10.168.99.0     255.255.255.0   Local   vlan99  10.168.99.1
10.168.102.0    255.255.255.0   Local   vlan102 10.168.102.1

现在的问题是:我的 GW 设置为 10.168.102.1,但来自路由器的 ICMP 重定向继续停留以在下次将其重定向到 10.168.102.2。此配置适用于配置为接受重定向的服务器,但不适用于不接受重定向的服务器。(我们正在经历这些缓慢)

当(本地)VLAN 102 说使用 10.168.101.1 时,为什么 10.168.102.xxx 地址会被告知通过 10.168.101.2 服务器路由?

10.168.101.2 是故障转移交换机。

解决问题的最佳方法是什么?

1个回答

这已经很长了,所以我只是将答案放在顶部而不是底部,如果您想要更多背景并阅读咆哮,请阅读整篇文章。

修复和问题摘要

本质上,问题在于您将默认网关指向另一个仍然位于客户端本地的设备,因为它是默认网关,这会导致不对称路由并导致应用程序/主机可能不太喜欢的连接不一致。您可以在路由器接口或交换机上打开重定向,但这仍然不会改变您将数据包发送到一台设备并从另一台设备接收它们。要解决此问题,您有几个选择:

  1. 将这两个设备分开。终端网络中通常不需要两个单独的路由设备。保持您的传输上游并保持您的 LAN 清洁,因为这也有助于清除您的服务器不需要听到的喋喋不休(就像他们喜欢接收 RIP 更新一样)
  2. 一个例外是将交换机和路由器配置为具有某种第一跳冗余协议(VRRP、GLBP、HSRP 等),但需要注意的是,您需要一个相同的下一跳(或等价方式)到达目的地)并确保指定主节点以及为什么它的优先级会递减以确保流量路径。

唯一的问题是您需要创建边界以对流量进行分段并控制在哪里做出发送流量的决定。现在有两种可能的路由设备的情况如何,直接导致缺乏安全控制和不规则的交通模式。我真的建议在场景后面设置一个第 3 层传输以实现彼此之间的连接(如果路由器处理它,可能只需从交换机上取下 IP 地址)。这样设备就有一个出口,而这个出口导致一切都将到达其他一切,为您提供集中控制并简化故障排除。

来自给定输出的问题的分析和 RCA 由于网关和网关的下一跳都与您的终端设备在同一个 LAN 上,因此重定向是为了让他们知道他们不再需要将流量转发给他们,因为有更多可供他们使用的直接路由(即使您不希望他们使用它,网络设备仍会将其视为更好的选择,因为终端设备必须少走一跳)

这实质上创建了本地非对称路由:

没有 ICMP-REDIR 的
路径:(SER-> RTR->SW->NEWNET)返回路径:(NEWNET->RTR->SER)

这是每次都走的路。

当那些接受重定向的人在他们的表中得到一个临时的路由语句时,一旦超时,他们就会再次转发到默认网关,默认网关会继续给他们另一个重定向。一切都是如何按照预期的方式进行的,所以很高兴:

第一次尝试:(SER->RTR|| 改用这条路线)

路径出 ICMP-REDIR: (SER->SW->NEWNET)

返回路径:(NEWNET->RTR->SER)

当您处理具有连接表/状态的事物,需要某些一致性的应用程序,甚至可能在您的主机上基于源的路由,并且您在本地具有非对称路由时,事情要么会以某种方式缓慢前进,要么会完全中断。没有一个是你想要的。

一个很好的比喻是,如果你邀请你的 SO 过来并告诉她在路上拿起一些爱情管,你到门口并确保爱情垫中的心情是正确的你闭着眼睛打开门,皱起嘴唇,你递给你的避孕套,虽然不是你女朋友递给你的,而是一个奇怪的陌生人在听说你想要它们后碰巧给你拿了它们,你可能会有点奇怪。

重定向相当于你,所以告诉你他们今晚无法到达那里,但他们在该地区有一个朋友可以帮助我们并获得我们需要的东西。

接入局域网中重定向和多个L3设备的安全考虑 如果您决定要在交换机上放置一个访问列表,因为您不希望它访问 XYZ 服务器,那么这很酷,我可以将我的网关更改为路由到其他设备的网关,从而使其成为完全零点(假设他们都知道如何到达那里)。我提出这个的原因是因为通常当我遇到这种情况时,这是因为有人决定将他们的防火墙放在网络上作为出口点,但随后他们在每个层都安装了一个 IP 的第 3 层交换机网络,这是默认网关。它完全消除了你有防火墙的事实,因为交换机对一切都是本地的,我不需要检查和通过我对内部资源的访问,我只需通过交换机。这可能不是你所做的事情,但它得到了“ 在您的主机上添加静态路由而不是从不安全的协议中动态学习它,您将自己从路由中毒和 MITM 攻击中暴露给 DOS。任何人都可以欺骗 ICMP 重定向,就像发送这些重定向一样,它只是该设备根据它的表中的内容猜测它应该是什么,如果它来自重新配置的路由器广告,这可能是完全错误的。在您的主机上添加静态路由而不是从不安全的协议中动态学习它,您将自己从路由中毒和 MITM 攻击中暴露给 DOS。任何人都可以欺骗 ICMP 重定向,就像发送这些重定向一样,它只是该设备根据它的表中的内容猜测它应该是什么,如果它来自重新配置的路由器广告,这可能是完全错误的。

如果您将三个用户 LAN 放在一个交换机上,则该交换机的默认网关是您在定义为单独区域的单独传输网络中的防火墙/路由器。对您拥有的每个边界执行相同操作,并确保它们都经过一个控制对它们之间资源访问的地方。