加载中…
正文 字体大小:

Linux内核的反向路由检查机制

(2014-11-26 18:01:04)
标签:

财经

分类: IT技术
Linux内核有反向路由检查的机制。当Linux IP协议栈收到一个IP包时,会找路由。
本机的包会往上层协议送,而非本机的包会根据路由转发。

为了防止非法的包被转发或送给上层协议,查找路由后Linux还会调用fib_validate_source()以
检查其来源的合法性,基本原理是根据包的源地址查找路由的出接口,然后比较包的原始入接口是
否和查到的出接口一致;如果一致则放过,如果不一致查询skb->dev的rp_filter值,为1时将丢弃这
个包,0时放过。

每个接口的rp_filter配置在/proc/sys/net/ipv4/conf/ethN/rp_filter,其值为1时是使能该
接口反向路由检查机制,为0时则关闭该机制。

在实际运用时该机制可能会带来问题。对于一些虚接口上来的包,如gre0,ipsec0来的包,如果没有
IP地址,从该虚接口上来的包可能被认为来源不合法而被内核DROP。
这时需要根据实际情况设置rp_filter为0,并配置IP地址。

以上分析是根据2.6.32内核代码而来。
更高版本的kernel可能已经解决这个问题,如3.6.3内核,对该机制有改进,对IPSEC的接口不做反射路
由检查。


0

阅读 评论 收藏 转载 喜欢 打印举报
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有