Tenho minhas regras de iptables em execução há anos sem incidentes, mas depois de permitir o acesso de todos os MAC confiáveis:
/sbin/iptables -A INPUT -m mac --mac-source $MAC -j ACCEPT
/sbin/iptables -A FORWARD -m mac --mac-source $MAC -j ACCEPT
Estou tentando marcar outros endereços Mac como:
/sbin/iptables -A PREROUTING -t mangle -i $INT_DEV -p tcp --dport 80 -j MARK --set-mark 99
mas quando tento ler esse endereço agora,
conntrack -L | grep "src=10.1.1.234"
não vejo meu freeloader 10.1.1.234 desconhecido em lugar nenhum ...
Mesmo assim, quero continuar no iptables para desviar meu freeloader para uma página de login por meio de
/sbin/iptables -t filter -A FORWARD -m mark --mark 99 -j DROP```
And obviously it doesn't work because I can't even see it from my conntrack listing.
What am I doing wrong here..?
Há uma diferença entre uma marca de pacote , também conhecida como just mark , firewall mark ou fwmark , e uma marca de entrada conntrack , também conhecida como ctmark , connection mark ou connmark : a primeira é anexada ao pacote skbuff , a última é anexada à entrada conntrack . Existem correspondências e destinos de iptables distintos para ambos, incluindo maneiras de passar a marca do pacote para a entrada de conexão ou da entrada de conexão para o pacote .
Aqui não há necessidade de usar esta marca com conntrack para este caso e
conntrack -L
simplesmente não é a ferramenta certa para exibir um pacote descartado (veja o último parágrafo). Ao usar aiptables-nft
variante, a maneira mais fácil de ver os pacotes marcados para fins de depuração (caso contrário, apenas usar-j LOG
adicionaria a marca do pacote em seus logs) é rastreá-los e usá-losxtables-monitor --trace
para exibir seu destino (iptables-legacy
enviaria isso para os logs do kernel e poderia facilmente inundar os logs , além disso, não funciona bem com namespaces de rede: essa é uma alteração rara e não compatível entre a variante -legacy e -nft).Então, um exemplo possível:
[...]
O destino detalhado de todos esses pacotes marcados entre
-j TRACE
e-j DROP
(ou-j ACCEPT
mais todo o processamento adicional para esses poucos eleitos) agora pode ser seguido, de forma muito detalhada, com:Para limitar a verbosidade, pode-se rastrear apenas os pacotes que iniciam um novo fluxo, alterando a
TRACE
regra assim:Além disso: o primeiro pacote desse fluxo aciona a criação de uma entrada conntrack que (mesmo sem marca) normalmente seria visível no modo de evento usando
conntrack -E -p tcp --dport 80
. Mas quando este pacote é descartado, a entrada conntrack provisória nunca é confirmada e o evento nunca será disponibilizado paraconntrack
. Embora seja invisível com oconntrack
comando, ainda estará visível nas regras-m conntrack --ctproto tcp --ctorigdstport 80
antes de ser descartado. Qualquer nova tentativa será novamente um primeiro pacote que criará uma entrada provisória, que não será confirmada porque o pacote foi descartado, etc.Portanto,
conntrack
só pode ser usado para exibir fluxos cujo primeiro pacote não foi descartado, caso contrário, nenhum fluxo será disponibilizado para ele.