Limitación de velocidad y eliminación de paquetes natted, EXCEPTO para 5 redes locales

Limitación de velocidad y eliminación de paquetes natted, EXCEPTO para 5 redes locales

Básicamente, estoy tratando de limitar las solicitudes a un servidor de correo en el nivel del firewall, pero incluyo en la lista blanca varios rangos de IP propiedad de la empresa. puedo incluir en la lista blancaunoLas direcciones IP varían, pero no son varias, debido a la naturaleza de "la primera regla coincidente toma el paquete".

Esto es lo que tengo actualmente... (perdón por la mezcla de -Iy -A)

# Send traffic to rate-limiter before allowing it to continue to the mail server.
iptables -t nat -I PREROUTING -d 20.87.6.71 -p tcp --destination-port 25 -j DNAT --to-destination 192.168.250.71:25
iptables -t nat -I PREROUTING -d 20.87.6.71 -p tcp --destination-port 143 -j DNAT --to-destination 192.168.250.71:143
iptables -t nat -I PREROUTING -d 20.87.6.71 -p tcp --destination-port 993 -j DNAT --to-destination 192.168.250.71:993
iptables -t mangle -I PREROUTING -d 20.87.6.71 -p tcp --destination-port 25 -j rate-limiter
iptables -t mangle -I PREROUTING -d 20.87.6.71 -p tcp --destination-port 143 -j rate-limiter
iptables -t mangle -I PREROUTING -d 20.87.6.71 -p tcp --destination-port 993 -j rate-limiter

# Create a new chain, which logs all traffic then drops it.
# We make sure that localnets are not part of this...
iptables -t mangle -N rate-limiter
iptables -t mangle -A rate-limiter -p tcp --syn -d 20.87.6.71 ! -s 192.168.254.0/24 -m state --state NEW -m recent --set --name MailRateLimiter --rsource
iptables -t mangle -A rate-limiter -p tcp --syn -d 20.87.6.71 ! -s 20.87.6.0/24 -m state --state NEW -m recent --set --name MailRateLimiter --rsource

iptables -t mangle -A rate-limiter -p tcp --syn -d 20.87.6.71 ! -s 192.168.250.0/24 -m state --state NEW -m recent --rcheck --seconds 60 --hitcount 20 --name MailRateLimiter --rsource -j LOG --log-prefix 'RATE EXCEEDED' --log-level 4
iptables -t mangle -A rate-limiter -p tcp --syn -d 20.87.6.71 ! -s 192.168.250.0/24 -m state --state NEW -m recent --rcheck --seconds 60 --hitcount 20 --name MailRateLimiter --rsource -j DROP

iptables -t mangle -A rate-limiter -p tcp --syn -d 20.87.6.71 ! -s 20.87.6.0/24 -m state --state NEW -m recent --rcheck --seconds 60 --hitcount 20 --name MailRateLimiter --rsource -j LOG --log-prefix 'RATE EXCEEDED' --log-level 4
iptables -t mangle -A rate-limiter -p tcp --syn -d 20.87.6.71 ! -s 20.87.6.0/24 -m state --state NEW -m recent --rcheck --seconds 60 --hitcount 20 --name MailRateLimiter --rsource -j DROP

Entonces, la primera regla coincide con el paquete, luego lo marca en la tabla reciente, por lo que cuando cat /proc/self/net/xt_recent/MailRateLimiterveo las IP que deberían estar en la lista blanca:

src=20.87.6.200 ttl: 57 last_seen: 56654988107 oldest_pkt: 8 56654320106, 56654370481, 56654426548, 56654480458, 56654564349, 56654565421, 56654952936, 56654988107
src=20.87.6.5 ttl: 63 last_seen: 56655077970 oldest_pkt: 9 56654962465, 56654962465, 56654978465, 56655024835, 56655031038, 56655037096, 56655048206, 56655059305, 56655077970, 56654768325, 56654777150, 56654802008, 56654807677, 56654816481, 56654842497, 56654846996, 56654855809, 56654886875, 5665489136

Perdónenme si es algo estúpido... Ha sido un día largo, y como que me metí en esto...

Respuesta1

Puede incluir en la lista blanca cualquier cosa que desee escribiendo lo siguiente en la parte superior de la CADENA:

iptables -t mangle -A rate-limiter <rule to match whitelisted> -j RETURN

Los paquetes que coincidan con las redes incluidas en la lista blanca volverán POSTROUTINGsin modificaciones.

información relacionada