linux – 在一个接口上禁用rp_filter

linux – 在一个接口上禁用rp_filter,第1张

概述我有一个Ubuntu 16.04服务器,它充当具有多个(VLAN)接口的路由器.默认情况下,为所有接口启用rp_filter(反向路径过滤).我想保持这种方式,但只为一个接口做一个例外. (应允许来自此接口的数据包具有与此接口的任何路由目标地址不对应的源IP地址.) 假设此接口的名称为ens20.4,其vlan-raw-device为ens20,目标接口(用于测试数据包流)名为ens20.2(尽管 我有一个Ubuntu 16.04服务器,它充当具有多个(VLAN)接口的路由器.默认情况下,为所有接口启用rp_filter(反向路径过滤).我想保持这种方式,但只为一个接口做一个例外. (应允许来自此接口的数据包具有与此接口的任何路由目标地址不对应的源IP地址.)

假设此接口的名称为ens20.4,其vlan-raw-device为ens20,目标接口(用于测试数据包流)名为ens20.2(尽管它应该适用于任何目标接口).

我试图仅为ens20.4设置rp_filter属性,但没有成功:

echo 0 > /proc/sys/net/ipv4/conf/ens20.4/rp_filter

因此,出于测试目的,我还为vlan-raw-device和测试目标接口禁用了rp_filter:

echo 0 > /proc/sys/net/ipv4/conf/ens20/rp_filterecho 0 > /proc/sys/net/ipv4/conf/ens20.2/rp_filter

仍然没有成功,具有“欺骗”源IP地址的数据包仍然被丢弃.只有当我为所有接口禁用rp_filter时,数据包才会通过:

echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter

但是,我仍然希望对所有其他接口保持反向路径过滤 – 我缺少什么?

解决方法 信息: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/tree/Documentation/networking/ip-sysctl.txt?h=v4.9#n1090

请注意可以解释您的尝试的最后一句话:

The max value from conf/{all,interface}/rp_filter is used when doing source valIDation on the {interface}.

所以这应该工作:

for i in /proc/sys/net/ipv4/conf/*/rp_filter; do    echo 1 > "$i"doneecho 0 > /proc/sys/net/ipv4/conf/all/rp_filterecho 0 > /proc/sys/net/ipv4/conf/ens20.4/rp_filter

现在max(conf / {all,ens20.4} / rp_filter == 0:没有源验证.只需仔细检查其他接口是否仍受保护.

您还可以使用值2检查“松散”rpf.如果数据包通常应由其他接口路由,则优于无验证.

总结

以上是内存溢出为你收集整理的linux – 在一个接口上禁用rp_filter全部内容,希望文章能够帮你解决linux – 在一个接口上禁用rp_filter所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1044771.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存