Linux:反向路径过滤何时发生?

Linux:反向路径过滤何时发生?

我知道将rp_filter其设置为 1 后,linux 会检查路由表以查看输入数据包是否“属于”该网络(如果不属于则将其丢弃)。

那么这究竟是什么时候发生的?它会查找哪个路由表?

  • 它是否使用路由策略ip rule
  • 什么时候会发生与 iptables 链相关的问题?如果我fwmark在 iptablesPREROUTING链中设置,并为该 fwmark 设置路由策略,它会使用不同的路由表吗?

答案1

根据我从https://serverfault.com/a/932206/491739以及我自己的实验:

  • 是的,它确实使用基于策略的路由(ip rule)。
  • iptables这是基于以下示例规则起作用的事实而发生的(我可以看到在数据包最终被丢弃之前记录的数据包):

    iptables --append PREROUTING --in-interface tun12 --match set --set ROUTE_TO_VPN_IPSET src \
             --table mangle -j LOG --log-prefix "Mark from VPN: "
    

然而,内核fwmark在寻找反向路由时会忽略,正如我从https://serverfault.com/a/932206/491739,并最终丢弃使用fwmark而不是明确 IP 地址路由的流量的返回数据包。
笔记https://serverfault.com/a/932206/491739确实包含一些关于如何启用内核来尊重fwmark(即,设置src_valid_mark使用策略路由数据包的接口的选项)的想法,我无法测试它,因为我的路由器上的内核似乎不支持它。

相关内容