definir limite de taxa de pacotes via iptables

6

Eu tenho um limite de taxa de pacote (max. 10 por segundo) que é definido pelo meu provedor de internet. Isso é um problema se eu quiser usar o player AceStream, porque se exceder o limite, eu me desconecto.

Como posso restringir o acesso à Internet deste programa?

Eu tentei o comando sugerido:

iptables -A OUTPUT -m limit --limit 10/s -j ACCEPT

mas recebo uma mensagem de erro fatal:

FATAL: Error inserting ip_tables (/lib/modules/3.2.0-67-generic/kernel/net/ipv4/netfilter/ip_tables.ko): Operation not permitted
iptables v1.4.12: can't initialize iptables table 'filter': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.

Com direitos de administrador:

sudo iptables -A OUTPUT -m limit --limit 10/s -j ACCEPT

não há mais mensagens erradas. Mas ainda não está funcionando, eu me desconecto.

Existe um erro na linha de comando? Ou eu tenho que usar outros argumentos do iptables?

Abaixo está a mensagem que recebo, quando excedemos os limites do provedor.

Atéagora,tenteiabordagensdiferentes,masnenhumadelasfuncionou.

sudoiptables-AINPUT-ptcp--syn--dport8621-mconnlimit--connlimit-above10--connlimit-mask32-jREJECT--reject-withtcp-resetsudoiptables-AINPUT-mstate--stateRELATED,ESTABLISHED-mlimit--limit9/second--limit-burst10-jACCEPTsudoiptables-AINPUT-ptcp--destination-port8621--syn-mstate--stateNEW-mlimit--limit9/s--limit-burst10-jACCEPT

Essaabordagemparecenãoajudar,afimdecontinuarusandooaplicativo.Então,euposteiumaoutrapergunta: defina o limite de conexão via iptables .

    
por Andy 22.10.2014 / 20:05

2 respostas

5

A solução encontrada está correta:

iptables -A OUTPUT -m limit --limit 10/s -j ACCEPT

Mas está assumindo uma política padrão de DROP ou REJECT, que não é usual para o OUTPUT. Você precisa adicionar:

iptables -A OUTPUT -j REJECT

Certifique-se de adicionar esta regra após o ACEITAR. Execute-os nesta ordem ou use -I em vez de -A para o ACCEPT.

Além disso, dependendo da aplicação, isso pode matar a conexão. Nesse caso, tente com DROP em vez de REJECT ou tente com um% diferente% co_de (o padrão é icmp-port-unreachable).

Acabei de testar com o telnet em um servidor de DVR e ele não eliminou a conexão. Naturalmente, como uma nova conexão é um pacote de saída, tentar reconectar logo após atingir o limite falhará imediatamente se você usar REJECT.

Eu concluo dos comentários que seu ISP também espera que você limite seus pacotes de INPUT ... você não pode fazer isso. No momento em que você for capaz de impedi-los, eles já acessaram seu NIC, o que significa que eles já foram contabilizados pelo seu ISP. A contagem de pacotes INPUT também aumentará consideravelmente quando você limitar seu OUTPUT porque a maioria do ACK não conseguirá, causando muitas retransmissões.

10 pacotes por segundo é insano.

    
por 24.10.2014 / 18:29
0

Proteção contra inundação sincronizada:

# iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

Scanner de portas furtivas:

# iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

Ping da morte:

# iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
    
por 23.10.2014 / 23:27