С помощью Майкла Хэмптона (спасибо!) мне удалось во всем разобраться, и я отвечаю на свой вопрос.
Нужна отдельная зона, которую вы определяете, добавляя к ней области видимости:
firewall-cmd --new-zone=специальный --permanent
брандмауэр-cmd --перезагрузить
брандмауэр-cmd --zone=специальный --add-source=12.34.56.78/32 --постоянный
брандмауэр-cmd --zone=специальный --add-source=12.34.56.88/32 --постоянный
брандмауэр-cmd --zone=специальный --add-source=12.34.99.0/24 --постоянный
Затем добавьте все обычные сервисы/порты, которые вы бы имели в своем публичный зону в эту новую зону (в основном продублируйте ее конфигурацию) и, наконец, добавьте правило переадресованного порта только в новую зону с (пример http-прокси):
firewall-cmd --zone=special --add-forward-port=port=8080:proto=tcp:toaddr=10.0.0.2 --постоянный
затем выполните окончательную перезагрузку для применения:
брандмауэр-cmd --перезагрузить
и вуаля: области видимости 12.34.56.78/32, 12.34.56.88/32 и 12.34.99.0/24 теперь имеют доступ к прокси-сервису примера, но больше никому.
ОБНОВИТЬ
Критическое примечание: Эти шаги отлично работают для входящий трафик но чтобы заставить firewalld вести себя как маршрутизатор NAT, включая исходящий трафик, требуется больше работы (что я не смог заставить работать...). Если у кого-то есть более полное решение, позволяющее входящим и исходящим потокам работать через сервер с брандмауэром, я с радостью отмечу это как принятый ответ!
OT: В конце концов я все равно использовал IPTables, которые я использовал для переадресации портов. и NAT без особых проблем, как только я понял, что я сделал неправильно (у меня не было исходящего правила в цепочке FORWARD... >.> <.<), и он позволяет точно контролировать области действия в каждом правиле (с бонус, я могу делать все из Webmin :P). Поскольку это не по теме, я оставляю этот ответ как есть.