IPs Ratelimit para tráfego UDP na lista ipset antes de serem enviados pelo túnel GRE

IPs Ratelimit para tráfego UDP na lista ipset antes de serem enviados pelo túnel GRE

Estou usando o nat DNAT para encaminhar o tráfego em uma determinada porta para outro servidor Centos por meio de um túnel GRE, mas quero limitar a taxa de vários IPs de datacenter que tenho em uma 'lista negra' de lista de ipset. Para que o tráfego enviado para o túnel tenha taxa limitada.

Eu tentei a limitação de taxa em todas as listas FORWARD, INPUT e OUTPUT, mas o limite de taxa não funciona em nenhuma delas - talvez o DNAT nat o ignore?

iptables -A INPUT -m set --match-set blacklist src -p udp --dport 30000 -m hashlimit --hashlimit 10/min --hashlimit-name ratelimithash -j DROP
iptables -A FORWARD -m set --match-set blacklist src -p udp --dport 30000 -m hashlimit --hashlimit 10/min --hashlimit-name ratelimithash -j DROP
iptables -A OUTPUT -m set --match-set blacklist src -p udp --dport 30000 -m hashlimit --hashlimit 10/min --hashlimit-name ratelimithash -j DROP

Se eu adicionar a lista para descartar por meio de 'iptables -A OUTPUT -m set --match-set blacklist src -j DROP', ele interromperá todo o tráfego, então minha lista de ipsets de IP está funcionando, mas não a limitação de taxa, qualquer pessoa capaz de ajudar ?

Saída do iptables:

saída do iptables

Saída NAT do iptables:

saída nat do iptables

regras de iptables


#!/bin/sh
iptables -F
sudo iptables -t nat -F
iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
sudo iptables -t raw -F
sudo iptables -t raw -X
sudo iptables -t security -F
sudo iptables -t security -X
sudo iptables -F
sudo iptables -X
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT

iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT

iptables -A INPUT -m set --match-set blacklist src -p udp --dport 30000 -m hashlimit --hashlimit 10/min --hashlimit-name ratelimithash -j DROP
iptables -A FORWARD -m set --match-set blacklist src -p udp --dport 30000 -m hashlimit --hashlimit 10/min --hashlimit-name ratelimithash -j DROP
iptables -A OUTPUT -m set --match-set blacklist src -p udp --dport 30000 -m hashlimit --hashlimit 10/min --hashlimit-name ratelimithash -j DROP

iptables -t nat -A POSTROUTING -s 192.168.168.0/30 ! -o gre+ -j SNAT --to-source 20&&&&&&&&&&&&

iptables -A INPUT -s 192.168.168.2/32 -j ACCEPT

iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


iptables -A INPUT -p gre -j ACCEPT
iptables -A OUTPUT -p gre -j ACCEPT

iptables -t nat -A PREROUTING -d 20&&&&&&&&&&&& -p udp --dport 30000 -j DNAT --to-destination 192.168.168.2


iptables -A OUTPUT -j DROP
iptables -P INPUT DROP

Responder1

Parece que esta foi a melhor regra - interrompe o tráfego antes de passar pelo túnel GRE acima do limite

iptables -t mangle -A PREROUTING -p udp --dport 30000 -m set --match-set blacklist src -m hashlimit --hashlimit-mode srcip --hashlimit-srcmask 24 --hashlimit-above 100/sec --hashlimit-name test -j DROP

-hashlimit-srcmask 24 - para agrupar o tráfego de entrada em grupos /24

informação relacionada