iptables может зеркалировать трафик по условиям и быстро, но это не одна строчка правил.
Посему, наилучшим вариантом вижу 1 и 3 пункты вместе - например, используя python-iptables, управлять текущим состоянием конфигурации в iptables.
Цели и специфика задачи не достаточно подробно расписаны, но если двигаться от самого дешевого варианта, я бы хранил необходимую текущую конфигурацию в yaml-файле, к примеру
state:
- name: user_1
src: х.х.х.х
mirrors:
- y.y.y.y
- z.z.z.z
Ну и mirrors могут быть глобальными, если для всех пользователей одинаковы.
Запуск питоновского скрипта превратит yaml в реальную конфигурацию в iptables. Главное не забыть отслеживать когда из исходной конфигурации удаляются записи - для связки можно использовать
name и группировать правила в цепочки под этим именем. Ну а идеальным решением будет использовать СУБД для хранения текущего состояния.