
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 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