【运维案例】创建虚拟网卡后rp_filter不是默认值案例

标题:创建虚拟网卡后rp_filter不是默认值案例

产品:openEuler

版本:openEuler-22.03-LTS

组件:systemd

分类:网络

【背景及现象描述】

某客户在openEuler-22.03-LTS环境通过命令创建虚拟网卡,创建出来rp_filter与默认值不同

22.03-LTS环境执行结果

而使用openEuler-20.03-LTS-SP1及Centos8环境测试正常,创建虚拟网卡后与默认值相同

【原因分析】

由于openEuler-22.03-LTS使用的是5.10内核,而openEuler-20.03-LTS-SP1使用的是4.19内核,初步推断可能为内核某次版本改动导致。

尝试在openEuler-22.03-LTS的基础上降级内核版本,逐步降级,使用5.x版本的内核测试均有该问题,降级4.19并使用openEuler-20.03-LTS-SP1编译选项仍存在该问题,可以得出结论,该问题与内核版本无关,是由于其他软件包影响。

通过测试,在创建出的一瞬间与默认值相同为0,之后被修改为2,通过perf script查看执行发现有systemd的调用,怀疑可能与systemd有关

image

后续查找社区社区systemd相关issue,systemd在248版本后在 /usr/lib/sysctl.d/50-default.conf文件中设置了rp_filter默认值,而openEuler同步了上游社区的改动,会导致创建出的虚拟网卡默认值为2

image

50-default.conf配置文件规则优先级高于/proc/sys/net/ipv4/conf的配置,如果需要修改为别的值可以注释上图中的内容

由于openEuler-20.03-LTS-SP1及Centos8 systemd版本小于248,故没有该问题

【解决方法】

如果用户需要自定义默认值,只需要注释/usr/lib/sysctl.d/50-default.conf中下列内容,再修改/proc/sys/net/ipv4/conf/default/rp_filter的值即可

image

【总结与建议】

本次定位中初步未确定原因,先通过安装内核的方式排除了内核的影响,然后排查到可能是systemd组件影响,去查找社区issue发现相同问题,后续有问题应该先查查社区issue,做到交叉验证

【相关参考】

社区issue链接: