Re: REJECT --reject-with icmp-host-unreachable vs DROP

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Brent Clark wrote:
Hi all

Just something I would like to pick someones brain with.

If I use the default policy of drop, BUT at the end of the chain use
the following

$IPT -t filter -A FORWARD -j REJECT --reject-with
icmp-host-unreachable

Would that be ok, or does is another ICMP message I can reply back
with.

icmp-host-unreachable is fine. The default for the REJECT target is
icmp-port-unreachable which is ok too. If you want to make
troubleshooting easier you may want to want to tailor the ICMP reply
according to the reason that a packet was blocked (ie. was a host
blocked, a network or a port). It doesn't matter too much though.

Do an "iptables -j REJECT --help" to see the available reject types.

Reason I ask this is because I find that by using the default policy
 (DROP), some applications keep retrying to make a connection etc.

Where as this approach, seems to slow things down (I stand to
correction on this).

Most applications/IP stacks will keep retrying for a while because with
a DROP there is no ICMP packet going back to let the sender know that
its traffic isn't getting through. The packet is just stopped without
letting the sender know. The sender assumes the packet was lost and
tries again until some sort of timeout is reached.

If you use REJECT an ICMP packet is sent back so that the sender know that its packet won't get through. This way it won't bother retrying and will give up immediately.

Note that this isn't always true. Some applications seem to ignore the ICMP reject packets coming back and will keep retrying anyway. The built-in command line Windows telnet application seems to do this. I'm not sure if this is a Windows thing or just the telnet program.

There are some situations where you should just use DROP instead of REJECT, usually for performance reasons where your netfilter machine has to deal with a high traffic volume and can't afford to send REJECTs. You might also want to use DROP when you get traffic that is almost definitely malicious. There's no point in sending a nice REJECT in this case.

If someone could maybe help me understand this or assit I would be
most grateful.

I hope I've explained it clearly enough.

Menno


[Index of Archives]     [Linux Netfilter Development]     [Linux Kernel Networking Development]     [Netem]     [Berkeley Packet Filter]     [Linux Kernel Development]     [Advanced Routing & Traffice Control]     [Bugtraq]

  Powered by Linux