Hai menzionato iptables
, quindi stai implicando linux (almeno come esempio per un sistema operativo con criteri di rete sintonizzabili).
Da molto tempo, linux ha avuto un limite al numero di messaggi di errore ICMP inviati. L'impostazione predefinita è molto bassa: 1 messaggio / i.
Questo comportamento di linux è sintonizzabile con i parametri di rete sysctl
: il 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
Nota che per impostazione predefinita icmp_ratelimit
si applica solo ai messaggi di errore ICMP e all'estinzione di origine, non a tutte le risposte 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)
quindi questa limitazione della velocità non si applica alla risposta echo per impostazione predefinita.
Con le impostazioni predefinite, DOSare una destinazione con i messaggi di errore ICMP inviati da una finestra Linux sembra molto difficile.
The (...) ICMP unreachable packets are very small
No, non sono sempre minuscole: sotto linux, il messaggio di errore ICMP catturerà il maggior numero possibile di contesto dal pacchetto che lo ha causato, fino al 576 (o MTU di destinazione) , per rendere possibile il demultiplex del messaggio di errore anche quando è stata utilizzata l'incapsulamento complesso in IP , seguendo 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.