我需要在Linux中禁用反向路径过滤。我试过像这样
root@user:/home/user# sysctl -w net.ipv4.conf.default.rp_filter=0
现在我想知道如何使上述设置处于活动状态,因此禁用反向路径筛选吗?我需要重新启动sysctl或其他东西吗?请告诉我。
我试过像上面那样,但是当我运行sysctl -system
时
我明白了
net.ipv4.conf.default.rp_filter = 2
sysctl: setting key "net.ipv4.conf.all.rp_filter": Invalid argument
为什么这个无效的参数消息(我尝试将它更改为net.ipv4.conf.default.rp_filter = 0
,但它仍然将sysctl -system
打印为
net.ipv4.conf.default.rp_filter = 2
along with message
发布于 2022-01-02 05:17:22
有些事情你很困惑,
首先,重新加载配置文件的不是sysctl --system
,不是sysctl -system
;但这可能只是问题中的一个错误。
其次,当您使用sysctl -w
更改任何设置时,-w
意味着在“写而不是读”-sense中写入,而不是在“写到文件”-sense中写入。它只会影响当前活动的配置,并且不会被保存到任何地方。
因此,当您运行sysctl --system
来重新加载系统配置文件时,您将撤消先前的sysctl -w
操作。
第三,您可能试图更改系统上的有效rp_filter
值,但是net.ipv4.conf.default.rp_filter
键的default
部分意味着它会影响在此之后创建的任何未命名网络设备的默认值。
想必,您的网络设备已经存在,这意味着它已经有了自己的个人rp_filter
设置,并且不再关心default
。如果您的网络设备名为eth0
,那么net.ipv4.conf.eth0.rp_filter
很可能是您实际想要更改的值(使用sysctl -w
,或者将其写入/etc/sysctl.d/*.conf
-style配置文件之一,然后重新启动或重新加载--system
)。
除了default
和eth0
(或您的名字是什么)之外,还有一个all
版本;它就像一个通配符,影响到所有现有的变体(例如:eth0
、eth1
和eth2
)。当您的sysctl配置在启动期间加载时,在解析sysctl配置时,网络设备可能存在,也可能不存在,因此,如果eth0
当时存在或不存在,则很容易发生变化。如果它已经存在,那么eth0
和all
变体将产生所需的影响,而default
变体则不会。然而,如果设备还不存在,那么它实际上是相反的,而default
是一个能够按预期工作的设备。
当然,只需在/etc/sysctl.conf
或/etc/sysctl.d/*.conf
文件中将所有/两者都更改即可。
更新。
好的,既然您使用的是一个虚拟网络设备tun0
,稍后会创建它,那么使用default
键实际上并不是一个错误。
但是,主要的事情仍然是,您做而不是想同时使用sysctl -w
和sysctl --system
,因为后者取消了前者所做的事情。
听起来你要么想要这样的东西:
sysctl -w net.ipv4.conf.default.rp_filter=0 ;
sysctl -w net.ipv4.conf.tun0.rp_filter=0 ;
或
echo 0 > /proc/sys/net/ipv4/conf/default/rp_filter ;
echo 0 > /proc/sys/net/ipv4/conf/tun0/rp_filter ;
或者,使用.conf
文件;然后可以使用--system
重新加载它们。
https://stackoverflow.com/questions/70553713
复制相似问题