Во-первых, я хочу сказать: я знаю, что изначально это было сделано неправильно, и я не хочу делать все заново с нуля из-за общего простоя.
Я использую libvirt / KVM на RHEL. У меня есть виртуальная машина, которая работает с сетевым профилем NAT (по умолчанию). Я настроил переадресацию портов и т. Д. С хоста через sysconfig / iptables, все в порядке.
Но если демон libvird перезагружается по какой-либо внутренней причине или получает SIGHUP
- он перезагружает конфигурацию iptables и добавляет правила из профилей фильтрации т.е. все работает как задумано и задокументировано (libvirt и брандмауэр + документация libvirt nwfilter) - с ПО проблем нет, это проблема конфигурации.
Но некоторые правила вводят REJECT
s до того, как он мне понадобится, и я не могу подключиться к машине через перенаправленные порты, как показано ниже:
после бега service iptables restart
- все будет работать как раньше.
Есть ли способ заставить libvirt изменить порядок этих двух или отключить именно эти?
Может быть, кто-то столкнулся с точно такой же проблемой и готов ответить.
Спасибо
Я чувствую твою боль. Я действительно хочу, чтобы libvirt поддерживала это лучше.
Создайте сценарий, который применяет правила брандмауэра переадресации портов к гостю. Обязательно используйте iptables -I
так что ваши правила вставляются перед правилом REJECT libvirt.
Вам нужно использовать крючки для запуска этого сценария при каждом запуске или перезагрузке libvirt.
Кроме того, вы должны убедиться, что правила для libvirt и переадресации портов не сохранены в / и т. д. / sysconfig / iptables. Пусть это настроит libvirt и ваш хук.
Вместо этого вы можете создать свою собственную сеть NAT, что означает, что libvirt не будет добавлять никаких правил брандмауэра. Увидеть Пользовательская сеть на основе NAT на этом Руководство по работе с сетью libvirt.