Limite de taxa de pacotes, conexões abertas e endereços IP

2

No Linux, posso usar ferramentas como tc , iptables ou outras para controlar / moldar o tráfego de rede em uma interface de rede, com as seguintes finalidades:

  1. Controle a taxa do número de pacotes da rede (ou o número total).
  2. Controle o número de endereços IP conectados (enviados).
  3. Controle o número total de conexões TCP abertas (por segundo).

Se sim, como fazer isso?

    
por WindChaser 01.05.2018 / 09:39

2 respostas

2

Eu não tenho uma resposta para o nr. 2 (veja abaixo). Para 1. e 3. você pode usar o módulo limite :

  1. Controle a taxa do número de pacotes de rede:

    iptables -A OUTPUT -m limit --limit 10/s -j ACCEPT
    
  2. Controle o número total de conexões TCP abertas (por segundo):

    iptables -A INPUT -m state -m tcp -p tcp --dport 80 --state RELATED,ESTABLISHED -m limit --limit 10/second -j ACCEPT
    

Alternativamente você pode usar o módulo hashlimit :

  1. Controle a taxa do número de pacotes de rede:

    iptables -A INPUT -m hashlimit -m tcp -p tcp --hashlimit-mode srcip --hashlimit-srcmask 32 --hashlimit-above 10/sec --hashlimit-burst 2 --hashlimit-htable-expire 30000 --hashlimit-name pktlimit -j DROP
    
  2. Controle o número total de conexões TCP abertas (por segundo):

    iptables -I INPUT -m hashlimit -m tcp -p tcp --dport 80 --hashlimit-above 10/sec --hashlimit-mode srcip --hashlimit-name connlimit -m state --state RELATED,ESTABLISHED -j DROP
    

Você pode monitorar o desempenho do hashlimit, analisando:

cat /proc/net/ipt_hashlimit/pktlimit
cat /proc/net/ipt_hashlimit/connlimit

EDITAR :

Em um mundo onde o NAT é dominante, realmente faz sentido limitar o número de endereços IP de origem, como você deseja fazer no nr. 2? Eu acho que faz mais sentido limitar o número total de conexões TCP abertas, assim:

iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 10 --connlimit-mask 32 -j REJECT --reject-with tcp-reset
    
por 09.05.2018 / 17:24
0

Sobre sua pergunta 1.)

Tanto quanto eu entendi a ferramenta tc você pode controlar a taxa / taxa de transferência em kbit ou mbit . A manpage de tc menciona também um

b or a bare number in Bytes.

Como não está claro qual é o pano de fundo de suas perguntas, a intenção, o que você tenta alcançar e a solução / tópico para ampliar, eu gosto de me referir a tutoriais disponíveis para controle de tráfego como em Archlinux .

Também há threads disponíveis no Serverfault, ou seja, Como fazer modelagem de tráfego (limitação de taxa) com TC por cliente OpenVPN ou Tamanho do pacote de controle do Linux para endereço IP específico .

Eles podem dar dicas para suas perguntas 2.) e 3.) também.

    
por 09.05.2018 / 16:27