Похожий на этот старый запрос на BugZilla для Fedora 8, я надеюсь, что с тех пор что-то изменилось или кто-то знает другой способ.
Я хочу управлять правилами iptables вручную - универсальные автоматические правила мне совершенно не подходят. Кажется, что эти правила добавляются и удаляются, когда сеть запускается и уничтожается. Есть ли способ вообще предотвратить добавление этих правил или подключить сценарий к запуску сети, который впоследствии восстанавливает правила по умолчанию.
На данный момент я использую очень грубый метод с cron
, но я надеюсь, что есть способ получше:
* * * * * root iptables-restore < /etc/sysconfig/iptables
Что ж, я нашел ответ, который мне подходит: я вернулся в школу и научился делать это по старинке. Нет необходимости использовать причудливые сетевые функции libvirt, я просто могу:
Ответ Джека - хорошее решение. Пошаговые инструкции о том, как это сделать, см. В Пользовательская сеть на основе NAT на этом Руководство по работе с сетью libvirt.
Используйте хуки для восстановления правил iptables:
mkdir /etc/libvirt/hooks
for f in daemon qemu lxc libxl network; do
echo '#!/bin/sh
iptables-restore < /etc/sysconfig/iptables' > "/etc/libvirt/hooks/$f"
chmod +x "/etc/libvirt/hooks/$f"
done
service libvirtd restart
Правила Iptables будут перезагружены только для определенных действий, но этого достаточно, чтобы сделать его статичным. Только перезагрузка (SIGHUP) libvirtd запишет свои собственные правила, но она не запускается никакими системными скриптами, поэтому не произойдет, пока вы не введете service libvirtd reload
самостоятельно. Видеть https://libvirt.org/hooks.html