根据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 的目的是在处理复杂的网络场景时,在网络命名空间内提供更精细的控制,在这种情况下,您希望启用或禁用特定命名空间的转发,同时不影响其他命名空间。