Założyłem most br0
„podłączony” do dwóch interfejsów:
eth0
, mój fizyczny interfejs podłączony do prawdziwej sieci LAN,vnet0
, wirtualny interfejs KVM (podłączony do maszyny wirtualnej z systemem Windows).
I mam jedną regułę zapory ogniowej w łańcuchu przesyłania dalej:
iptables -A FORWARD -j REJECT
Teraz jedynym działającym pingiem jest maszyna wirtualna do hosta.
br0
Interfejs posiada adres IP mojego komputera hosta. eth0
i vnet0
nie „posiadają” żadnych adresów IP z punktu widzenia hosta. Maszyna wirtualna z systemem Windows ma konfigurację statycznego adresu IP.
Jeśli zmienisz moją iptables
regułę na ACCEPT
(lub nawet zastosujesz bardziej restrykcyjne iptables -A FORWARD -o br0 -j ACCEPT
), wszystko działa dobrze! (tzn. mogę pingować dowolną maszynę LAN z maszyny wirtualnej i odwrotnie).
Wszystkie opcje jądra przekierowującego IP są wyłączone (jak net.ipv4.ip_forward = 0
).
Jak więc zapora sieciowa filtru sieciowego może blokować coś, co nawet nie jest włączone?
Ponadto ruch VM - LAN powinien jedynie sugerować eth0
i vnet0
. Wygląda jednak na to, że zezwala się na ruch DO PRZODU z -o br0
„działaniami” (nie sprawdziłem jednak bardzo dokładnie).
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