net.ipv4.conf.all.forwarding 和 net.ipv4.ip_forward 之间的区别

net.ipv4.conf.all.forwarding 和 net.ipv4.ip_forward 之间的区别

根据https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt

conf/all/*    is special, changes the settings for all interfaces
forwarding - BOOLEAN
    Enable IP forwarding on this interface.  This controls whether packets
    received _on_ this interface can be forwarded.
ip_forward - BOOLEAN
    0 - disabled (default)
    not 0 - enabled

    Forward Packets between interfaces.

    This variable is special, its change resets all configuration
    parameters to their default state (RFC1122 for hosts, RFC1812
    for routers)

因此,禁用所有接口上的 IPv4 数据包转发,与禁用所有接口上的 IPv4 数据包转发net.ipv4.conf.all.forwarding=0相同。net.ipv4.ip_forward=0

net.ipv4.conf.all.forwarding任何人都可以解释一下内核参数和内核参数之间的区别吗net.ipv4.ip_forward

答案1

根据描述,ip_forward不仅会更改接口之间数据包转发的值,还会更改其他配置。如前所述,其他配置将设置为默认值,即主机的 FC1122 和路由器的 RFC1812。

而在 的情况下forwarding,它将根据使用情况在该特定接口或所有接口上设置它,而不影响其他配置。

例如:ipv4.conf.all.forwarding=1将在所有接口上设置 ipv4 转发而不影响其他配置,并且ipv4.ip_forward=1还将在所有接口上设置 ipv4 转发但也会更改配置。

答案2

事实上,这两个参数都会在广泛的层面上影响 IP 转发。然而,net.ipv4.conf.all.forwarding 的目的是在处理复杂的网络场景时,在网络命名空间内提供更精细的控制,在这种情况下,您希望启用或禁用特定命名空间的转发,同时不影响其他命名空间。

相关内容