Saya mengatur jembatan br0
"terpasang" ke dua antarmuka:
eth0
, antarmuka fisik saya terhubung ke LAN nyata,vnet0
, antarmuka virtual KVM (terhubung ke Windows VM).
Dan saya punya aturan firewall tunggal ini di rantai depan:
iptables -A FORWARD -j REJECT
Sekarang, satu-satunya ping yang berfungsi adalah dari VM ke host.
The br0
antarmuka memiliki alamat IP dari mesin host saya. eth0
dan vnet0
tidak "memiliki" IP apa pun, dari sudut pandang tuan rumah. Windows VM memiliki konfigurasi IP statis.
Jika mengubah iptables
aturan saya menjadi ACCEPT
(atau bahkan menggunakan yang lebih ketat iptables -A FORWARD -o br0 -j ACCEPT
), semuanya berfungsi dengan baik! (Yaitu saya bisa melakukan ping mesin LAN dari VM, dan sebaliknya juga).
Semua opsi IP forwarding kernel dinonaktifkan (seperti net.ipv4.ip_forward = 0
).
Jadi, bagaimana firewall netfilter memblokir sesuatu yang bahkan tidak diaktifkan?
Lebih lanjut, lalu lintas VM - LAN seharusnya hanya menyiratkan eth0
dan vnet0
. Namun sepertinya mengizinkan lalu lintas FORWARD dengan -o br0
"bekerja" (saya tidak memeriksa dengan sangat hati-hati).
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