ICMP重定向报文导致的问题与分析

默北 Linux 网络技术 运维案例227,9522字数 924阅读3分4秒阅读模式

前段时间, 业务方反馈集群内有一台服务器慢请求(>1s)记录比其他台多一倍。查找了下原因,发现这台服务器的网关配置成同网段内其他服务器IP上了,导致ICMP重定向发生,后面将路由更正后,慢请求缓解很多了。 便于分析,画了个简单拓扑图如下所示:

accept_redirects文章源自运维生存时间-https://www.ttlsa.com/linux/problems-and-analysis-of-icmp-redirect-message-to/

过程分析如下:
1). server2如果要与internet通讯,首先是要把报文发送给server1的,因为server2的网关指向server1的。
2). server1收到报文并检查它的路由表,发现router是发送改报文的下一跳。当它把报文发送给router时,server1检测到这个报文的发送出去的接口与接收到的接口是相同的,这样ICMP重定向就触发了。
3). server1认为server2应该把默认路由指向router,所以就发送ICMP重定向报文给server2,告诉它以后把报文发送给router。文章源自运维生存时间-https://www.ttlsa.com/linux/problems-and-analysis-of-icmp-redirect-message-to/

server1报文如下:文章源自运维生存时间-https://www.ttlsa.com/linux/problems-and-analysis-of-icmp-redirect-message-to/

accept_redirects文章源自运维生存时间-https://www.ttlsa.com/linux/problems-and-analysis-of-icmp-redirect-message-to/

server2报文如下:文章源自运维生存时间-https://www.ttlsa.com/linux/problems-and-analysis-of-icmp-redirect-message-to/

accept_redirects
ICMP重定向报文类型有:文章源自运维生存时间-https://www.ttlsa.com/linux/problems-and-analysis-of-icmp-redirect-message-to/

代码		描述
0			网络重定向
1			主机重定向
2			服务类型和网络重定向
3			服务类型和主机重定向

ICMP重定向报文的接收者必须查看三个IP 地址
1). 导致重定向的IP地址,即ICMP重定向报文的数据位于IP数据报的首部
2). 发送重定向报文的路由器的IP地址,包含重定向信息的IP数据报中的源地址
3). 应该采用的路由器IP地址, 在ICMP报文中的4~7字节文章源自运维生存时间-https://www.ttlsa.com/linux/problems-and-analysis-of-icmp-redirect-message-to/

发生ICMP重定向报文的必要条件:
1). 出接口必须等于入接口
2). 用于向外传送数据报的路由不能被ICMP重定向报文创建或修改过, 而且不能是路由器的默认路由
3). 数据报不能用源站选路来转发
4). 内核必须配置成可以发送重定向报文文章源自运维生存时间-https://www.ttlsa.com/linux/problems-and-analysis-of-icmp-redirect-message-to/

linux禁止ICMP重定向报文方法:文章源自运维生存时间-https://www.ttlsa.com/linux/problems-and-analysis-of-icmp-redirect-message-to/

# vim /etc/sysctl.conf
net.ipv4.conf.eth0.accept_redirects = 0
net.ipv4.conf.eth1.accept_redirects = 0
net.ipv4.conf.lo.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
# sysctl -p

 文章源自运维生存时间-https://www.ttlsa.com/linux/problems-and-analysis-of-icmp-redirect-message-to/ 文章源自运维生存时间-https://www.ttlsa.com/linux/problems-and-analysis-of-icmp-redirect-message-to/

weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
默北
  • 本文由 发表于 13/08/2013 22:42:28
  • 转载请务必保留本文链接:https://www.ttlsa.com/linux/problems-and-analysis-of-icmp-redirect-message-to/
  • accept_redirects
  • ICMP
  • ICMP重定向
  • tcpdump
评论  2  访客  2
    • 石
      9

      多谢

      • Aceslup
        Aceslup 9

        非常感谢通俗易懂的解释了。

      评论已关闭!