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

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

我正在设置一台笔记本电脑用于软件演示。该机器有 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

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

sudo /sbin/sysctl -p /etc/sysctl.conf

我的理解是,这应该会使这些设置在重新启动后保持不变。我对其进行了测试,并惊讶地发现了以下内容:

root@sdn1 :/proc/sys/net/bridge# more *tables
::::::::::::::
bridge-nf-call-arptables
::::::::::::::
1
::::::::::::::
bridge-nf-call-ip6tables
::::::::::::::
1
::::::::::::::
bridge-nf-call-iptables
::::::::::::::
1

所有默认设置都将恢复!

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

谢谢任何提示。

-- 扎克

答案1

偶然间,我找到了一些额外的信息。即使是我最初想到的“笨拙的解决方法”,也是Debain 维基,它在我的 Ubuntu 12.04 机器上不起作用!唉 :-(

请参见一些 sysctl 在启动时被忽略- 有人在 2006 年报告过这个错误,但至今仍未修复!

注意设置桥接相关的内核变量也在上面第二个链接中被引用。

在我看来,这是一个相当令人失望的情况。

-- 扎克

答案2

在我的 Debian Jessie 安装中仍然遇到此问题。我编写了下面的 systemd 脚本作为解决方法。请注意,它将在读取 sysctl 配置后执行,但这对我来说不是问题。

[Unit]
Description=Bridge configuration
After=network.target

[Service]
WorkingDirectory=/root
User=root
Type=oneshot
ExecStart=/bin/bash -c "/bin/echo 0 > /proc/sys/net/bridge/bridge-nf-call-iptables"
ExecStart=/bin/bash -c "/bin/echo 0 > /proc/sys/net/bridge/bridge-nf-call-ip6tables"

[Install]
WantedBy=multi-user.target

不要忘记用 来启用它systemctl enable bridge-config.service

相关内容