No lo he usado, pero parece que el objetivo del filtro de red QUEUE podría funcionar. Utiliza un socket nflink y una aplicación de espacio de usuario registrada en el socket para realizar las modificaciones de la carga útil.
La página de manual de libipq contiene detalles sobre cómo usar esto y proporciona un ejemplo simple.
Resolución:
Terminamos con un módulo personalizado para netfilter, que es claramente la herramienta "adecuada" para el trabajo.