运行net.ipv4.route.flush有什么风险

运行net.ipv4.route.flush有什么风险

我正在通过 AWS 设置 Linux 盒子,并且正在探索sysctl.当我运行时,ip route我可以看到机器上已经有引用169.X.X.X地址的路由。
问题:

  1. 有什么systctl -w net.ipv4.route.flush=1作用?
  2. 是否会systctl -w net.ipv4.route.flush=1弄乱 AWS Linux 实例按预期工作所需的默认框/配置?

答案1

  1. ipv4_sysctl_rtcache_flush()它导致使用参数 调用内核函数1

然而,该函数期望获得网络规范(技术上是 a struct net *)作为参数,而不仅仅是1。所以很可能sysctl -w net.ipv4.route.flush=1什么都不做,因为1不是它的有效参数。

  1. 如果系统依赖于动态创建的路由(即运行gated或类似的路由守护程序),则成功清除路由缓存可能会导致网络流量暂时中断。但正如我上面所说,这似乎不是有效的语法,因此net.ipv4.route.flush它可能什么也不做。

sysctlnet.ipv4.route.flush显然是ip route flush会使用的(或者在某个时候会使用,如果从那时起开发了更好的接口)。手册ip-route(8)页是这样说的:

ip route flush

刷新路由表

此命令刷新按某些条件选择的路由。

这些参数的语法和语义与 ip route show 的参数相同,但路由表不是列出而是清除。唯一的区别是默认操作:show转储所有 IP 主路由表但flush打印帮助页面。

在测试虚拟机中进行的快速实验告诉我ip route flush 1只会从主路由表中删除到 1.0.0.0/32 的路由,但sysctl -w net.ipv4.route.flush=1甚至不会这样做。所以显然 sysctl 需要一些不平凡的语法才能产生任何效果。查看内核源代码,似乎需要一个数据结构作为参数,因此如果net.ipv4.route.flush没有像ip route.


如果您在任何激活的网络接口上看到路由169.254.0.0/16,则该网络接口是 Bonjour/Zeroconf 系统的一部分,该系统将提供链路本地连接,而无需任何配置要求。如果你想摆脱它们,RedHat 风格的网络配置文件可以通过在每个接口文件中NOZEROCONF=yes的设置来实现;其他发行版可能有其他方法来选择退出 Zeroconf 配置。/etc/sysconfig/network/etc/sysconfig/network-scripts/ifcfg-<interface name>

相关内容