配置 FirewallD 以允许桥接虚拟机网络访问

配置 FirewallD 以允许桥接虚拟机网络访问

我有一个在 virt-manager QEMU/KVM 虚拟机上运行的 Windows 客户机。

我的主网卡eno1位于桥接器中br1,该桥接器配置了我的主机 IP 地址。此虚拟机连接到该桥接器。

我的主机防火墙处于默认配置:默认区域:FedoraWorkstation

如果我停止firewalld(并iptables显示空的防火墙规则),客户端就可以正常工作。如果不停止防火墙,我的客户端就无法与外部网络通信。(它可以 ping,但不能发出 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

我已经确认这有效,但我希望永久配置我的防火墙以实现此行为。理想情况下,可以使用内置的防火墙D工具。

答案1

我遇到了同样的问题。经过一番研究,我发现防火墙有直接传递到 iptables

因此,您可以使用脚本中的相同转发规则,但让防火墙永久设置它们

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

我希望有一种方法可以在不直接更改 iptables 的情况下使用 Firewalld 获得相同的结果,但我找不到更好的解决方案

相关内容