Я настраиваю ноутбук для демонстрации программного обеспечения. Машина имеет 8 ГБ оперативной памяти, процессор Core i7 Intel, твердотельный накопитель 128 ГБ и работает под управлением Ubuntu 12.04 LTS 64bit. Записная книжка используется в качестве хоста 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)
, я выпустил следующее:
Насколько я понимаю, эти настройки должны сохраняться при перезагрузке. Я проверил это и с удивлением обнаружил следующее:
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
, но я бы предпочел «сделать это правильно». Я неправильно понял справочную страницу или что-то упустил?
Спасибо за любые подсказки.
- Зак
По счастливой случайности я столкнулся с некоторой дополнительной информацией. Даже то, о чем я сначала подумал, это «предлагаемое решение» в Debain wiki , оно не работает на моей машине с 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
.