Mencionas iptables
, por lo que estás implicando a linux (al menos como un ejemplo para un sistema operativo con políticas de red ajustables).
Desde hace mucho tiempo, linux ha tenido un límite en el número de mensajes de error ICMP enviados. El valor predeterminado es muy bajo: 1 mensaje / s.
Este comportamiento de Linux se puede ajustar con los parámetros de red sysctl
: icmp_ratelimit sysctl
icmp_ratelimit - INTEGER
Limit the maximal rates for sending ICMP packets whose type matches
icmp_ratemask (see below) to specific targets.
0 to disable any limiting,
otherwise the minimal space between responses in milliseconds.
Default: 1000
Tenga en cuenta que, de forma predeterminada, icmp_ratelimit
solo se aplica a los mensajes de error de ICMP y la inactivación de origen, no todas las respuestas de ICMP:
icmp_ratemask - INTEGER
Mask made of ICMP types for which rates are being limited.
Significant bits: IHGFEDCBA9876543210
Default mask: 0000001100000011000 (6168)
Bit definitions (see include/linux/icmp.h):
0 Echo Reply
3 Destination Unreachable *
4 Source Quench *
5 Redirect
8 Echo Request
B Time Exceeded *
C Parameter Problem *
D Timestamp Request
E Timestamp Reply
F Info Request
G Info Reply
H Address Mask Request
I Address Mask Reply
* These are rate limited by default (see default mask above)
por lo que esta limitación de velocidad no se aplica a la respuesta de eco de forma predeterminada.
Con la configuración predeterminada, la DOSIFICACIÓN de un objetivo con mensajes de error de ICMP enviados por una caja de linux parece muy difícil.
Los (...) paquetes ICMP inalcanzables son muy pequeños
No, no siempre son pequeños: bajo linux, el mensaje de error de ICMP capturará todo el contexto posible del paquete que lo causó, hasta el 576 (o la MTU de destino) , para hacer posible la demultiplexión del mensaje de error incluso cuando se ha utilizado una encapsulación compleja en IP , siguiendo RFC 1812 :
4.3.2.3 Original Message Header
Historically, every ICMP error message has included the Internet
header and at least the first 8 data bytes of the datagram that
triggered the error. This is no longer adequate, due to the use of
IP-in-IP tunneling and other technologies. Therefore, the ICMP
datagram SHOULD contain as much of the original datagram as possible
without the length of the ICMP datagram exceeding 576 bytes.