![配置 FirewallD 以允许桥接虚拟机网络访问](https://linux22.com/image/1470818/%E9%85%8D%E7%BD%AE%20FirewallD%20%E4%BB%A5%E5%85%81%E8%AE%B8%E6%A1%A5%E6%8E%A5%E8%99%9A%E6%8B%9F%E6%9C%BA%E7%BD%91%E7%BB%9C%E8%AE%BF%E9%97%AE.png)
我有一个在 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 获得相同的结果,但我找不到更好的解决方案