Назад | Перейти на главную страницу

Как запретить libvirt добавлять правила iptables для гостевых сетей NAT?

Похожий на этот старый запрос на BugZilla для Fedora 8, я надеюсь, что с тех пор что-то изменилось или кто-то знает другой способ.

Я хочу управлять правилами iptables вручную - универсальные автоматические правила мне совершенно не подходят. Кажется, что эти правила добавляются и удаляются, когда сеть запускается и уничтожается. Есть ли способ вообще предотвратить добавление этих правил или подключить сценарий к запуску сети, который впоследствии восстанавливает правила по умолчанию.

На данный момент я использую очень грубый метод с cron, но я надеюсь, что есть способ получше:

  *  *  *  *  * root    iptables-restore < /etc/sysconfig/iptables

Что ж, я нашел ответ, который мне подходит: я вернулся в школу и научился делать это по старинке. Нет необходимости использовать причудливые сетевые функции libvirt, я просто могу:

  • настроить мою собственную мостовую сеть (и) (не подключенную к какому-либо физическому сетевому порту)
  • использовать DHCP-сервер на хосте и замаскироваться в iptables
  • отредактируйте гостевые конфигурационные файлы libvirt, чтобы использовать мост (ы)
  • иметь полную гибкость в том, как я хочу настроить безопасность с помощью iptables

Ответ Джека - хорошее решение. Пошаговые инструкции о том, как это сделать, см. В Пользовательская сеть на основе 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