Linux故障之内核反向路由检测
参考链接
环境:
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故障之内核反向路由检测相关推荐
- 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 ...
- linux内核vrrp配置,在Linux下的(VRRP)虚拟路由冗余协议介绍(转)
在Linux下的(VRRP)虚拟路由冗余协议介绍(转)[@more@] 这篇文章描述的是如何在Linux下实现VRRP (Virtual Router Redundancy Protocol 虚拟路由 ...
- Linux内核漏洞精准检测如何做?SCA工具不能只在软件层面
摘要:二进制SCA工具要想更好的辅助安全人员实现安全审计.降低漏洞检测的误报率,必须向更细颗粒度的检测维度发展,而不仅仅停留在开源软件的层面,同时对漏洞库的要求也需要向细颗粒度的精准信息提出的挑战. ...
- linux内核内存溢出检测,linux下有什么检测内存溢出的工具
Linux c++上常用内存泄露检测工具有valgrind, Rational purify.Valgrind免费.Valgrind 可以在 32 位或 64 位 PowerPC/Linux 内核上工 ...
- Linux 3.10内核锁瓶颈描述以及解决-IPv6路由cache的性能缺陷
大量线程争抢锁导致CPU自旋乃至内核hang住的例子层出不穷. 我曾经解过很多关于这方面的内核bug: nat模块复制tso结构不完全导致SSL握手弹证书慢. IP路由neighbour系统对poin ...
- Linux Rootkit躲避内核检测
来自 Linux Rootkit如何避开内核检测的 Rootkit在登堂入室并得手后,还要记得把门锁上. 如果我们想注入一个Rootkit到内核,同时不想被侦测到,那么我们需要做的是精妙的隐藏,并保持 ...
- linux 故障监控必备五款软件
linux故障监控处理必备四款监控软件 iotop:查看IO过大的进程. vmstat:查看故障. iostat: -x 查看硬盘IO. nethogs:查看严重占用带宽的进程.CentOS/RHEL ...
- Linux 基础命令:IP 路由操作 -ip命令
转自Linux爱好者:Linux 基础命令:IP 路由操作 Table of Contents ip 1.语法 2.选项列表 3.ip link---网络设备配置 4.ip address---协议地 ...
- [monitor] 7. Linux几种内核故障定位方法
Linux系统崩溃有kdump机制来记录,但是由于kdump的文件内容一般很大,在嵌入式系统一般不使用,嵌入式系统一般使用把printk重定位到黑匣子中的方法来记录异常,另外还需要其他的故障检测方法来 ...
最新文章
- 面试官问:平时碰到系统CPU飙高和频繁GC,你会怎么排查?
- 流程的python-流畅的Python
- java,验证码base64编码到json字符串出显数据一行一行的问题,关于base64编码函数解释
- matlab运算速度与cpu的关系,请教编程语言和运算速度的关系
- 基础的shell编程问题(二)
- [NOI2009]管道取珠
- 你可能不知道的 AS 小技巧之「Extract Resource」
- 本特利3500软件组态指导
- PTC Creo 8最新版下载
- java等额本息、等额本金计算Mark
- Java 8:那些Java8的常见写法
- Python利用OpenGL实现控制三维对象运动-天体运动仿真
- 西普实验吧CTF-Hashkill
- OpenLayers 3实践与原理探究3-ol3一个完整的例子
- snipaste滚动截图方法_老板让你把整个网页截图形成长图,具体怎么做?
- 软件开发管理规范(制度)
- pyspider显示web太小
- require(‘inquirer‘)报错
- 读书笔记-人月神话19
- 前途是光明的,道路是曲折的
热门文章
- 添加SearchView控件时飘红的问题
- C语言union总结
- 知识图谱-生物信息学-医学顶刊论文(Bioinformatics-2022)-SGCL-DTI:用于DTI预测的监督图协同对比学习
- MYSQL 从PS说起,但不止于PS , IS 中innodb buffer 分析(5) -- 附加招聘DEVOPS DBA
- vue删除数据,不刷新页面
- How DICK’S moved its software development in-house and aced omnichannel retail
- 抖音怎么宣传自己的东西?通过什么方式去宣传?
- ApacheCN 编程/大数据/数据科学/人工智能学习资源 2019.11
- Meta-Learning之How to train your MAML
- 2016年书单和电影