IPs are generally assigned to guest VMs via a DHCP daemon on the host.
virsh net-update default add ip-dhcp-host \ '<host id="MACADDRESS" ip="IPADDRESS"/>' \ --live --config
Default Network Limitations
The default network has some limitations. It's possible to re-create it (https://jamielinux.com/docs/libvirt-networking-handbook/custom-nat-based-network.html).
One alternative is to use libvirt hooks to rewrite the iptables rules when updated: https://www.libvirt.org/hooks.html.