如何使 sysctl 网桥设置在重启后仍然保留?

use*_*394 3 ubuntu nat multicast sysctl kvm-virtualization

我正在设置一个笔记本用于软件演示目的。该机器拥有 8GB RAM、Core i7 Intel CPU、128GB SSD,运行 Ubuntu 12.04 LTS 64 位。该笔记本电脑用作 KVM 主机并运行一些 KVM 来宾。

所有此类来宾都使用virbr0默认网桥。为了使它们能够使用多播相互通信,我将以下内容添加到主机的 中/etc/sysctl.conf,如下所示

net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
Run Code Online (Sandbox Code Playgroud)

随后,man sysctl(8)我发布了以下内容:

sudo /sbin/sysctl -p /etc/sysctl.conf
Run Code Online (Sandbox Code Playgroud)

我的理解是,这应该使这些设置在重新启动后仍然存在。我测试了它,并惊讶地发现以下内容:

root@sdn1 :/proc/sys/net/bridge# more *tables
::::::::::::::
bridge-nf-call-arptables
::::::::::::::
1
::::::::::::::
bridge-nf-call-ip6tables
::::::::::::::
1
::::::::::::::
bridge-nf-call-iptables
::::::::::::::
1
Run Code Online (Sandbox Code Playgroud)

所有默认设置都将恢复!

是的。我可以使用一些笨拙的“解决方法”,例如将 a/sbin/sysctl -p /etc/sysctl.conf放入主机中,/etc/rc.local但我宁愿“做对”。我是否误解了手册页或者我错过了什么?

感谢您的任何提示。

——扎克

ost*_*ich 6

我在 Ubuntu 14.04.1 上也有这个问题

net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
Run Code Online (Sandbox Code Playgroud)

没有设置重启!!!

我必须手动执行:

sudo brctl show

sudo sysctl -p

然后才设置参数?!

这太令人沮丧了。我正在设置一个 HA 系统,并且需要在重新启动时设置 net.bridge.X!


所以我想我找到了解决方案......

看来和ufw有一些冲突。

编辑/etc/sysctl.conf并注释掉:

net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
Run Code Online (Sandbox Code Playgroud)

编辑/etc/ufw/sysctl.conf此行并将其附加到末尾(注意斜线,而不是点...):

net/bridge/bridge-nf-call-ip6tables = 0
net/bridge/bridge-nf-call-iptables = 0
net/bridge/bridge-nf-call-arptables = 0
Run Code Online (Sandbox Code Playgroud)

重新启动机器,一切都按预期进行。