我需要在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
首先,重新加载配置文件是sysctl --system
而不是sysctl -system
;但这可能只是问题中的一个拼写错误。
其次,当您使用sysctl -w
更改任何设置时,-w
意味着在"写入而不是读出">意义上,而不是在";写入文件">-感觉。它只会影响当前活动的配置,不会保存在任何位置。
因此,当您运行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
样式的配置文件之一,然后重新启动或重新加载--system
(。
除了CCD_ 20和CCD_,还有CCD_ 22版本;这就像一个影响所有现有变体(例如: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
文件;则可以使用CCD_ 38重新加载它们。