Estou tentando usar o iptables para marcar pacotes de entrada com base no dispositivo onde esses pacotes chegaram (em vez de seu endereço IP ou porta de origem, etc.), mas não encontrei uma maneira de fazer isso funcionar.
Especificamente, posso configurar um filtro que conte todos os pacotes de entrada (e isso funciona bem):
iptables -F -t mangle
iptables -A PREROUTING -t mangle -j MARK --set-mark 1
iptables -nvL
Chain PREROUTING (policy ACCEPT 185 packets, 41507 bytes)
pkts bytes target prot opt in out source destination
185 41507 MARK all -- * * 0.0.0.0/0 0.0.0.0/0 MARK set 0x1
No entanto, um filtro para capturar apenas pacotes da eth2 nunca parece ser acionado (mesmo que seja exatamente de onde vem todo o tráfego):
iptables -F -t mangle
iptables -A PREROUTING -t mangle -i eth2 -j MARK --set-mark 1
iptables -nvL
Chain PREROUTING (policy ACCEPT 101 packets, 19288 bytes)
pkts bytes target prot opt in out source destination
0 0 MARK all -- eth2 * 0.0.0.0/0 0.0.0.0/0 MARK set 0x1
A partir de howtos online, parece que esse comportamento pode ser uma conseqüência lógica da maneira como o iptables funciona: e para contornar isso, as pessoas tentaram usar o IMQ (antes que o IMQ caísse): e então passaram a usar o IFB em vez de. Mas lá a trilha de documentação parecia ficar gelada.
Então, a minha pergunta é a seguinte: se o IFB é o caminho certo para contornar este problema, qual seria a aparência equivalente do IFB para marcar o tráfego de entrada por dispositivo?
Como alternativa , existe uma maneira de classificar o tráfego proveniente de uma determinada interface como um de um conjunto de diferentes regiões? por exemplo. eth0 - > realm_10, eth1 - > realm_11, etc. Essa abordagem parece que também deve funcionar, mas eu (novamente) ainda não encontrei nenhuma documentação prática para isso.
Tags iptables linux-networking