Você pode tentar usar -m connbytes
. Tem que coincidir com algo grande. Em seguida, marque o pacote e use o mecanismo de correspondência fwmark de tc
.
No entanto, eu costumo concordar com os outros que, para esse propósito, você deve usar algo que funcione na Camada 7.
Exemplo de uso de -m connbytes
iptables -A FORWARD -i $WAN_IFACE -o $LAN_IFACE -m connbytes --connbytes $TRIGGER_SIZE: --connbytes-dir reply --connbytes-mode bytes -j CONNMARK --set-mark $BULK_MARKER
iptables -t mangle -A PREROUTING -m connmark --mark $BULK_MARKER -j CONNMARK --restore-mark
A primeira regra corresponderá a conexões cujo total de bytes transferidos é maior que $ TRIGGER_SIZE (cuidadoso; que dois pontos devem existir!)
A segunda regra transferirá o CONNMARK para o pacote MARK (fwmark), de modo que tc
possa fazer alguns estrangulamentos / policiamento.
Note que eu especifico -i, -o e -dir reply na primeira regra; isto irá combinar contra pacotes que entram na interface WAN (e saem da interface LAN) que são respostas para uma conexão de saída iniciada por alguém na LAN. Se você não especificar -i e -o e / ou usar -dir ambos, você também corresponderá aos pacotes de saída (por exemplo, e-mails do servidor de e-mail).