I have a setup of pretty much what you want to do. I set it up as per your #1 except I am using DHCP not a static IP but I am setting a default gateway manually. I also have br0: and p3p1: (Equivalent to your eth0:) set to trusted in Firewalld as @dcurtisfra suggested. I also have p3p1: added to the bridge.
This is my host setup:
skylab:~ # ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: p3p1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
link/ether d0:67:e5:0c:97:74 brd ff:ff:ff:ff:ff:ff
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether d0:67:e5:0c:97:74 brd ff:ff:ff:ff:ff:ff
inet 192.168.27.2/24 brd 192.168.27.255 scope global br0
valid_lft forever preferred_lft forever
inet6 2a00:23c5:b3a6:802:1888:122a:3262:5d65/64 scope global temporary dynamic
valid_lft 604238sec preferred_lft 85817sec
inet6 2a00:23c5:b3a6:802:d267:e5ff:fe0c:9774/64 scope global dynamic mngtmpaddr
valid_lft 2591908sec preferred_lft 604708sec
inet6 fe80::d267:e5ff:fe0c:9774/64 scope link
valid_lft forever preferred_lft forever
When the guest is started vnet0: is automatically created and added to the bridge on the host. “ip addr” now adds this entry
4: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UNKNOWN group default qlen 1000
link/ether fe:54:00:b8:8d:79 brd ff:ff:ff:ff:ff:ff
inet6 fe80::fc54:ff:feb8:8d79/64 scope link
valid_lft forever preferred_lft forever
The guest is set to DHCP but again I add the default gateway manually and firewalld is set to trusted.
The guest setup is as follows:
ip addr1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 52:54:00:b8:8d:79 brd ff:ff:ff:ff:ff:ff
altname enp1s0
inet 192.168.27.19/24 brd 192.168.27.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 2a00:23c5:b3a6:802:c21:bb7:8845:b750/64 scope global temporary dynamic
valid_lft 604408sec preferred_lft 85568sec
inet6 2a00:23c5:b3a6:802:5054:ff:feb8:8d79/64 scope global dynamic mngtmpaddr
valid_lft 2591820sec preferred_lft 604620sec
inet6 fe80::5054:ff:feb8:8d79/64 scope link
valid_lft forever preferred_lft forever
Finally this is the XML code for my network configuration of the guest (I am using VMM so just clicked the XML tab):
<interface type="bridge"> <mac address="52:54:00:b8:8d:79"/>
<source bridge="br0"/>
<target dev="vnet0"/>
<model type="virtio"/>
<alias name="net0"/>
<address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
</interface>