Virt-manager QEMU/KVM仮想マシンでWindowsゲストを実行しています。
私のプライマリNIC eno1
は橋の中にありますbr1
これは私のホストIPアドレス構成で構成されています。これはVMが上記のブリッジに接続されています。
ホストファイアウォールはデフォルト構成になっています:デフォルトゾーン:FedoraWorkstation
firewalld
を停止すると(そしてiptables
は空のファイアウォールルールを表示します)、ゲストは正しく機能します。ファイアウォールを停止しないと、ゲストは外部ネットワークと通信できません。 (pingは実行できますが、DNS要求、またはTCP接続)は実行できません。)
ゲストへのフルアクセスを許可するようにファイアウォールを構成するにはどうすればよいですか?
このフォーラム投稿iptables
を使用して次のBashスクリプトを提案しました。
#!/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 ツールを使用して実行されます。
私は同じ問題を抱えていました。調べてみると、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
Iptablesを直接変更せずにfirewalldで同じ結果を得る方法があればいいのにと思いますが、これ以上の解決策は見つかりませんでした。