А почему iptables не пробрасывает порт?
Давайте по аналогии.
spoiler(Да, меня хлебом не кормите, дайте приделать дверцу к котёнку).
Например, у вас есть ПК, есть провайдер, предоставляющий доступ в интернет, и есть роутер между провайдером и вашим ПК. Вы спрашиваете: "А почему провайдер не может пробросить порт на мой ПК?"
Потому что провайдер не видит ваш ПК и ничего о нём не знает,. Зато на роутере вы можете пробросить порт на ПК.
В вашей схеме: ПК - это ваша виртуалка; провайдер - это ваш хост; роутер - это сетевая часть гипервизора qemu. Таким образом, пробросить порт в режиме сети "user" вы можете только средствами гипервизора, что вам и описал
zlo1 в первом комментарии.
сервер имеет статичный белый ip и подключен напрямую без маршрутизаторов
На сервере только один физический сетевой интерфейс? Очень легко настраивается, когда на сервере есть WAN и LAN, тогда бридж поднимается на LAN и на этот бридж цепляются виртуальные машины.
Вот не буду врать, я не пробовал руками поднимать бридж без привязки к физическому NIC (не было такой задачи), но по идее можно создать tap-интерфейс и навесить бридж на него. Уже с tap можно будет работать средствами хоста, а не гипервизора. Только надо сначала разрешить ip-forward, чтобы между WAN и tap в принципе могли летать пакеты. Потом разрулить маршруты между хостом и гостем (с обеих сторон), и только после этого смотреть на iptables (теперь сможете пробросить порт).
Короче, да, мост подходит, должен подходить. :)