Por que a contagem de bytes do iptables é para PREROUTING bruto 0?

2

Eu pretendo usar iptables para medir meu tráfego de Internet (inspirado pelo ótimo artigo link de Peter Krumins ).

O computador destinado a medir tráfego atualmente encaminha todo o tráfego da LAN de e para a Internet.

Eu tentei descobrir em quais correntes todos os bytes transferidos (upload + download) são contados. A cadeia filter FORWARD é a única cadeia com mais de um Megabyte depois de abrir vários sites (mostra 17M ). Parece ser o download (+ upload talvez).

Mas a observação a seguir me fez suspeitar:

me@computer:~$ sudo iptables -vL -t raw
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
me@computer:~$ sudo iptables -vL -t raw
Chain PREROUTING (policy ACCEPT 34 packets, 2244 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 16 packets, 2664 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Embora eu tenha visitado alguns sites, a cadeia raw PREROUTING ainda tinha 0 bytes ao executar sudo iptables -vL -t raw pela primeira vez (a primeira execução de sudo iptables -vL -t raw se destacou por seu longo tempo de execução de mais de um segundo ). Alguns segundos depois, as duas raw chains tinham mais de 2000 bytes.

Para mim, parece estar começando a contar após a primeira consulta e faltando todos os bytes anteriores.

Eu esperava que a corrente raw PREROUTING contasse todos bytes do tráfego de LAN encaminhado, porque o fluxograma a seguir sugere isso: link

    
por ideaboxer 25.05.2017 / 18:45

1 resposta

7

Eu consegui reproduzir zeros nos contadores na primeira execução de iptables --list --verbose -t raw . E a razão no meu caso foi simplesmente que o iptable_raw não foi carregado até que eu executei o comando.

Como não preciso da tabela raw em minha configuração, esse módulo geralmente não é carregado, e não foi até que eu executei esse comando, que o módulo foi carregado.

Ao executar rmmod iptable_raw , posso descarregar o módulo e, da próxima vez que executar iptables --list --verbose -t raw , os contadores redefinirão para zero.

Isso tudo está funcionando como pretendido. E eu acho que é o mesmo que aconteceu com você. Se você criar regras na tabela raw , o módulo será carregado automaticamente, e se você não precisar de nenhuma regra nessa tabela, não há necessidade de carregar o módulo.

Para listar as regras atuais, recomendo usar iptables-save , que exibirá as regras em um formato que pode ser carregado com iptables-restore . Ele mostrará todos os detalhes relevantes de suas regras atuais, e não carregará nenhum módulo adicional, ele mostrará apenas aqueles que estão atualmente carregados.

O atraso na primeira vez que você executou o comando pode ser explicado por várias razões diferentes, é difícil dizer exatamente qual foi o seu caso. Mas uma possibilidade é que o disco do qual o módulo precisou ser carregado tivesse sido desativado enquanto ocioso e você precisasse esperar que esse disco fosse acionado.

    
por 27.05.2017 / 23:21