# iptables -A PREROUTING -t nat -j NFQUEUE --queue-num 0
Em seguida, escreva seu próprio programa de espaço do usuário. link
Mas acho que o netfilter já tem todos os recursos que você deseja; você pode escrever regras muito complexas com iptables
/ nftables
.