Настройте FirewallD, чтобы разрешить мостовой доступ к сети виртуальной машины
У меня гостевая Windows, работающая на виртуальной машине QEMU/KVM virt-manager.
Мой основной NIC eno1
в мосту br1
который настроен с моей конфигурацией IP-адреса хоста. Эта виртуальная машина подключена к указанному мосту.
Брандмауэр моего хоста находится в конфигурации по умолчанию: Зона по умолчанию: FedoraWorkstation
Если я остановлюсь firewalld
(а также iptables
показывает пустые правила брандмауэра), гость работает правильно. Без остановки брандмауэра мой гость не может связаться с внешней сетью. (Он может пинговать, но не делать DNS-запросы или TCP-соединения.)
Как настроить брандмауэр, чтобы разрешить полный доступ к гостю?
В этом сообщении на форуме предлагается следующий скрипт Bash, использующий iptables
:
#!/bin/sh
# If I put bridge0 in trusted zone then firewalld allows anything from
# bridge0 on both INPUT and FORWARD chains !
# So, I've put bridge0 back into the default public zone, and this script
# adds rules to allow anything to and from bridge0 to be FORWARDed but not INPUT.
BRIDGE=bridge0
iptables -I FORWARD -i $BRIDGE -j ACCEPT
iptables -I FORWARD -o $BRIDGE -j ACCEPT
Я подтвердил, что это работает, но я ищу постоянную настройку брандмауэра для достижения этой цели. В идеале это было бы сделано с помощью встроенных инструментов FirewallD.
1 ответ
У меня была такая же проблема. и после копания обнаружил, что firewalld имеет прямой переход к iptables
таким образом, вы можете использовать те же правила пересылки, которые были в вашем скрипте, но пусть firewalld устанавливает их постоянно
firewall-cmd --permanent --direct --passthrough ipv4 -I FORWARD -i bridge0 -j ACCEPT
firewall-cmd --permanent --direct --passthrough ipv4 -I FORWARD -o bridge0 -j ACCEPT
firewall-cmd --reload
Я хотел бы получить такой же результат с помощью firewalld без непосредственного изменения iptables, но я не смог найти лучшего решения