br02つのインターフェースに「接続」されたブリッジをセットアップしました。
eth0、実際のLANに接続されている物理インターフェース、vnet0、KVM仮想インターフェース(Windows VMに接続)。
そして、私はフォワードチェーンにこの単一のファイアウォールルールを持っています:
iptables -A FORWARD -j REJECT
これで、機能している唯一のpingは、VMからホストへのものです。
br0インターフェイスは、私のホストマシンのIPアドレスを所有しています。eth0そして、vnet0ビューのホストの観点から、任意のIPを「所有」しません。Windows VMには静的IP構成があります。
私のiptablesルールをに変更した場合ACCEPT(またはさらに制限の厳しいものを使用した場合iptables -A FORWARD -o br0 -j ACCEPT)、すべてが正常に機能します!(つまり、VMから任意のLANマシンにpingを実行でき、その逆も可能です)。
すべてのIP転送カーネルオプションが無効になります(などnet.ipv4.ip_forward = 0)。
では、netfilterファイアウォールは、有効にさえされていないものをどのようにブロックできるのでしょうか。
さらに、VM-LANトラフィックはeth0、およびのみを意味しvnet0ます。それでも、-o br0「作品」を使用してFORWARDトラフィックを許可するように見えます(ただし、私は慎重にチェックしませんでした)。
sysctl -a | grep bridge-nf
net.bridge.bridge-nf-call-arptables = 1 net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-filter-vlan-tagged = 0 net.bridge.bridge-nf-filter-pppoe-tagged = 0