参考链接
环境:

centos8,双网卡

ens18: 192.168.6.51
ens19: 192.168.2.111
过程中发现,client:192.168.6.41去访问192.168.6.51正常,但是另外一个2网段的不通,路由如下:


[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.6.1     0.0.0.0         UG    102    0        0 ens18
192.168.2.0     0.0.0.0         255.255.255.0   U     101    0        0 ens19
192.168.6.0     0.0.0.0         255.255.255.0   U     102    0        0 ens18

经过一番搜索,得知这种问题是由于当客户端发包给服务器时,连接服务器的交换机里,记录了每个IP对应的mac地址表,其中就有每个mac应该从交换机哪个接口进入。
而服务器收到包之后,如果是自己的包,就会往上层协议栈转发处理,而如果不是自己的,就会根据路由表进行转发。
当服务器接收到来自192.168.6.41访问192.168.2.111的包后,会从ens19网口进入,而回包会从ens18发出,这就导致了异步路由问题。
linux内核针对这个问题,有一个安全机制,反向路由检测机制。
Linux的反向路由检测机制,该机制的目的有多个:
– 避免出现意料之外的结果(从一个网卡进,从另一个网卡出),形成循环
– 安全考虑,避免出现IP单播数据包的欺骗
– 避免在较复杂的网络拓扑环境下,因为路由器错误的路径规划,造成反向路径过于复杂,降低网络性能。

可以通过配置一下参数关闭这个机制。


echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter # 关闭所有网卡的反向路由检测
echo 0 > /proc/sys/net/ipv4/conf/deafult/rp_filter # 关闭默认网卡(未指定情况下)的反向路由检测
echo 0 > /proc/sys/net/ipv4/conf/em1/rp_filter # 关闭em1所属网卡的反向路由检测
echo 0 > /proc/sys/net/ipv4/conf/em2/rp_filter # 关闭em2所属网卡的反向路由检测
service network restart # 重启网络服务

但是个人更推荐将这个参数改为2,而不是0

rp_filter (Reverse Path Filtering)参数定义了网卡对接收到的数据包进行反向路由验证的规则。他有三个值,0、1、2,具体含意如下:0:关闭反向路由校验
1:开启严格的反向路由校验。对每个进来的数据包,校验其反向路由是否是最佳路由。如果反向路由不是最佳路由,则直接丢弃该数据包。
2:开启松散的反向路由校验。对每个进来的数据包,校验其源地址是否可达,即反向路由是否能通(通过任意网口),如果反向路径不通,则直接丢弃该数据包。

关闭机制是一种方法,另外一种方法就是通过ip rule,编写策略路由,完成目的:源进源出。
linux的策略路由

最终,我使用策略路由完成“源进源出”的目的:

[root@localhost ~]# ip route show table 253
default via 192.168.2.1 dev ens19 src 192.168.2.221 #注意,其中的src关键字很重要,这是一条精细路由
[root@localhost ~]# ip rule show
0:  from all lookup local
32765:  from 192.168.2.221 lookup default #注意写好rule优先级
32766:  from all lookup main
32767:  from all lookup default

Linux故障之内核反向路由检测相关推荐

  1. linux内核路由反向检查,Linux路由设置 反向路由设置

    反向路由设置: route add –net 192.168.200.0  netmask 255.255.255.0 gw 172.31.1.209 route del –net 192.168.2 ...

  2. linux内核vrrp配置,在Linux下的(VRRP)虚拟路由冗余协议介绍(转)

    在Linux下的(VRRP)虚拟路由冗余协议介绍(转)[@more@] 这篇文章描述的是如何在Linux下实现VRRP (Virtual Router Redundancy Protocol 虚拟路由 ...

  3. Linux内核漏洞精准检测如何做?SCA工具不能只在软件层面

    摘要:二进制SCA工具要想更好的辅助安全人员实现安全审计.降低漏洞检测的误报率,必须向更细颗粒度的检测维度发展,而不仅仅停留在开源软件的层面,同时对漏洞库的要求也需要向细颗粒度的精准信息提出的挑战. ...

  4. linux内核内存溢出检测,linux下有什么检测内存溢出的工具

    Linux c++上常用内存泄露检测工具有valgrind, Rational purify.Valgrind免费.Valgrind 可以在 32 位或 64 位 PowerPC/Linux 内核上工 ...

  5. Linux 3.10内核锁瓶颈描述以及解决-IPv6路由cache的性能缺陷

    大量线程争抢锁导致CPU自旋乃至内核hang住的例子层出不穷. 我曾经解过很多关于这方面的内核bug: nat模块复制tso结构不完全导致SSL握手弹证书慢. IP路由neighbour系统对poin ...

  6. Linux Rootkit躲避内核检测

    来自 Linux Rootkit如何避开内核检测的 Rootkit在登堂入室并得手后,还要记得把门锁上. 如果我们想注入一个Rootkit到内核,同时不想被侦测到,那么我们需要做的是精妙的隐藏,并保持 ...

  7. linux 故障监控必备五款软件

    linux故障监控处理必备四款监控软件 iotop:查看IO过大的进程. vmstat:查看故障. iostat: -x 查看硬盘IO. nethogs:查看严重占用带宽的进程.CentOS/RHEL ...

  8. Linux 基础命令:IP 路由操作 -ip命令

    转自Linux爱好者:Linux 基础命令:IP 路由操作 Table of Contents ip 1.语法 2.选项列表 3.ip link---网络设备配置 4.ip address---协议地 ...

  9. [monitor] 7. Linux几种内核故障定位方法

    Linux系统崩溃有kdump机制来记录,但是由于kdump的文件内容一般很大,在嵌入式系统一般不使用,嵌入式系统一般使用把printk重定位到黑匣子中的方法来记录异常,另外还需要其他的故障检测方法来 ...

最新文章

  1. 面试官问:平时碰到系统CPU飙高和频繁GC,你会怎么排查?
  2. 流程的python-流畅的Python
  3. java,验证码base64编码到json字符串出显数据一行一行的问题,关于base64编码函数解释
  4. matlab运算速度与cpu的关系,请教编程语言和运算速度的关系
  5. 基础的shell编程问题(二)
  6. [NOI2009]管道取珠
  7. 你可能不知道的 AS 小技巧之「Extract Resource」
  8. 本特利3500软件组态指导
  9. PTC Creo 8最新版下载
  10. java等额本息、等额本金计算Mark
  11. Java 8:那些Java8的常见写法
  12. Python利用OpenGL实现控制三维对象运动-天体运动仿真
  13. 西普实验吧CTF-Hashkill
  14. OpenLayers 3实践与原理探究3-ol3一个完整的例子
  15. snipaste滚动截图方法_老板让你把整个网页截图形成长图,具体怎么做?
  16. 软件开发管理规范(制度)
  17. pyspider显示web太小
  18. require(‘inquirer‘)报错
  19. 读书笔记-人月神话19
  20. 前途是光明的,道路是曲折的

热门文章

  1. 添加SearchView控件时飘红的问题
  2. C语言union总结
  3. 知识图谱-生物信息学-医学顶刊论文(Bioinformatics-2022)-SGCL-DTI:用于DTI预测的监督图协同对比学习
  4. MYSQL 从PS说起,但不止于PS , IS 中innodb buffer 分析(5) -- 附加招聘DEVOPS DBA
  5. vue删除数据,不刷新页面
  6. How DICK’S moved its software development in-house and aced omnichannel retail
  7. 抖音怎么宣传自己的东西?通过什么方式去宣传?
  8. ApacheCN 编程/大数据/数据科学/人工智能学习资源 2019.11
  9. Meta-Learning之How to train your MAML
  10. 2016年书单和电影