1 votes

Ratelimit IPs pour le trafic UDP dans la liste ipset avant d'être envoyé sur le tunnel GRE

J'utilise nat DNAT pour transférer le trafic sur un certain port vers un autre serveur Centos via un tunnel GRE. Cependant, je souhaite limiter le débit d'un certain nombre d'adresses IP de centres de données que j'ai placées dans une liste d'ipset 'blacklist'. Ainsi, le trafic envoyé vers le tunnel est limité en débit.

J'ai essayé de limiter le débit dans toutes les listes FORWARD, INPUT et OUTPUT mais la limite de débit ne fonctionne pas du tout dans aucune d'entre elles - peut-être que la DNAT nat la contourne ?

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 j'ajoute la liste à supprimer via 'iptables -A OUTPUT -m set --match-set blacklist src -j DROP', cela arrête tout le trafic, donc ma liste d'IP ipset fonctionne mais pas la limitation de débit, quelqu'un peut-il m'aider ?

Sortie iptables :

sortie iptables

Sortie NAT d'iptables :

sortie iptables nat

règles 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

1voto

Rushy Points 21

Il semble que cette règle était la meilleure - elle arrête le trafic avant qu'il ne dépasse la limite dans le tunnel GRE.

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 - pour regrouper le trafic entrant en groupes /24

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X