Você precisa executar:
modprobe ipt_LOG.
Isso fez isso por mim.
Estou tentando usar o alvo TRACE de IPtables, mas não consigo obter nenhuma informação de rastreamento registrada. Eu quero usar o que está descrito aqui: Depurador para Iptables .
Do homem do iptables para TRACE:
This target marks packes so that the kernel will log every rule which match the packets as those traverse the tables, chains, rules. (The ipt_LOG or ip6t_LOG module is required for the logging.) The packets are logged with the string prefix: "TRACE: tablename:chain- name:type:rulenum " where type can be "rule" for plain rule, "return" for implicit rule at the end of a user defined chain and "policy" for the policy of the built in chains. It can only be used in the raw table.
Eu uso a seguinte regra: iptables -A PREROUTING -t raw -p tcp -j TRACE
, mas nada é acrescentado em / var / log / syslog ou /var/log/kern.log!
Há mais um passo faltando? Estou procurando no lugar errado?
Mesmo que não consiga encontrar entradas de log, o alvo TRACE parece estar configurado corretamente, pois os contadores de pacotes são incrementados:
# iptables -L -v -t raw
Chain PREROUTING (policy ACCEPT 193 packets, 63701 bytes)
pkts bytes target prot opt in out source destination
193 63701 TRACE tcp -- any any anywhere anywhere
Chain OUTPUT (policy ACCEPT 178 packets, 65277 bytes)
pkts bytes target prot opt in out source destination
A regra iptables -A PREROUTING -t raw -p tcp -j LOG
faz imprimir informações do pacote em / var / log / syslog ... Por que o TRACE não funciona?
Parece que (isto é, funciona para mim) com o novo kernel isso é necessário (para o IPv4):
modprobe nf_log_ipv4
sysctl net.netfilter.nf_log.2=nf_log_ipv4
créditos:
Descobri que precisava executar as duas respostas anteriores, nesta ordem:
sudo modprobe ipt_LOG
sudo sysctl net.netfilter.nf_log.2=ipt_LOG
Aqui estão algumas coisas que descobri ao longo do caminho.
Você pode obter uma lista de registradores válidos (junto com o registrador atualmente selecionado) com o seguinte:
cat /proc/net/netfilter/nf_log
Os números aqui representam os números da família de protocolos, conforme definido em /usr/include/bits/socket.h
. 2 é AF_INET
(que é IPv4) e 10 é AF_INET6
(IPv6).
Isso funcionou para mim sudo sysctl net.netfilter.nf_log.2=ipt_LOG