linux反向路由检查,反向过滤是个什么鬼?

1.背景介绍

场景跟前面提到的fullnat是一样的。

如下组网,ADS集群内存在计算节点1(10.0.103.96)写sysdb保存数据的情景;而sysdb的服务器可能在计算节点2(10.0.103.97)、计算节点3(10.0.103.98)上,通过SLB对外提供接入服务,如10.0.104.107:10000。

因此,计算节点1写sysdb时,需要从10.0.103.96发报文到10.0.104.107(源地址:目的地址为10.0.103.96:10.0.104.107),然后SLB做FULLNAT,将源地址、目的地址替换为10.0.103.107:10.0.103.97。

4a217d29e2f1c596028e116fcfd57e97.png

这里有一个问题,就是如何指导计算节点1将报文发送给SLB(10.0.104.107)?

2.解决方法

2.1 粗暴的解决方法

很简单,就是在各个计算节点上配置路由为SLB的内部IP(10.0.103.107),即报文直接经VLAN 60转给SLB,报文从eth1口送上去给SLB;应答报文仍然经过eth1送给计算节点。

但这要求用户手工配置计算节点的路由,在部署的时候略为麻烦(部署时还需要yum安装一些包,但这必须配置路由为网关)。

2.2 正确的解决方法

按照最早的想法,如果将计算节点的网关配置为vlan 60的地址,报文可以经过vlan 60转到vlan 70,然后从eth0口上送给SLB;SLB将报文处理完毕后,根据目的地址将应答报文再从eth1发送给计算节点。

但实测发现,SLB直接将报文丢弃了,并没有应答,连接建立失败,而且也没有应答ICMP差错报文。

linux有一个叫做反向过滤(reverse path filter)的功能,简单来说就是为了防DDOS攻击,会检查报文源地址的合法性,如果反查源地址的路由表,发现源地址下一跳的最佳出接口并不是收到报文的入接口,则将报文丢弃。所以只

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值