IP de límite de velocidad para el tráfico UDP en la lista de ipset antes de enviarse a través del túnel GRE

IP de límite de velocidad para el tráfico UDP en la lista de ipset antes de enviarse a través del túnel GRE

Estoy usando nat DNAT para reenviar el tráfico en un determinado puerto a otro servidor Centos a través de un túnel GRE; sin embargo, quiero limitar la velocidad de un grupo de IP de centros de datos que tengo en una lista negra de ipset. De modo que el tráfico que sale al túnel tiene una velocidad limitada.

He probado la limitación de velocidad en todas las listas FORWARD, INPUT y OUTPUT, sin embargo, el límite de velocidad no funciona en ninguna de ellas. ¿Quizás el nat DNAT lo omite?

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

Si agrego la lista para eliminar a través de 'iptables -A OUTPUT -m set --match-set blacklist src -j DROP', detiene todo el tráfico, por lo que mi lista de IP ipset funciona, pero no limita la velocidad, cualquiera que pueda ayudarme ?

salida de iptables:

salida de iptables

Salida NAT de iptables:

salida nat de iptables

reglas 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

Respuesta1

Parece que esta era la mejor regla: detiene el tráfico antes de pasar el túnel GRE por encima del límite.

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 el tráfico entrante en grupos /24

información relacionada